Таймер-детонатор

Оля
Offline
Зарегистрирован: 16.05.2019

Здравствуйте, помогите, пожалуйста, с заданием.

RGB диоды последовательно мигают. При вводе кода в Com порт мы переводим детонатор в активное состояние. Программа запрашивает установить время срабатывания (от 1 до 60 сек). Если ввели неверный код действия не происходит. Задаем необходимое время в Com порт.  Программа начинает отчет (раз в секунду в Com порт выводиться оставшееся время, B светодиод мигает раз в секунду). По истечении заданного времени загорается R светодиод – детонация произошла. В процессе обратного отчета нужно предусмотреть ввод кода отмены. В таком случае обратный отчет прекращается, загорается G светодиод.

Вот код, который получился, но не получается составить код без delay, а также не работает код отмены.

int outputPin = 11;                //здесь храним номер контакта
int val;                           //здесь будет храниться принятый символ
volatile unsigned long int timerLED1;
void setup()
{
    
//pinMode(13, OUTPUT);
 pinMode(12, OUTPUT);
 pinMode(11, OUTPUT);
      
  Serial.begin(9600);              //установка порта на скорость 9600 бит/сек
  pinMode(outputPin, OUTPUT);      //устанавливаем 13 контакт в режим вывода
}

void loop()
{  
  //if (Serial.available()) {         //если есть принятый символ,
  
   val = Serial.read();            //  то читаем его и сохраняем в val
     if (val == 'L') {               //  если принят симовол 'L',
      digitalWrite(12,HIGH);
      delay(60000);
    //    то выключаем светодиод
    }
    if (val == 'H') {               //  если принят симовол 'H',...
    Serial.println("60 sec");
      digitalWrite(outputPin, HIGH);//  то включаем светодиод
 delay(500);  
 digitalWrite(outputPin, LOW);
  delay(500); 
  Serial.println("59 sec");
   digitalWrite(outputPin, HIGH);//  то включаем светодиод
 delay(500);  
 digitalWrite(outputPin, LOW);
  delay(500); 
  Serial.println("58 sec");
   digitalWrite(outputPin, HIGH);//  то включаем светодиод
 delay(500);  
 digitalWrite(outputPin, LOW);
  delay(500); 
  Serial.println("57 sec");
   digitalWrite(outputPin, HIGH);//  то включаем светодиод
 delay(500);  
 digitalWrite(outputPin, LOW);
  delay(500); 
  Serial.println("56 sec");
   digitalWrite(outputPin, HIGH);//  то включаем светодиод
 delay(500);  
 digitalWrite(outputPin, LOW);
  delay(500); 
  Serial.println("55 sec");
   digitalWrite(outputPin, HIGH);//  то включаем светодиод
 delay(500);  
 digitalWrite(outputPin, LOW);
  delay(500); 
  Serial.println("54 sec");
   digitalWrite(outputPin, HIGH);//  то включаем светодиод
 delay(500);  
 digitalWrite(outputPin, LOW);
  delay(500); 
  Serial.println("53 sec");
  digitalWrite(outputPin, HIGH);//  то включаем светодиод
 delay(500);  
 digitalWrite(outputPin, LOW);
  delay(500); 
  Serial.println("52 sec");
  digitalWrite(outputPin, HIGH);//  то включаем светодиод
 delay(500);  
 digitalWrite(outputPin, LOW);
  delay(500); 
  Serial.println("51 sec");
  digitalWrite(outputPin, HIGH);//  то включаем светодиод
 delay(500);  
 digitalWrite(outputPin, LOW);
  delay(500); 
  Serial.println("50 sec");
  digitalWrite(outputPin, HIGH);//  то включаем светодиод
 delay(500);  
 digitalWrite(outputPin, LOW);
  delay(500); 
  Serial.println("49 sec");
  digitalWrite(outputPin, HIGH);//  то включаем светодиод
 delay(500);  
 digitalWrite(outputPin, LOW);
  delay(500); 
  Serial.println("48 sec");
  digitalWrite(outputPin, HIGH);//  то включаем светодиод
 delay(500);  
 digitalWrite(outputPin, LOW);
  delay(500); 
  Serial.println("47 sec");
  digitalWrite(outputPin, HIGH);//  то включаем светодиод
 delay(500);  
 digitalWrite(outputPin, LOW);
  delay(500); 
  Serial.println("46 sec");digitalWrite(outputPin, HIGH);//  то включаем светодиод
 delay(500);  
 digitalWrite(outputPin, LOW);
  delay(500); 
  Serial.println("45 sec");digitalWrite(outputPin, HIGH);//  то включаем светодиод
 delay(500);  
 digitalWrite(outputPin, LOW);
  delay(500); 
  Serial.println("44 sec");
  digitalWrite(outputPin, HIGH);//  то включаем светодиод
 delay(500);  
 digitalWrite(outputPin, LOW);
  delay(500); 
  Serial.println("43 sec");
  digitalWrite(outputPin, HIGH);//  то включаем светодиод
 delay(500);  
 digitalWrite(outputPin, LOW);
  delay(500); 
  Serial.println("42 sec");
  digitalWrite(outputPin, HIGH);//  то включаем светодиод
 delay(500);  
 digitalWrite(outputPin, LOW);
  delay(500); 
  Serial.println("41 sec");
  digitalWrite(outputPin, HIGH);//  то включаем светодиод
 delay(500);  
 digitalWrite(outputPin, LOW);
  delay(500); 
  Serial.println("40 sec");
  digitalWrite(outputPin, HIGH);//  то включаем светодиод
 delay(500);  
 digitalWrite(outputPin, LOW);
  delay(500); 
  Serial.println("39 sec");
  digitalWrite(outputPin, HIGH);//  то включаем светодиод
 delay(500);  
 digitalWrite(outputPin, LOW);
  delay(500); 
  Serial.println("38 sec");
  digitalWrite(outputPin, HIGH);//  то включаем светодиод
 delay(500);  
 digitalWrite(outputPin, LOW);
  delay(500); 
  Serial.println("37 sec");
  digitalWrite(outputPin, HIGH);//  то включаем светодиод
 delay(500);  
 digitalWrite(outputPin, LOW);
  delay(500); 
  Serial.println("36 sec");
  digitalWrite(outputPin, HIGH);//  то включаем светодиод
 delay(500);  
 digitalWrite(outputPin, LOW);
  delay(500); 
  Serial.println("35 sec");
  digitalWrite(outputPin, HIGH);//  то включаем светодиод
 delay(500);  
 digitalWrite(outputPin, LOW);
  delay(500); 
  Serial.println("34 sec");
  digitalWrite(outputPin, HIGH);//  то включаем светодиод
 delay(500);  
 digitalWrite(outputPin, LOW);
  delay(500); 
  Serial.println("33 sec");
  digitalWrite(outputPin, HIGH);//  то включаем светодиод
 delay(500);  
 digitalWrite(outputPin, LOW);
  delay(500); 
  Serial.println("32 sec");
  digitalWrite(outputPin, HIGH);//  то включаем светодиод
 delay(500);  
 digitalWrite(outputPin, LOW);
  delay(500); 
  Serial.println("31 sec");
  digitalWrite(outputPin, HIGH);//  то включаем светодиод
 delay(500);  
 digitalWrite(outputPin, LOW);
  delay(500); 
  Serial.println("30 sec");
  digitalWrite(outputPin, HIGH);//  то включаем светодиод
 delay(500);  
 digitalWrite(outputPin, LOW);
  delay(500); 
  Serial.println("29 sec");digitalWrite(outputPin, HIGH);//  то включаем светодиод
 delay(500);  
 digitalWrite(outputPin, LOW);
  delay(500); 
  Serial.println("28 sec");
  digitalWrite(outputPin, HIGH);//  то включаем светодиод
 delay(500);  
 digitalWrite(outputPin, LOW);
  delay(500); 
  Serial.println("27 sec");
  digitalWrite(outputPin, HIGH);//  то включаем светодиод
 delay(500);  
 digitalWrite(outputPin, LOW);
  delay(500); 
  Serial.println("26 sec");
  digitalWrite(outputPin, HIGH);//  то включаем светодиод
 delay(500);  
 digitalWrite(outputPin, LOW);
  delay(500); 
  Serial.println("25 sec");
  digitalWrite(outputPin, HIGH);//  то включаем светодиод
 delay(500);  
 digitalWrite(outputPin, LOW);
  delay(500); 
  Serial.println("24 sec");
  digitalWrite(outputPin, HIGH);//  то включаем светодиод
 delay(500);  
 digitalWrite(outputPin, LOW);
  delay(500); 
  Serial.println("23 sec");
  digitalWrite(outputPin, HIGH);//  то включаем светодиод
 delay(500);  
 digitalWrite(outputPin, LOW);
  delay(500); 
  Serial.println("22 sec");
  digitalWrite(outputPin, HIGH);//  то включаем светодиод
 delay(500);  
 digitalWrite(outputPin, LOW);
  delay(500); 
  Serial.println("21 sec");
  digitalWrite(outputPin, HIGH);//  то включаем светодиод
 delay(500);  
 digitalWrite(outputPin, LOW);
  delay(500); 
  Serial.println("20 sec");
  digitalWrite(outputPin, HIGH);//  то включаем светодиод
 delay(500);  
 digitalWrite(outputPin, LOW);
  delay(500); 
  Serial.println("19 sec");
  digitalWrite(outputPin, HIGH);//  то включаем светодиод
 delay(500);  
 digitalWrite(outputPin, LOW);
  delay(500); 
  Serial.println("18 sec");
  digitalWrite(outputPin, HIGH);//  то включаем светодиод
 delay(500);  
 digitalWrite(outputPin, LOW);
  delay(500); 
  Serial.println("17 sec");
  digitalWrite(outputPin, HIGH);//  то включаем светодиод
 delay(500);  
 digitalWrite(outputPin, LOW);
  delay(500); 
  Serial.println("16 sec");
  digitalWrite(outputPin, HIGH);//  то включаем светодиод
 delay(500);  
 digitalWrite(outputPin, LOW);
  delay(500); 
  Serial.println("15 sec");
  digitalWrite(outputPin, HIGH);//  то включаем светодиод
 delay(500);  
 digitalWrite(outputPin, LOW);
  delay(500); 
  Serial.println("14 sec");
  digitalWrite(outputPin, HIGH);//  то включаем светодиод
 delay(500);  
 digitalWrite(outputPin, LOW);
  delay(500); 
  Serial.println("13 sec");
  digitalWrite(outputPin, HIGH);//  то включаем светодиод
 delay(500);  
 digitalWrite(outputPin, LOW);
  delay(500); 
  Serial.println("12 sec");
  digitalWrite(outputPin, HIGH);//  то включаем светодиод
 delay(500);  
 digitalWrite(outputPin, LOW);
  delay(500); 
  Serial.println("11 sec");
  digitalWrite(outputPin, HIGH);//  то включаем светодиод
 delay(500);  
 digitalWrite(outputPin, LOW);
  delay(500); 
  Serial.println("10 sec");
  digitalWrite(outputPin, HIGH);//  то включаем светодиод
 delay(500);  
 digitalWrite(outputPin, LOW);
  delay(500); 
  Serial.println("9 sec");
  digitalWrite(outputPin, HIGH);//  то включаем светодиод
 delay(500);  
 digitalWrite(outputPin, LOW);
  delay(500); 
  Serial.println("8 sec");
  digitalWrite(outputPin, HIGH);//  то включаем светодиод
 delay(500);  
 digitalWrite(outputPin, LOW);
  delay(500); 
  Serial.println("7 sec");
  digitalWrite(outputPin, HIGH);//  то включаем светодиод
 delay(500);  
 digitalWrite(outputPin, LOW);
  delay(500); 
  Serial.println("6 sec");
  digitalWrite(outputPin, HIGH);//  то включаем светодиод
 delay(500);  
 digitalWrite(outputPin, LOW);
  delay(500); 
  Serial.println("5 sec");
  digitalWrite(outputPin, HIGH);//  то включаем светодиод
 delay(500);  
 digitalWrite(outputPin, LOW);
  delay(500); 
  Serial.println("4 sec");
  digitalWrite(outputPin, HIGH);//  то включаем светодиод
 delay(500);  
 digitalWrite(outputPin, LOW);
  delay(500); 
  Serial.println("3 sec");
  digitalWrite(outputPin, HIGH);//  то включаем светодиод
 delay(500);  
 digitalWrite(outputPin, LOW);
  delay(500); 
  Serial.println("2 sec");
  digitalWrite(outputPin, HIGH);//  то включаем светодиод
 delay(500);  
 digitalWrite(outputPin, LOW);
  delay(500); 
  Serial.println("1 sec");
  digitalWrite(13, HIGH);
  delay(60000);
    }
   
  {  digitalWrite(13, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(1000);                       // wait for a second
  digitalWrite(13, LOW);    // turn the LED off by making the voltage LOW
  delay(1000);                       // wait for a second
 digitalWrite(12, HIGH); 
 delay(1000);  
 digitalWrite(12, LOW); 
 delay(1000);
 digitalWrite(11, HIGH); 
 delay(1000);  
 digitalWrite(11, LOW); 
 delay(1000);
 }
  }

 

Ворота
Ворота аватар
Offline
Зарегистрирован: 10.01.2016

Оля пишет:

но не получается составить код без delay

В задании нет требования, чтобы код был без delay.

Какие ещё нюансы задания Вы от нас скрыли?

Оля
Offline
Зарегистрирован: 16.05.2019

в принципе, можно и с delay, но как мне сказал преподаватель, что код отмены не работает, потому что есть задержка по времени (delay)

PRC
Offline
Зарегистрирован: 03.02.2019

nik182
Offline
Зарегистрирован: 04.05.2015

Куда органы смотрят? На форумах бомбы строят и ничего. Бежать надо от греха подальше.

 

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

Какая жуткая жуть. Оля, если вас преподаватель научил так программировать, он обязан сделать себе харакири.

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

Оля, тебя пасодють.  И твоего преподавателя тоже. 

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

DetSimen пишет:

Оля, тебя пасодють.  И твоего преподавателя тоже. 

неееее, блондинок не содют )))

