Мегание светодиода после сигнала датчика

NeonDash
Offline
Зарегистрирован: 10.05.2020

Всем здвраствуйте, я новичок в прогроммирование Arduino. Можете мне помочь с написанием кода ? У меня ест ьнекая проблема с написанием кода. После того как датчик подал сигнал, светодиод не переставал мигать (Суть в том, что когда датчик подал сигнал, то светодиод должен мигать, даже если потом сигнала на датчике уже нету. Но у меня он перестает мигать, когда уже на датчике нет сигнала) 

 

Вот мой код:

int ledPin = 4;


int Datchik_plameni = 3;





unsigned long currentTime;


boolean ledState = 0;





void setup() {


pinMode(ledPin,OUTPUT);


pinMode(Datchik_plameni,INPUT);


}





void loop() {





if(digitalRead(Datchik_plameni)==HIGH) {


if( millis() - currentTime > 300) {


currentTime = millis();


ledState=!ledState;


digitalWrite(ledPin, ledState);


}


}


}

 

Помогите пожалуйста его исправить. Заранее спасибо за ответ

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

Вставьте код согласно правил форума (кнопка code), в новом сообщении. 

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014
Добавь переменную-флаг с изначальным значением 0. При появлении высокого уровня от датчика (HIGH), присвой переменной значение 1.
 
В цикле моргания проверяй значение этой переменной. Если 0, то не мигать. Если 1, то мигать.
NeonDash
Offline
Зарегистрирован: 10.05.2020

Добрый вечер если не сложно то можете пример скинуть.

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014

Всякие примеры есть в этой книжке.

NeonDash
Offline
Зарегистрирован: 10.05.2020

Спасибо

Pyotr
Offline
Зарегистрирован: 12.03.2014

NeonDash, посмотри как можно строить loop() http://arduino.ru/forum/programmirovanie/dva-taimera-iz-odnogo-millis?pa... Ну и почти готовый пример одной вспышки в сек лед если произошло событие.
Пример легко дополнить чтоб было 2 или 3 вспышки и например в 2 сек. Пробуй.

 

intervalMs=40
void loop(){
  currMillis = millis();
  if(currMillis - prevMillis >= intervalMs){//
    prevMillis += intervalMs;
  
    switch (countCycle){
      case 0: 
        if(событие) needBlink = 1;
        if(needBlink) включаем лед
        break;        
      case 1:
        выключаем лед
      break;
      case 6:  
        //что-то делаем
        break;
      case 8:  
        //действие 
        break;         
    }    
    if(++countCycle >= 25){//прошла  1 сек
      countCycle = 0;
    }
  }
}//END loop()

 

NeonDash
Offline
Зарегистрирован: 10.05.2020

Спасибо за помощь 

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

NeonDash пишет:

Всем здвраствуйте

И Вам того же.

NeonDash пишет:

я новичок в прогроммирование Arduino.

Эту подробность можно было и опустить, она никому неинтересна. Да, и не ясно в чём именно Вы новичок. В слове "прогроммирование" то ли вторая буква - лишняя, то ли ещё чего.

NeonDash пишет:

Можете мне помочь с написанием кода ?

Боюсь, что нет. 

NeonDash пишет:

У меня ест ьнекая проблема с написанием кода.

Не обманывайте себя - и не "ьнекая", и не одна, а уж что она там ест, этого никто не знает.

NeonDash пишет:

Помогите пожалуйста его исправить.

Что исправить? Никакого кода в Вашем сообщении не было. См. как должен выглядеть код.

NeonDash пишет:

Заранее спасибо за ответ

Не за что!

И да, кстати, Вы бы хоть написали, что у Вас за ардуино, поскольку нужное Вам "Мегание" можно сделать только на "Меге", ни на чём другом не получится :-(

NeonDash
Offline
Зарегистрирован: 10.05.2020

Извиняюсь за свои ошибки.

 

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

Так чего извиняться-то, код нормально вставляйте, до сих пор ведь нет его.

NeonDash
Offline
Зарегистрирован: 10.05.2020

Я не знаю как редактировать 

Pyotr
Offline
Зарегистрирован: 12.03.2014

В новом сообщении вставляй.

NeonDash
Offline
Зарегистрирован: 10.05.2020

Понял