Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

тактовые кнопки в Arduino

* Профи (784), закрыт 7 лет назад
здравствуйте, начинаю осваивать ардуино. подскажите что не так в скетче. одна кнопка включает и выключает первый светодиод по однократному нажатию. а вторая кнопка никак не воздействует на второй светодиод. задача в том что бы тактовые кнопки включали и выключали каждая свой светодиод.

int switchPin = 11;
int ledPin = 12;
int switchPin1 = 8;
int ledPin1 = 9;

boolean lastButton = LOW;
boolean ledOn = false;
boolean currentButton = LOW;

void setup()
{
pinMode(switchPin, INPUT);
pinMode(ledPin, OUTPUT);
pinMode(switchPin1, INPUT);
pinMode(ledPin1, OUTPUT);
}

boolean debounce(boolean last)

{
boolean current = digitalRead(switchPin), (switchPin1);
if (last != current)
{
delay(5);
current = digitalRead(switchPin), (switchPin1);
}
return current;

}

void loop()

{
currentButton = debounce(lastButton);
if (lastButton == LOW && currentButton == HIGH)
{
ledOn = !ledOn;
}
lastButton = currentButton;
digitalWrite(ledPin, ledOn), (ledPin1, ledOn);
}
Лучший ответ
Константин Голинский Ученик (202) 7 лет назад
int switchPin1 = 11;
int ledPin1 = 12;
int switchPin2 = 8;
int ledPin2 = 9;

boolean lastButton1 = LOW;
boolean ledOn1 = false;
boolean currentButton1 = LOW;

boolean lastButton2 = LOW;
boolean ledOn2 = false;
boolean currentButton2 = LOW;

//----------------------------------------

void setup()
{
pinMode(switchPin1, INPUT);
pinMode(ledPin1, OUTPUT);
pinMode(switchPin2, INPUT);
pinMode(ledPin2, OUTPUT);
}

//----------------------------------------

boolean debounce(boolean last, int switchP)

{
boolean current = digitalRead(switchP);
if (last != current)
{
delay(5);
current = digitalRead(switchP);
}
return current;
}

//--------------------------------------------

void loop()

{
currentButton1 = debounce(lastButton1, switchPin1);
currentButton2 = debounce(lastButton2, switchPin2);

if (lastButton1 == LOW && currentButton1 == HIGH) ledOn1 = !ledOn1;
if (lastButton2 == LOW && currentButton2 == HIGH) ledOn2 = !ledOn2;

lastButton1 = currentButton1;
lastButton2 = currentButton2;
digitalWrite(ledPin1, ledOn1);
digitalWrite(ledPin2, ledOn2);
}
Борис СмирновУченик (104) 2 года назад
Спасибо. И мне помогло.
Остальные ответы
Ev Высший разум (118676) 7 лет назад
У вас светодиоды подключены к портам без
токоограничительных резисторов. Это не допустимо!
Хотя... Может у вас цель их просто сжечь по нажатию кнопки?
*Профи (784) 7 лет назад
я пока что тестирую на пк в программе autodesk circuits. про резисторы в курсе. меня интересует почему не загорается второй светодиод. можете подсказать что не так в скетче??
Ev Высший разум (118676) Не пишу на Wiring. Вместо скетчей предпочитаю писать программы для Ардуино и контроллеров AVR в среде BASCOM-AVR. Программа триггера (кнопки-переключателя) выглядит примерно так:
Assafriend Мудрец (19025) 7 лет назад
это какой язык допускает такое?
digitalWrite(ledPin, ledOn), (ledPin1, ledOn);
разнесите на 2 вызова -
digitalWrite(ledPin, ledOn);
digitalWrite(ledPin1, ledOn);
*Профи (784) 7 лет назад
да я разносил, и так и сяк. дело то не в этом оказалось. не включает вторая кнопка светодиод и все тут (
Похожие вопросы