Ворота
Ворота аватар
Offline
Зарегистрирован: 10.01.2016

Да, ладно! Усіх саджають!

Morroc
Offline
Зарегистрирован: 24.10.2016

Оля пишет:

Вот код, который НЕ получился

:) Вот этого точно нет:

Оля пишет:

Программа запрашивает установить время срабатывания (от 1 до 60 сек). 

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

а вообще с 26 по 320 строку всё удалить и вставить десяток строк моргания светодиодом на таймере, тогда чтение порта освободится

vvadim
Offline
Зарегистрирован: 23.05.2012

Оля, проще в разделе "Ищу исполнителя" поискать кто напишет вам код.

думаю за пару тыщ сделают.

не забудьте почту свою указать.

lean_74
Offline
Зарегистрирован: 22.12.2015

vvadim пишет:

не забудьте почту свою указать.

ага, чтоб те кто будет сажать, долго не парились с поиском.)))

mykaida
mykaida аватар
Offline
Зарегистрирован: 12.07.2018

Оля - вам здесь не помогут. И я не помогу - нахрена нам плохие (здесь было другое слово) программисты? Но общую идею подскажу - каждую сепкунду у Вас происходит что-то (типа лед какой-то). Далее -  убираем delay() в пользу millis(). 

Я учился в МИФИ и наши девченки с этого поняли-бы...

