Помочь в написании, подтолкнуть на мысль

Alekseiii
Offline
Зарегистрирован: 25.04.2021
Нужно сделать так , что, если все три кнопки не нажаты горит красный светодиод. Нажимаю вторую кнопку должен гореть только желтый. Все остальные комбинации - горит зеленый. (Используя приложенный скетч)
int switchPin1 = 8;
int switchPin2 = 7;
int switchPin3 = 6;

int ledPin1 = 13;
int ledPin2 = 12;
int ledPin3 = 11;

boolean lastButton1 = LOW;
boolean lastButton2 = LOW;
boolean lastButton3 = LOW;

boolean currentButton1 = LOW;
boolean currentButton2= LOW;
boolean currentButton3 = LOW;

boolean ledOn1 = false;
boolean ledOn2 = false;
boolean ledOn3 = false;

void setup() 
{
  pinMode(switchPin1, INPUT);
  pinMode(switchPin2, INPUT);
  pinMode(switchPin3, INPUT);
  pinMode(ledPin1, OUTPUT);
  pinMode(ledPin2, OUTPUT);
  pinMode(ledPin3, OUTPUT);
}
boolean debounce1 (boolean last)
{
  boolean current1 = digitalRead(switchPin1);
  if (last != current1)
  {
    delay(5);
    current1 = digitalRead(switchPin1);
  }
  return current1;
}
boolean debounce2 (boolean last2)
{
  boolean current2 = digitalRead(switchPin2);
  if (last2 != current2)
  {
    delay(5);
    current2 = digitalRead(switchPin2);
  }
  return current2;
}
boolean debounce3 (boolean last3)
{
  boolean current3 = digitalRead(switchPin3);
  if (last3 != current3)
  {
    delay(5);
    current3 = digitalRead(switchPin3);
  }
  return current3;
}

void loop() 
{
  currentButton1 = debounce1(lastButton1);
  currentButton2 = debounce2(lastButton2);
  currentButton3 = debounce3(lastButton3);
if (lastButton1 == LOW && currentButton1 == HIGH)
 {
  ledOn1 = !ledOn1;
 }
 lastButton1 = currentButton1;

if (lastButton2 == LOW && currentButton2 == HIGH)
 {
  ledOn2 = !ledOn2;
 }
lastButton2 = currentButton2;
if (lastButton3 == LOW && currentButton3 == HIGH)
 {
  ledOn3 = !ledOn3;
 }
   lastButton3 = currentButton3;

  digitalWrite(ledPin1, ledOn1);


  digitalWrite(ledPin2, ledOn2);


  digitalWrite(ledPin3, ledOn3);

}

 

v258
v258 аватар
Offline
Зарегистрирован: 25.05.2020
если ((первая кнопка не нажата) и (вторая кнопка не нажата) и (третья кнопка не нажата))
  {включить красный, остальные выключить}
иначе если ((вторая кнопка нажата) и (первая кнопка не нажата) и (третья кнопка не нажата)) 
  {включить желтый, остальные выключить}
иначе 
  {включить зеленый, остальные выключить}

 

b707
Offline
Зарегистрирован: 26.05.2017

Откуда они все тащят эту функцию дебонсе? У Гайвера подглядели?

v258
v258 аватар
Offline
Зарегистрирован: 25.05.2020

b707 пишет:
Откуда они все тащят эту функцию дебонсе? У Гайвера подглядели?

Да ею весь гугл пестрит

Alekseiii
Offline
Зарегистрирован: 25.04.2021

Спасибо большое за ответ, но как реализовать это в рамках данной программы, куда вставлять ( понятно что в цикл loop)? Я просто второй день всего за ардуино и совсем не силен. P.S. дебанус у джереми блюма подсмотрел 

Kakmyc
Offline
Зарегистрирован: 15.01.2018
Alekseiii
Offline
Зарегистрирован: 25.04.2021

Дешевле и проще не разобраться )

Kakmyc
Offline
Зарегистрирован: 15.01.2018

Alekseiii пишет:

Дешевле и проще не разобраться )

Самостоятельно вообще бесплатно

v258
v258 аватар
Offline
Зарегистрирован: 25.05.2020

Alekseiii пишет:

Спасибо большое за ответ, но как реализовать это в рамках данной программы, куда вставлять ( понятно что в цикл loop)? Я просто второй день всего за ардуино и совсем не силен. P.S. дебанус у джереми блюма подсмотрел 

Была просьба подтолкнуть - я подтолкнул ))

Бармалей
Бармалей аватар
Offline
Зарегистрирован: 23.09.2019

Alekseiii пишет:

Дешевле и проще не разобраться )

Могу помочь. И доплачу. 

brokly
brokly аватар
Offline
Зарегистрирован: 08.02.2014

Бармалей -толкач :)))

Alekseiii
Offline
Зарегистрирован: 25.04.2021

Помощь это дело бравое

andyparker
Offline
Зарегистрирован: 20.12.2020