Отказ от оператора Delay
- Войдите на сайт для отправки комментариев
Помогите с изменением оператора Delay на millis в скетче. никак не могу догнать, как правильно сделать.
if ( In_sms == true)
{
Serial1.print("AT + CMGS = \"");
delay(300);
Serial1.print( Phone );
delay(300);
Serial1.println("\"");
delay(300);
//
Serial1.println( text );
delay(300);
Serial1.println( "\n" );
delay(300);
//
Serial1.println( text1 );
delay(300);
Serial1.println( "\n" );
delay(300);
//
Serial1.println( text2 );
delay(300);
Serial1.println( "\n" );
delay(300);
//
Serial1.println( text3 );
delay(300);
Serial1.println( "\n" );
delay(300);
//
Serial1.println( text4 );
delay(300);
Serial1.println( "\n" );
delay(300);
//
Serial1.println( text5 );
delay(300);
Serial1.println( "\n" );
delay(300);
//
Serial1.println( text6 );
delay(300);
Serial1.println( "\n" );
delay(300);
//
Serial1.println((char)26);
delay(300);
Serial1.println();
delay(300);
}
void antidelay(unsigned long timing){ timing += millis(); while(millis()<=timing); } void setup() { pinMode(13, OUTPUT); } void loop() { digitalWrite(13, HIGH); // turn the LED on (HIGH is the voltage level) antidelay(1000); // wait for a second digitalWrite(13, LOW); // turn the LED off by making the voltage LOW antidelay(1000); }лови код
Я не совсем понял, как это работает, но реализовать попробую. Спасибо.
Не нужно.
Это такой прикол был.
Посмотрите лучше здесь: https://www.google.ru/#newwindow=1&q=blink+without+delay
Помогите с изменением оператора Delay на millis в скетче. никак не могу догнать, как правильно сделать.
и, очки чукче-писателю пришлите, что бы не писал на осчупь, но и читал прибитые гвоздями темы
#define DATA_SEND_START 1 #define DATA_SEND_COMPLETED 0 unsigned long interval = 300; unsigned long previousMillis = 0; uint8_t inSMS = 1; uint8_t counter = 0; int dataArray[]= {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; uint8_t state; void sendData(int data[]) { unsigned long currentMillis = millis(); if (currentMillis - previousMillis >= interval) { previousMillis = currentMillis; Serial.println(data[counter]); counter += 1; } if (counter == sizeof(dataArray) / sizeof(int)) { counter = 0; state = DATA_SEND_COMPLETED; } } void checkSMS() { if (inSMS == 1) { state = DATA_SEND_START; } } void doTask() { if (state == DATA_SEND_START) { sendData(dataArray); } if (state == DATA_SEND_COMPLETED) { Serial.println("COMPLETED"); } } void setup() { // put your setup code here, to run once: Serial.begin(9600); } void loop() { // put your main code here, to run repeatedly: checkSMS(); doTask(); }Только вместо строк числа.
;)