Green
Offline
Зарегистрирован: 01.10.2015

mykaida пишет:

Я учился в МИФИ и наши девченки с этого поняли-бы...

"Я академиев не кончал, но высшее образование вам даду".

mykaida
mykaida аватар
Offline
Зарегистрирован: 12.07.2018

Green пишет:

"Я академиев не кончал, но высшее образование вам даду".

Гы )))

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

vvadim пишет:

Оля, проще в разделе "Ищу исполнителя" поискать кто напишет вам код.

думаю за пару тыщ сделают.

не забудьте почту свою указать.

да ну пару тыщ, Скиф рублей за 300 сделает )))

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

mykaida пишет:

Оля - вам здесь не помогут. И я не помогу - нахрена нам плохие (здесь было другое слово) программисты? Но общую идею подскажу - каждую сепкунду у Вас происходит что-то (типа лед какой-то). Далее -  убираем delay() в пользу millis(). 

Я учился в МИФИ и наши девченки с этого поняли-бы...

не , Вы за всех то не подписывайтесь, девочки они исполнительные, а Оля вдобавок упорная, 300 строк написать - здесь вам не тут, так что, я лично помогу, тем более кода там строк 30-50

mykaida
mykaida аватар
Offline
Зарегистрирован: 12.07.2018

ua6em пишет:

