Помогите разобраться с кодом
- Войдите на сайт для отправки комментариев
Вс, 18/06/2017 - 15:36
Не могу понять почему не работает на Протеусе. Вроде все правильно. Компилятор не ругает. Логика совпадает
int LedR = 1;
int LedG = 3;
int LedB = 5;
int Motor = 9;
int Button = 2;
int SigTime1 = 300;
int SigTime2 = 500;
int SigTime3 = 700;
int LowTime = 1000;
int flag = 0;
int regim = 0;
void setup()
{
pinMode(LedR, OUTPUT);
pinMode(LedG, OUTPUT);
pinMode(LedB, OUTPUT);
pinMode(Motor, OUTPUT);
}
void loop()
{
if(digitalRead(Button) == HIGH && flag == 0)
{
regim ++;
flag = 1;
if(regim > 4)
{
regim = 0;
}
}
if(digitalRead(Button) == LOW && flag == 1)
{
flag = 0;
}
if(regim == 0)
{
digitalWrite(LedR, LOW);
digitalWrite(LedG, LOW);
digitalWrite(LedB, LOW);
digitalWrite(Motor, LOW);
}
if(regim == 1)
{
digitalWrite(LedR, HIGH);
digitalWrite(Motor, HIGH);
delay(SigTime1);
digitalWrite(Motor, LOW);
digitalWrite(LedR, LOW);
}
if(regim == 2)
{
digitalWrite(LedG, HIGH);
digitalWrite(Motor, HIGH);
delay(SigTime2);
digitalWrite(Motor, LOW);
digitalWrite(LedG, LOW);
}
if(regim == 3)
{
digitalWrite(LedB, HIGH);
digitalWrite(Motor, HIGH);
delay(SigTime3);
digitalWrite(Motor, LOW);
digitalWrite(LedB, LOW);
}
}
Логика совпадает
С чем?
Вы реально думаете, что все знают что именно Вы хотели сделать, чего Вы ожидаете от этого кода и что Вас в нём не устраивает?
грабли
if(regim > 4) { regim = 0; }Не могу понять почему не работает на Протеусе.
как именно не работает?
опрос кнопки без задержки
я не уверн, но
pinMode(Button, INPUT);опрос кнопки без задержки
я не уверн, но
pinMode(Button, INPUT);#403 #409
Просто уточняю: при regim=4 ничего не делаем, пустой прогон и при новом loop если digitalRead(Button)=1: regim ++?
UPD. Наверное DIVGENY в #2 обращал внимание на тоже самое.