ARDUINO Световое табло.

BratAlkoniy

✩✩✩✩✩✩✩
15 Ноя 2019
4
0
Доброго времени суток!
Просьба помочь новичку.
Задача:
Имеется светодиод, который должен мигать каждую секунду, при нажатии и удерживании кнопки.
При отпускании кнопки - должен погаснуть.
Есть задумка с реализацией одного табло, но на этом месте я завис, т.к. не могу сообразить как это написать.
Заранее спасибо)
 

Старик Похабыч

★★★★★★★
14 Авг 2019
4,159
1,267
Москва
задача не сложная, если ты завис на самом начальном этапе, стоит ли браться за более сложную задачу ?
Показывай скетч, говори как хотел сделать, скажи в чем зависон
 

BratAlkoniy

✩✩✩✩✩✩✩
15 Ноя 2019
4
0
задача не сложная, если ты завис на самом начальном этапе, стоит ли браться за более сложную задачу ?
Показывай скетч, говори как хотел сделать, скажи в чем зависон
Пока, только такое по образцу получилось, мигание при запуске

C++:
const int ledPin1 =  4;  // номер контакта светодиода1


const long interval = 700;  // интервал включения
                             // и выключения светодиода
                           

int ledState = LOW;      // состояние контакта светодиода


unsigned long previousMillis = 0;  // здесь хранится время того,
                                   // когда состояние контакта
                                   // светодиода поменялось
                                   // в последний раз
unsigned long currentMillis = 0;   // здесь хранится текущее время выполнения программы



void setup() {

  pinMode(ledPin1, OUTPUT); // делаем цифровой контакт «ledPin1» выходным:




}

void loop() {

  currentMillis = millis();

  if (currentMillis - previousMillis >= interval)  // Если время контроллера millis, больше переменной на interval, то запускаем условие if
{
    previousMillis = currentMillis; // сохраняем время, когда мы  в последний раз моргнули светодиодом:
   
ledState=!ledState;  // если светодиод, выключен, включаем его, и наоборот:

   
    digitalWrite(ledPin1, ledState); // задаем состояние светодиода с помощью значения «ledState»:
     
   
  }
}
 
Изменено:

Старик Похабыч

★★★★★★★
14 Авг 2019
4,159
1,267
Москва
осталось добавить кнопку .
условие такое, если кнопка нажата, то выполняем все это
if (currentMillis - previousMillis >= interval) // Если время контроллера millis, больше переменной на interval, то запускаем условие if
{ previousMillis = currentMillis; // сохраняем время, когда мы в последний раз моргнули светодиодом:
ledState=!ledState; // если светодиод, выключен, включаем его, и наоборот:
digitalWrite(ledPin1, ledState); // задаем состояние светодиода с помощью значения «ledState»:
}
иначе

if (ledState=HIGH)
{
ledState=LOW';
digitalWrite(ledPin1, ledState); //
}
 

BratAlkoniy

✩✩✩✩✩✩✩
15 Ноя 2019
4
0
@Старик Похабыч, вроде бы получилось.

C++:
void loop() {

currentMillis = millis();

  if (digitalRead(11) == HIGH) {
    if ( currentMillis - previousMillis >= interval)  // Если время контроллера millis, больше переменной на interval, то запускаем условие if

    { previousMillis = currentMillis; // сохраняем время, когда мы  в последний раз моргнули светодиодом:

      ledState = !ledState; // если светодиод, выключен, включаем его, и наоборот:ledState = !ledState;
      digitalWrite(ledPin1, ledState); // задаем состояние светодиода с помощью значения
    }


  } else {
    if (ledState = HIGH) // если светодиод горит
    {
      ledState = LOW; // выключить его
      digitalWrite(ledPin1, ledState); // задаем состояние светодиода с помощью значения
    }
  }
}

Примерно так и думал реализовать. К сожалению, я не программист, а КИПовец)
Спасибо большое)
 

Старик Похабыч

★★★★★★★
14 Авг 2019
4,159
1,267
Москва

BratAlkoniy

✩✩✩✩✩✩✩
15 Ноя 2019
4
0
@Старик Похабыч, работает, работает )
Цель - приём 5В от датчика, после чего замигает светодиод. По сути, свето-/звуковая сигнализация. Это если упрощено)
Электрическая часть реализована, а вот с программной, к сожалению пока сложности. Но думаю справлюсь ;)
Ещё раз спасибо)
 

Marik

✩✩✩✩✩✩✩
11 Ноя 2019
29
4
я не программист, а КИПовец
Привет коллега, (как говорит наш начальник: "правильно сформулированный вопрос, это 50% ответа")