не , Вы за всех то не подписывайтесь, девочки они исполнительные, а Оля вдобавок упорная, 300 строк написать - здесь вам не тут, так что, я лично помогу, тем более кода там строк 30-50

Да ну - копирование с апгрейтом у них по жизни прописано :) А у нас были дефки в том числе и умненькие. Им преподы всегда четверки ставили :)

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

mykaida пишет:

ua6em пишет:

не , Вы за всех то не подписывайтесь, девочки они исполнительные, а Оля вдобавок упорная, 300 строк написать - здесь вам не тут, так что, я лично помогу, тем более кода там строк 30-50

Да ну - копирование с апгрейтом у них по жизни прописано :) А у нас были дефки в том числе и умненькие. Им преподы всегда четверки ставили :)

да ну, девки должны быть приятные на ощупь )))

Green
Offline
Зарегистрирован: 01.10.2015

И по разговору.)

mykaida
mykaida аватар
Offline
Зарегистрирован: 12.07.2018

ua6em пишет:

да ну, девки должны быть приятные на ощупь )))

После темы про тремор прошу обозначить "ощупь" в цифрах )))

mykaida
mykaida аватар
Offline
Зарегистрирован: 12.07.2018

Green пишет:

И по разговору.)

Т.е. обработку string() Вы берете на себя?

