Друзья подскажите интересный вопрос возник. delay - это зло. Светодиод вкл и выкл на секуенду Подскажите как мигать светодиодом 10 секунд. Всем спасибо. Есть код. Код (C++): const int ledPin = 13; // the number of the LED pin // Variables will change: int ledState = LOW; // ledState used to set the LED long previousMillis = 0; // will store last time LED was updated // the follow variables is a long because the time, measured in miliseconds, // will quickly become a bigger number than can be stored in an int. long interval = 1000; // interval at which to blink (milliseconds) void setup() { // set the digital pin as output: pinMode(ledPin, OUTPUT); } void loop() { // here is where you'd put code that needs to be running all the time. // check to see if it's time to blink the LED; that is, if the // difference between the current time and last time you blinked // the LED is bigger than the interval at which you want to // blink the LED. unsigned long currentMillis = millis(); if(currentMillis - previousMillis > interval) { // save the last time you blinked the LED previousMillis = currentMillis; // if the LED is off turn it on and vice-versa: if (ledState == LOW) ledState = HIGH; else ledState = LOW; // set the LED with the ledState of the variable: digitalWrite(ledPin, ledState); } }
Код (C++): unsigned long currentMillis = millis(); static int c = 10; if((currentMillis - previousMillis > interval) && ( c > 0 )) { c--; ... ... }
Прописывать в loop многозадачность на mills то же как-то кисло. Попробуй так: http://playground.arduino.cc/Code/TaskScheduler
для светодиода можно и не изощряться особо long interval =1000; - это секунда long interval =5000; - это пять секунд. меняй в своём коде этот параметр
Полная многозадачность палка о двух концах. Зачастую с помощью millis и прерываний многозадачность реализовать быстрее, проще и надежнее. А учитывая квант времени порядка 20 мс, то и не все задачи на мультитаск покатит.