Нажатие кнопки светодиода для определенного светодиода В светодиодном шаблоне, не работающем в Arduino
что я ожидаю, как показано ниже.
Если я нажму кнопку шаблона один. затем один образец работает. Если я не нажму какую-либо конкретную светодиодную кнопку, такую как «LED_Button_two», «LED_Button_one» и т.д.. затем схема работает непрерывно. Если я нажму конкретную светодиодную кнопку между 3-секундным интервалом, то этот конкретный светодиод выключится. и загорится следующий светодиод в шаблоне
Это моя проблема.
Здесь мой скетч не дал никакого эффекта, когда я нажимаю кнопку типа "LED_Button_two" когда светодиод два включается по шаблону. Он не выключается, когда я нажимаю кнопку "LED_Button_two". или то же самое происходит с другими, такими как "LED_Button_one", "LED_Button_three" и "LED_Button_four".
Вот мой код
const int Button_pattern_1 = 2;
const int Button_pattern_2 = 3;
const int Button_pattern_stop = 4;
const int LED_Button_one = 5;
const int LED_one = 12;
const int LED_Button_two = 6;
const int LED_two = 11;
const int LED_Button_three = 7;
const int LED_three = 10;
const int LED_Button_four = 8;
const int LED_four = 9;
int buttonState_pattern_1 = 0;
int buttonState_pattern_2 = 0;
int buttonState_pattern_stop = 0;
int buttonState_LED_one = 0;
int buttonState_LED_two = 0;
int buttonState_LED_three = 0;
int buttonState_LED_four = 0;
const long Interval = 3000;
byte state = 0;
char ledState_pattern_one = 'A', ledState_pattern_two = 'A';
unsigned long previousMillis_pattern_one = 0, previousMillis_pattern_two = 0;
const long interval = 3000;
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
pinMode(Button_pattern_1, INPUT);
pinMode(Button_pattern_2, INPUT);
pinMode(Button_pattern_stop, INPUT);
pinMode(LED_Button_one, INPUT);
pinMode(LED_Button_two, INPUT);
pinMode(LED_Button_three, INPUT);
pinMode(LED_Button_four, INPUT);
pinMode(LED_one, OUTPUT);
pinMode(LED_two, OUTPUT);
pinMode(LED_three, OUTPUT);
pinMode(LED_four, OUTPUT);
}
void loop() {
// put your main code here, to run repeatedly:
unsigned long currentMillis = millis();
buttonState_pattern_1 = digitalRead(Button_pattern_1);
// Serial.println(buttonState_pattern_1);
buttonState_pattern_2 = digitalRead(Button_pattern_2);
// Serial.println(buttonState_pattern_2);
buttonState_pattern_stop = digitalRead(Button_pattern_stop);
// Serial.println(buttonState_pattern_stop);
buttonRun();
switch (state)
{
case 'a':
// Serial.println("Pattern one running");
pattern_one(currentMillis);
break;
case 'b':
// Serial.println("Pattern two running");
pattern_two(currentMillis);
break;
}
// Serial.println(digitalRead(LED_Button_one));
// Serial.println(digitalRead(LED_Button_two));
// Serial.println(digitalRead(LED_Button_three));
// Serial.println(digitalRead(LED_Button_four));
// Serial.println("new");
}
void buttonRun()
{
if (digitalRead(Button_pattern_1) == HIGH)
{
state = 'a';
}
if (digitalRead(Button_pattern_2) == HIGH)
{
state = 'b';
}
if (digitalRead(Button_pattern_stop) == HIGH)
{
Serial.println("Pattern stop");
patternStop();
state = 0;
}
}
void pattern_one(unsigned long currentMillis_pattern)
{
if (currentMillis_pattern - previousMillis_pattern_one >= interval)
{
previousMillis_pattern_one = currentMillis_pattern;
if (ledState_pattern_one == 'A')
{
ledState_pattern_one = 'B';
buttonState_LED_two = digitalRead(LED_Button_two);
if (buttonState_LED_two == LOW) //Here I have used pull-up resistor that's why i have checked with 1.
{
Serial.print("two");
// Serial.println(digitalRead(LED_Button_two));
digitalWrite(LED_one, LOW);
digitalWrite(LED_two, LOW);
digitalWrite(LED_three, LOW);
digitalWrite(LED_four, LOW);
}
else
{
Serial.println("button two press");
digitalWrite(LED_one, LOW);
digitalWrite(LED_two, HIGH);
digitalWrite(LED_three, LOW);
digitalWrite(LED_four, LOW);
}
}
else if (ledState_pattern_one == 'B')
{
ledState_pattern_one = 'C';
buttonState_LED_four = digitalRead(LED_Button_four);
if (buttonState_LED_four == LOW) //Here I have used pull-up resistor that's why i have checked with 1.
{
Serial.print("four");
// Serial.println(digitalRead(LED_Button_four));
digitalWrite(LED_one, LOW);
digitalWrite(LED_two, LOW);
digitalWrite(LED_three, LOW);
digitalWrite(LED_four, LOW);
}
else
{
Serial.println("button four press");
digitalWrite(LED_one, LOW);
digitalWrite(LED_two, LOW);
digitalWrite(LED_three, LOW);
digitalWrite(LED_four, HIGH);
}
}
else if (ledState_pattern_one == 'C')
{
ledState_pattern_one = 'D';
buttonState_LED_one = digitalRead(LED_Button_one);
if (buttonState_LED_one == LOW) //Here I have used pull-up resistor that's why i have checked with 1.
{
Serial.print("one");
// Serial.println(digitalRead(LED_Button_one));
digitalWrite(LED_one, LOW);
digitalWrite(LED_two, LOW);
digitalWrite(LED_three, LOW);
digitalWrite(LED_four, LOW);
}
else
{
Serial.println("button one press");
digitalWrite(LED_one, HIGH);
digitalWrite(LED_two, LOW);
digitalWrite(LED_three, LOW);
digitalWrite(LED_four, LOW);
}
}
else if (ledState_pattern_one == 'D')
{
ledState_pattern_one = 'A';
buttonState_LED_three = digitalRead(LED_Button_three);
if (buttonState_LED_three == LOW) //Here I have used pull-up resistor that's why i have checked with 1.
{
Serial.print("three");
// Serial.println(digitalRead(LED_Button_three));
digitalWrite(LED_one, LOW);
digitalWrite(LED_two, LOW);
digitalWrite(LED_three, LOW);
digitalWrite(LED_four, LOW);
}
else
{
Serial.println("button three press");
digitalWrite(LED_one, LOW);
digitalWrite(LED_two, LOW);
digitalWrite(LED_three, HIGH);
digitalWrite(LED_four, LOW);
}
}
}
}
void pattern_two(unsigned long currentMillis_pattern)
{
if (currentMillis_pattern - previousMillis_pattern_two >= interval)
{
previousMillis_pattern_two = currentMillis_pattern;
if (ledState_pattern_two == 'A')
{
ledState_pattern_two = 'B';
buttonState_LED_one = digitalRead(LED_Button_one);
if (buttonState_LED_one != LOW) //Here I have used pull-up resistor that's why i have checked with 1.
{
// Serial.print("one");
// Serial.println(digitalRead(LED_Button_one));
digitalWrite(LED_one, HIGH);
digitalWrite(LED_two, LOW);
digitalWrite(LED_three, LOW);
digitalWrite(LED_four, LOW);
}
else
{
Serial.println("button one press");
digitalWrite(LED_one, LOW);
digitalWrite(LED_two, LOW);
digitalWrite(LED_three, LOW);
digitalWrite(LED_four, LOW);
}
}
else if (ledState_pattern_two == 'B')
{
ledState_pattern_two = 'C';
buttonState_LED_three = digitalRead(LED_Button_three);
if (buttonState_LED_three != LOW) //Here I have used pull-up resistor that's why i have checked with 1.
{
// Serial.print("three");
// Serial.println(digitalRead(LED_Button_three));
digitalWrite(LED_one, LOW);
digitalWrite(LED_two, LOW);
digitalWrite(LED_three, HIGH);
digitalWrite(LED_four, LOW);
}
else
{
Serial.println("button three press");
digitalWrite(LED_one, LOW);
digitalWrite(LED_two, LOW);
digitalWrite(LED_three, LOW);
digitalWrite(LED_four, LOW);
}
}
else if (ledState_pattern_two == 'C')
{
ledState_pattern_two = 'D';
buttonState_LED_two = digitalRead(LED_Button_two);
if (buttonState_LED_two != LOW) //Here I have used pull-up resistor that's why i have checked with 1.
{
// Serial.print("two");
// Serial.println(digitalRead(LED_Button_two));
digitalWrite(LED_one, LOW);
digitalWrite(LED_two, HIGH);
digitalWrite(LED_three, LOW);
digitalWrite(LED_four, LOW);
}
else
{
Serial.println("button two press");
digitalWrite(LED_one, LOW);
digitalWrite(LED_two, LOW);
digitalWrite(LED_three, LOW);
digitalWrite(LED_four, LOW);
}
}
else if (ledState_pattern_two == 'D')
{
ledState_pattern_two = 'A';
buttonState_LED_four = digitalRead(LED_Button_four);
if (buttonState_LED_four != LOW) //Here I have used pull-up resistor that's why i have checked with 1.
{
// Serial.print("four");
// Serial.println(digitalRead(LED_Button_four));
digitalWrite(LED_one, LOW);
digitalWrite(LED_two, LOW);
digitalWrite(LED_three, LOW);
digitalWrite(LED_four, HIGH);
}
else
{
Serial.println("button four press");
digitalWrite(LED_one, LOW);
digitalWrite(LED_two, LOW);
digitalWrite(LED_three, LOW);
digitalWrite(LED_four, LOW);
}
}
}
}
void patternStop()
{
digitalWrite(LED_one, LOW);
digitalWrite(LED_two, LOW);
digitalWrite(LED_three, LOW);
digitalWrite(LED_four, LOW);
state = 0;
}
@coder, 👍-1
Обсуждение1 ответ
Отличная работа над схемой! У меня есть частичный ответ и предложение для вас. Схема в том виде, в каком вы ее нарисовали, будет работать правильно, теперь программное обеспечение должно управлять ею.
На боковых схемах обычно располагаются слева направо и сверху вниз. т.е. Входы слева и выходы справа, + вверху. Мы все знаем, что это невозможно, и вы должны сделать некоторые исключения, особенно для микропроцессоров, так как они таким образом не распиновываются. Единственное, что еще нужно сделать, это, возможно, отметить, что питание подается через USB, который, как я предполагаю, находится в этой цепи.
Да, проблема в софте для управления им. А вы говорите, что проблема с питанием. но тут дело не в мощности., @coder
«Схема, которую вы нарисовали, будет работать правильно» ... вы забываете о токоограничивающих резисторах светодиода., @jsotola
- Остановить мигание светодиодов
- Интеграция 2 кнопок для включения и выключения светодиода.
- Код Arduino для управления 4 светодиодами с 4 кнопок
- Нужен ли подтягивающий/понижающий резистор для цепи светодиода кнопки?
- Светодиод с кнопочным управлением Arduino со сборкой AVR
- Как повторить другое действие внутри цикла?
- Изменение состояния светодиода с помощью кнопки приводит к нестабильному результату
- Кнопка переключения переключает между операторами обращения с разблокированием кнопки
какой у вас конкретный вопрос?, @jsotola
На схеме показано отсутствие последовательных резисторов на светодиодах. Почему бы и нет?, @VE7JRO
Есть ли шанс использовать
INPUT_PULLUP
, чтобы вы могли исключить эти внешние резисторы?, @VE7JROДумали ли вы об использовании библиотеки Bounce2 для устранения дребезга кнопок?, @VE7JRO
@jsotola Это и мой вопрос, и проблема -> «Здесь мой скетч не дал никакого эффекта, когда я нажимаю кнопку, например «LED_Button_two», когда светодиод номер два включается по шаблону. Он не может выключаться, когда я нажимаю кнопку «LED_Button_two» ... или то же самое происходит с другими, такими как "LED_Button_one", "LED_Button_three" и "LED_Button_four".", @coder
@VE7JRO Я не знаю о библиотеке Bounce2. в чем тут проблема не могу понять. Я застрял здесь с прошлых нескольких дней. пожалуйста помоги., @coder