strarbit
strarbit аватар
Offline
Зарегистрирован: 12.06.2016

Miss Оля, write me an mail.

MacSim
Offline
Зарегистрирован: 28.11.2012

охринеть... вы китайских програмистов переплюнули, которые обьявляют вместо массива а1,а2,а3,.....

начните с премитивного-  логической схемы работы своей программы в виде кубиков, ромбиков-? да/нет, стрелочек. потом одним диодом помаргайте...

это помагает

Morroc
Offline
Зарегистрирован: 24.10.2016

Я как на форум ни зайду - обязательно живая тема про "как избавиться от delay". Мне кажется можно целую книжку написать, по типу "millis() и таймеры для чайников или как запараллелить исполнение" :)

Green
Offline
Зарегистрирован: 01.10.2015

strarbit, думаю эта тема для вас в самый раз. Наше ФСБ к вам не дотянется.)

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

mykaida пишет:

ua6em пишет:

да ну, девки должны быть приятные на ощупь )))

После темы про тремор прошу обозначить "ощупь" в цифрах )))

в  этом программисты пролетают мимо, зто нельзя оцифровать и автоматизировать )))

vvadim
Offline
Зарегистрирован: 23.05.2012

ua6em пишет:

в  этом программисты пролетают мимо, зто нельзя оцифровать и автоматизировать )))

да ладно, ещё в школе была шкала 1-10 или 1-100.
и дефкам нравилось, если они где то в верхах числились))))

 

Ворота
Ворота аватар
Offline
Зарегистрирован: 10.01.2016

Morroc пишет:

