Сделать поворот светодиода

//Сделать так, чтобы светодиод включился после пятикратного нажатия на кнопочный выключатель. Добавьте переключатель сброса чтобы выключить светодиод всякий раз когда он будет нажат

**void setup()

{
  
  pinMode(11, OUTPUT);

  pinMode (4,INPUT);

}

void loop()

{

  int y= digitalRead(6); // push кнопка 2

  static int counter {} ; 

  int x= digitalRead(4);// push кнопка 1 

  if (x==1&& y==0 )
   
    counter++;

else if (counter == 5) // If counter is pressed 5 times

{

  digitalWrite(11, HIGH); // Turn on the LED

}

if (counter >= 5) // If counter is greater than 5 led will still on

{

  digitalWrite (11, 1);

 
}

  else if 

  
   (y==1&& x==0 ) // if pressed push button 2  led of 
  {

    digitalWrite(11,0);

  
}

  counter = 0; // Make counter variable = 0

}

, 👍1

Обсуждение

Это школьное задание? Что вы пробовали до сих пор? Где именно ваша проблема в реализации этого? Вы посмотрели некоторые из многочисленных учебных пособий в Интернете, которые учат, как мигать светодиодом и как читать кнопки? Кстати: Для чтения кнопок я могу предложить библиотеку Bounce2, которая действительно полезна, @chrisl

моя проблема я не знаю, как сделать светодиод после нажатия кнопок пять раз, @Ibraheem Mohammed Saleh

Не забудьте использовать либо подтягивающий резистор, либо "INPUT_PULLUP` в разделе "настройка"., @Python Schlange


1 ответ


Лучший ответ:

4

Вы можете попробовать внедрить систему счетчиков в свою программу Arduino.

Например, если это ваша функция loop ():

void loop(){
int buttonState = digitalRead(1); //Дайте переменной buttonState значение pin 1, или независимо от того, что ваша кнопка подключена
static int counter{}; // Имейте переменную счетчика. Статический означает, что он не сбрасывается на 0 после перезапуска функции loop() 

if (buttonState == HIGH) // Если кнопка нажата
{
  ++counter; // Увеличить значение счетчика на 1
}

else if (counter == 5) // Если счетчик нажат 5 раз
{
  digitalWrite(11, HIGH); // Включить светодиод
}
// RESET:
if (counter > 5) // Если счетчик больше 5 (вы снова нажали кнопку)
{
  digitalWrite (11, LOW);
  counter = 0; // Make counter variable = 0
}
} 

Правка В комментариях, Python Schlage сделал очень хорошие предложения: изменить buttonState на логический и изменить int на byte, чтобы сэкономить место на борту Arduino

Попробуйте следовать этому руководству: https://www.arduino.cc/en/Tutorial/BuiltInExamples/Button и модифицируя его для работы со счетчиком. Надеюсь, это поможет! Пожалуйста, дайте нам знать, если вам нужна помощь с функцией setup() или если что-то неясно.

,

Для сохранения памяти, buttonState может быть изменен на логическое и счетчик может быть " байт. Другая` часть довольно бесполезна, потому что она просто выключит светодиод все время, хотя он уже включен "НИЗКО"., @Python Schlange

Хорошие моменты! Я добавлю измененную версию с вашими предложениями, @Sony