const int red = 4;//Пин выхода кр светодиода
const int green = 5;//Пин выхода зеленого светодиода
const int yellow = 6;//Пин выхода желтого светодиода
const int buttonPinGreen = 2;//Пин входа зеленой кнопки
const int buttonPinRed = 3;//Пин входа красной кнопки
unsigned long worktime = 30; //120000; базовое время работы
unsigned long resttime = 15; //30000; базовое время отдыха
int GreenbuttonState=0;//Состояние зеленой кнопки
int RedbuttonState=0;//Состояние красной кнопки
int GreenShine=0;//Состояние зеленой лампы 0-не работает, 1-работает
int RedShine=0;//Состояние красной лампы 0-не работает, 1-работает
int YellowShine=0;//Состояние желтой лампы 0-не работает, 1-работает
int CycleExit=0;//переменная-флаг выхода из цикла
const int workchange=5;//30000 изменение времени работы
const int restchange = 1;//1500 изменение времени отдыха
const int timer=4;//Частота больших перерывов
const unsigned long Bigresttime=90000;//Большой перерыв после 4-х итераций
int i=0;//Счетчик итераций
void setup() {
// put your setup code here, to run once:
pinMode(green, OUTPUT);
// pinMode(red, OUTPUT);
pinMode(yellow, OUTPUT);
// инициализируем пин, подключенный к кнопке, как вход
pinMode(buttonPinGreen, INPUT);
pinMode(buttonPinRed, INPUT);
// определяем пин как вход вход с резистором
}
void loop() {
/* //***********************Зеленая лампочка**************
if (GreenShine==0&&digitalRead(green)==LOW)//НАчало загорается зеленая лампочка
{
GreenbuttonState = digitalRead(buttonPinGreen);
delay(500);
if ( GreenbuttonState==HIGH)
{
GreenShine++;
delay(500);
digitalWrite(green,HIGH);
delay(100);
delay(500);
GreenShine=0;
}
delay(500);
digitalWrite(green,LOW);
delay(500);
}//Конец загорается зеленая лампочка
//*********************Красная лампочка**********************
if (RedShine==0&&digitalRead(red)==LOW)//НАчало загорается красная лампочка
{
RedbuttonState = digitalRead(buttonPinRed);
delay(500);
if ( RedbuttonState==HIGH)
{
RedShine++;
delay(500);
digitalWrite(red,HIGH);
delay(100);
delay(500);
RedShine=0;
}
delay(500);
digitalWrite(red,LOW);
delay(500);
}//Конец загорается красная лампочка
*/
//************************Ожидание начала программы
while (CycleExit==0) //Ожидание начала выполнения
{
digitalWrite(yellow, HIGH);
digitalWrite(yellow, LOW);
if (CycleExit==0)
{
GreenbuttonState = digitalRead(buttonPinGreen);
if(GreenbuttonState==HIGH)
{
CycleExit++;
}
}//Конец проверки флага цикла
}//выход из цикла
CycleExit=0;//конец ожидания начала выполнения
//**************************************Время работы
delay(worktime); //Задержка на время работы
//**************************************Ожидание оценки работы и оценка работы
while (CycleExit==0) //Ожидание оценки работы
{
digitalWrite(yellow, HIGH);
digitalWrite(yellow, LOW);
if (CycleExit==0)
{
//***********************Зеленая лампочка**************Удовлетворительная работа
if (GreenShine==0&&digitalRead(green)==LOW)//НАчало загорается зеленая лампочка
{
GreenbuttonState = digitalRead(buttonPinGreen);
delay(500);
if ( GreenbuttonState==HIGH)
{
GreenShine++;
delay(500);
digitalWrite(green,HIGH);
delay(100);
delay(500);
GreenShine=0;
}
delay(500);
digitalWrite(green,LOW);
CycleExit++;
worktime=worktime+workchange;
delay(500);
}//Конец загорается зеленая лампочка
//Завершение положительной оценки работы
//*********************Красная лампочка**********************//неудовлетворительная работа
if (RedShine==0&&digitalRead(red)==LOW)//НАчало загорается красная лампочка
{
RedbuttonState = digitalRead(buttonPinRed);
delay(500);
if ( RedbuttonState==HIGH)
{
RedShine++;
delay(500);
digitalWrite(red,HIGH);
delay(100);
delay(500);
RedShine=0;
}
delay(500);
digitalWrite(red,LOW);
CycleExit++;
worktime=worktime-workchange;
if(worktime<=0)
{
digitalWrite(red,HIGH);
digitalWrite(yellow,HIGH);
digitalWrite(green,HIGH);
}
delay(500);
}//Конец загорается красная лампочка
}//Конец проверки на выход из цикла
}//выход из цикла
//*******************************Конец оценки работы
CycleExit=0;
delay(resttime);
i++;
if (i!=4)//ЕСли пора большой перерыв
{
digitalWrite(red,HIGH);
digitalWrite(green,HIGH);
delay(Bigresttime);
digitalWrite(red,LOW);
digitalWrite(green,LOW);
delay(500);
}//Конец большого перерыва
else{
delay(resttime);
//**************************************Ожидание оценки отдыха и оценка отдыха
while (CycleExit==0) //Ожидание оценки отдыха
{
digitalWrite(yellow, HIGH);
digitalWrite(yellow, LOW);
if (CycleExit==0)
{
//***********************Зеленая лампочка**************Удовлетворительный отдых
if (GreenShine==0&&digitalRead(green)==LOW)//НАчало загорается зеленая лампочка
{
GreenbuttonState = digitalRead(buttonPinGreen);
delay(500);
if ( GreenbuttonState==HIGH)
{
GreenShine++;
delay(500);
digitalWrite(green,HIGH);
delay(100);
delay(500);
GreenShine=0;
}
delay(500);
digitalWrite(green,LOW);
CycleExit++;
resttime=resttime-restchange;
if (resttime<0)
{
resttime=0;
}
delay(500);
}//Конец загорается зеленая лампочка
//Завершение положительной оценки работы
//*********************Красная лампочка**********************//неудовлетворительный отдых
if (RedShine==0&&digitalRead(red)==LOW)//НАчало загорается красная лампочка
{
RedbuttonState = digitalRead(buttonPinRed);
delay(500);
if ( RedbuttonState==HIGH)
{
RedShine++;
delay(500);
digitalWrite(red,HIGH);
delay(100);
delay(500);
RedShine=0;
}
delay(500);
digitalWrite(red,LOW);
CycleExit++;
resttime=resttime+restchange;
if(resttime>=worktime)
{
digitalWrite(red,HIGH);
digitalWrite(yellow,HIGH);
digitalWrite(green,HIGH);
}
delay(500);
}//Конец загорается красная лампочка
}//Конец проверки флага выхода
}//Выход из цикла
//*******************************Конец оценки отдыха
}
}