Простая проблема, а решить не могу (чайник)

Zona_Kem
Offline
Зарегистрирован: 27.10.2019

Помогите разобраться.

Есть устройство, 5 кнопок, 5 светодиодов

При включении питания горит светодиод 2, при нажатии кнопок 1,3,4,5 загорается соотв. светодиод. Кнопка 2 сбрасывает любую включенную кнопку и загорается светодиод 2. Набросал скетч, но при эмуляции светодиод 2 загорается и тут же тухнет, всё остальное работает нормально. Что я делаю не так???

 

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

вставили код не по правилам форума )))

Zona_Kem
Offline
Зарегистрирован: 27.10.2019

Пардон.

int buttonPin = 2;
int buttonPin2 = 3;
int buttonPin3 = 4;
int buttonPin4 = 5;
int buttonPin5 = 6;
int ledPin1 = 9;
int ledPin2 = 10;
int ledPin3 = 11;
int ledPin4 = 12;
int ledPin5 = 13;
int buttonState = 0;
int buttonState2 = 0;
int buttonState3 = 0;
int buttonState4 = 0;
int buttonState5 = 0;
 int ledState2 = 1;

void setup()
{
  pinMode(ledPin1, OUTPUT);
  pinMode(ledPin2, OUTPUT);
  pinMode(ledPin3, OUTPUT);
  pinMode(ledPin4, OUTPUT);
  pinMode(ledPin5, OUTPUT);
  pinMode(buttonPin, INPUT);
  pinMode(buttonPin2, INPUT);
  pinMode(buttonPin3, INPUT);
  pinMode(buttonPin4, INPUT);
  pinMode(buttonPin5, INPUT);
  digitalWrite(ledPin2, HIGH); 
}

void loop()
{
 
 buttonState = digitalRead(buttonPin);
 buttonState2 = digitalRead(buttonPin2);
 buttonState3 = digitalRead(buttonPin3);
 buttonState4 = digitalRead(buttonPin4);
 buttonState5 = digitalRead(buttonPin5);
 if (buttonState == HIGH)
 { digitalWrite(ledPin1, HIGH);}
 { digitalWrite(ledPin2, LOW);}
 if (buttonState2 == HIGH)
 { digitalWrite(ledPin1, LOW);} 
   if (buttonState3 == HIGH)
 { digitalWrite(ledPin3, HIGH);}
 if (buttonState2 == HIGH)
 { digitalWrite(ledPin3, LOW);
 digitalWrite(ledPin2, HIGH);}
   if (buttonState4 == HIGH)
 { digitalWrite(ledPin4, HIGH);}
 if (buttonState2 == HIGH)
 { digitalWrite(ledPin4, LOW);}
   if (buttonState5 == HIGH)
 { digitalWrite(ledPin5, HIGH);}
 if (buttonState2 == HIGH)
 { digitalWrite(ledPin5, LOW);}
}

 

JasKo
Offline
Зарегистрирован: 21.11.2015

Проблема в if-ах, читайте мат.часть.

Zona_Kem
Offline
Зарегистрирован: 27.10.2019

Читал! Раз 8! Не помогло (((

Самое обидное, что схема 2 кнопки, 2 светодиода работает нормально.

int buttonPin = 2;
int buttonPin2 = 3;
int ledPin = 11;
int ledPin1 = 10;
int buttonState = 0;
int buttonState2 = 0;
 int ledState1 = 1;




void setup()
{
  pinMode(ledPin, OUTPUT);
  pinMode(buttonPin, INPUT);
 digitalWrite(ledPin1, HIGH); 
}

void loop()
{
 buttonState = digitalRead(buttonPin);
 buttonState2 = digitalRead(buttonPin2);
 if (buttonState == HIGH)
 { digitalWrite(ledPin, HIGH);
 digitalWrite(ledPin1, LOW);}
 if (buttonState2 == HIGH)
 { digitalWrite(ledPin, LOW);
 digitalWrite(ledPin1, HIGH);}                           
 }

 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Скажите, чтоу Вас делается в строках №№41-43 ? Нормальными словами расскажите.

Zona_Kem
Offline
Зарегистрирован: 27.10.2019

ЕвгенийП пишет:

Скажите, чтоу Вас делается в строках №№41-43 ? Нормальными словами расскажите.

Если нажата кнопка 1 (она без номера), то загорается светодиод 1 а светодиод 2 гаснет.

(или я неправ???)

Zona_Kem
Offline
Зарегистрирован: 27.10.2019

Убрал строку 43, теперь светодиод 2 горит постоянно и не гаснет ((

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

Zona_Kem пишет:
Самое обидное, что схема 2 кнопки, 2 светодиода работает нормально.

самое обидное что даже если решение вам дадут, все равно не поймете. Может так намек будет понятен.

/**/
const byte button1Pin = 2;
const byte button2Pin  = 3;
const byte led1Pin = 11;
const byte led2Pin = 10;
bool led1State, led2State;
//-------------------------------
void setup() {
  pinMode(led1Pin, OUTPUT);
  pinMode(led2Pin, OUTPUT);
  pinMode(button1Pin, INPUT_PULLUP);
  pinMode(button2Pin, INPUT_PULLUP);
}
void loop() {
  led1State = digitalRead(button1Pin);
  led2State = digitalRead(button2Pin);
  digitalWrite(led1Pin, led1State);
  digitalWrite(led2Pin, led2State);
}

ПС: Тема должна быть в песочнице.

SLKH
Offline
Зарегистрирован: 17.08.2015

1. Где схема подключения кнопок?

2. "Кнопка 2 сбрасывает любую включенную кнопку " - в каких строках программы из #2 это делается?

Zona_Kem
Offline
Зарегистрирован: 27.10.2019

qwone пишет:

Zona_Kem пишет:
Самое обидное, что схема 2 кнопки, 2 светодиода работает нормально.

самое обидное что даже если решение вам дадут, все равно не поймете. Может так намек будет понятен.

/**/
const byte button1Pin = 2;
const byte button2Pin  = 3;
const byte led1Pin = 11;
const byte led2Pin = 10;
bool led1State, led2State;
//-------------------------------
void setup() {
  pinMode(led1Pin, OUTPUT);
  pinMode(led2Pin, OUTPUT);
  pinMode(button1Pin, INPUT_PULLUP);
  pinMode(button2Pin, INPUT_PULLUP);
}
void loop() {
  led1State = digitalRead(button1Pin);
  led2State = digitalRead(button2Pin);
  digitalWrite(led1Pin, led1State);
  digitalWrite(led2Pin, led2State);
}

 

Оппачки, появилась новая команда bool. Нууу, хоть что-то!

BOOM
BOOM аватар
Offline
Зарегистрирован: 14.11.2018

Мда, рановато на 5 светодиодов замахнулись. Надо бы с глубокого изучения книг по С++ для чайников начать. А то элементарно не знаете что такое оператор, тип данных и так далее. 

Zona_Kem
Offline
Зарегистрирован: 27.10.2019

Всем спасибо, проблема решена, просто нужно было причесать программу.

bwn
Offline
Зарегистрирован: 25.08.2014

Ну все, писец мелкомягким.))))

А рекомендацией Пуха, воспользуюсь.