Я как на форум ни зайду - обязательно живая тема про "как избавиться от delay".

И чем он им всем так не угодил?

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

vvadim пишет:

ua6em пишет:

в  этом программисты пролетают мимо, зто нельзя оцифровать и автоматизировать )))

да ладно, ещё в школе была шкала 1-10 или 1-100.
и дефкам нравилось, если они где то в верхах числились))))

 в Таганрогком радиотехническом была обратная шкала -Кушпит )))

strarbit
strarbit аватар
Offline
Зарегистрирован: 12.06.2016

Green пишет:

strarbit, думаю эта тема для вас в самый раз. Наше ФСБ к вам не дотянется.)

Dear sir, Green Have a Cool Evening! 
I stood up for a schoolgirl. Needless to say, this is not real, it's just a game.

mykaida
mykaida аватар
Offline
Зарегистрирован: 12.07.2018

ua6em пишет:

 в Таганрогком радиотехническом была обратная шкала -Кушпит )))

Ну там есть определенные цифры 1, 2,3, 4 ... больше на ощупь не встречал. Говорят, что бывают 0 и 9, но 0, по моему мнению, не имеет смысла, а 9 не влезает в байт.

Оля
Offline
Зарегистрирован: 16.05.2019

От delay я вроде как избавилась. время в компорт выводит и параллельно мигает.
Но теперь не работает код начала действия. Куда поместить if (val == 'H'), чтобы он начинал мигать, когда вводим H?

и с кодом отмены тоже проблемы)

#define LED_PIN  13      // номер выхода,подключенного к светодиоду
#define  BLINK_INTERVAL  500UL  // интервал между включение/выключением светодиода (5 секунд)
#define PRINT_INTERVAL 1000UL  // периодичность вывода времени в Serial (1 cекунда)
#define SERIAL_SPEED 9600 // скорость работы Serial
int val; 
void setup() {
  // задаем режим выхода для порта, подключенного к светодиоду
  pinMode(LED_PIN, OUTPUT);      
   
  // задаем скорость работы ком-порта
  Serial.begin(SERIAL_SPEED); 
}
  
void loop()
{ 
 blinkLed(BLINK_INTERVAL);  // мигаем
 printTime(PRINT_INTERVAL); // выводим время
val = Serial.read (); // Считываем команду посланную с компьютера через консоль IDE Arduino
if (val == 'H') {void blinkLed(unsigned long interval);}
}
// мигает диодом с периодичностью interval
void blinkLed(unsigned long interval ){
  static unsigned long prevTime = 0; // время когда последний раз переключали диод
  if(millis() - prevTime > interval) {
    prevTime = millis();  // 
    digitalWrite(LED_PIN,!digitalRead(LED_PIN)); 
  }
}

// выводит в Serial время с периодичностью interval
void printTime(unsigned long interval){
  static unsigned long prevTime=0;
  if(millis()-prevTime>=interval){
    prevTime=millis();
     
    Serial.print("Current time:");
    Serial.println(millis());
  }
}
 

 

sadman41
Offline
Зарегистрирован: 19.10.2016

Все почти OK, только по if(...'H') надо инвертировать дополнительную переменную-флаг, а в строку 16 добавить условие, при истинности которого будет вызываться фунция blinkLed().

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

sadman41 пишет:

Все почти OK, только по if(...'H') надо инвертировать дополнительную переменную-флаг, а в строку 16 добавить условие, при истинности которого будет вызываться фунция blinkLed().

такое построение идеологически потянет максимум на трояк, а девочка трудолюбивая, надо подсказать как на пятёрочку, да и выводит в миллисекундах, видимо надо поправить тут:
 

   Serial.print("Current time:");
    Serial.println(millis()/1000);

 

Оля
Offline
Зарегистрирован: 16.05.2019

А так примерно нужно было инвертировать переменную? Просто теперь светодиод не мигает и время выводится единожды.

void loop()
{
val = Serial.read (); // Считываем команду посланную с компьютера через консоль IDE Arduino
if (val == 'H'&&flag==0) { 
  digitalWrite(13,!digitalRead(13));
  blinkLed(BLINK_INTERVAL);  // мигаем
 printTime(PRINT_INTERVAL); // выводим время
flag=1;}
if (val=='U'&&flag==1)
{flag=0;}
}

 

Оля
Offline
Зарегистрирован: 16.05.2019

Спасибо за подсказку!) Да мне бы хоть как...((

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

Оля пишет:

Спасибо за подсказку!) Да мне бы хоть как...((

напишите в личку ник на яндексе

Morroc
Offline
Зарегистрирован: 24.10.2016

Оля пишет:

Просто теперь светодиод не мигает и время выводится единожды.

Если flag - это признак поданной команды 'H', то blinkLed(BLINK_INTERVAL); должен выполняться не внутри условия if (val == 'H'..., а внутри отдельного самостоятельного условия if (flag==1) в цикле loop() (ну и время тоже там если параллельно миганию надо)

Оля
Offline
Зарегистрирован: 16.05.2019

А где здесь личка?

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

а то выкладывать свой примитивный код на обозрение нездоровой критики нет желания )))

Ворота
Ворота аватар
Offline
Зарегистрирован: 10.01.2016

ua6em пишет:

напишите в личку ник на яндексе

О-о-о, да наш форум залазит на поляну https://www.mamba.ru :)

sadman41
Offline
Зарегистрирован: 19.10.2016

Оля пишет:

А так примерно нужно было инвертировать переменную?

Примерно вот так:

void loop() {
  static uint8_t blinkAllowed = false;

  if (blinkAllowed) {
    blinkLed(BLINK_INTERVAL);  // мигаем
    printTime(PRINT_INTERVAL); // выводим время
  }

  if (Serial.available() > 0) {
    char val = Serial.read(); // Считываем команду посланную с компьютера через консоль IDE Arduino

    switch (val) {
      case 'H':
        blinkAllowed = true;
        break;

      case 'U':
        blinkAllowed = false;
        // Тут ещё нужно погасить светодиод
        break;

      default:
        break;
    }
  }
}

 

Оля
Offline
Зарегистрирован: 16.05.2019

Спасибо!

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

sadman41 пишет:

Оля пишет:

А так примерно нужно было инвертировать переменную?

Примерно вот так:

void loop() {
  static uint8_t blinkAllowed = false;

  if (blinkAllowed) {
    blinkLed(BLINK_INTERVAL);  // мигаем
    printTime(PRINT_INTERVAL); // выводим время
  }

  if (Serial.available() > 0) {
    char val = Serial.read(); // Считываем команду посланную с компьютера через консоль IDE Arduino

    switch (val) {
      case 'H':
        blinkAllowed = true;
        break;

      case 'U':
        blinkAllowed = false;
        // Тут ещё нужно погасить светодиод
        break;

      default:
        break;
    }
  }
}

как обработчик можно и так, можно через IF а вот таймера у неё нет, хотя бы как блинк на миллис взять за основу

sadman41
Offline
Зарегистрирован: 19.10.2016

ua6em пишет:

а вот таймера у неё нет, хотя бы как блинк на миллис взять за основу

Незамысловатый блинк у неё есть.

Но, думаю, Вы нам сейчас покажете, как это на таймере делается. Чтобы на пятёрку.

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

sadman41 пишет:

ua6em пишет:

а вот таймера у неё нет, хотя бы как блинк на миллис взять за основу

Незамысловатый блинк у неё есть.

Но, думаю, Вы нам сейчас покажете, как это на таймере делается. Чтобы на пятёрку.

 

на пятёрку я не знаю, только на четвёрку...
таймер,легко, но не покажу, пусть поработает, ну может на миллис разве что )))
а вскетче два недотаймера, их выбросить и сделать хотя бы как в примерах блинк без делей

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

Ворота пишет:

ua6em пишет:

напишите в личку ник на яндексе

О-о-о, да наш форум залазит на поляну https://www.mamba.ru :)

тема оказывается еще жива, вот уж не подумал бы )))