Как остановить код Arduino через 1 секунду?

Я хочу отправить сообщение NRF24L01 в NRF24L01. Я хочу посмотреть, смогу ли я послать всего одну секунду. Как я могу остановить код через 1 секунду?

, 👍-1

Обсуждение

изучите пример кода, который входит в состав arduino IDE, @jsotola


1 ответ


0

Вы можете использовать различные способы:

Используйте только настройку

Вместо того, чтобы вводить код в функцию цикла, поместите его в настройку, которая выполняется только один раз (используйте цикл for, чтобы отправить около 1 секунды.

миллисекунды() без учета настройки

Лучше использовать функцию millis и сравнить ее с началом отправки; по истечении 1 секунды ничего не отправляйте и не используйте бесконечный цикл while.

Используйте что-то вроде:

unsigned long time_start;

void setup()
{
    // Ваш обычный код 

    time_start = millis();
}

void setup()
{
    if (millis() - time_start >= 1000) 
    {
        while(1) {};
    }

    // ваш обычный код (который не должен занимать много мс,
    // в противном случае приведенный выше код не будет достигнут.

millis(), включая саэтуп (Спасибо Эдгару Боннету):

 void loop()
 {
     if (millis() >= 1000)
     {
        while(1) {};
     }
 }

Это прекратится ровно через 1 с после запуска (исключая настройку). Он начнет отсчет после начала отсчета миллисекунд, то есть до начала функции настройки.

На самом деле, ни в одном из вышеперечисленных Arduino "не останавливается", он просто бесконечно ничего не делает (ну, внутренне бесконечно проверяет истинное состояние, которое никогда не меняется).

,

Или даже " if (millis >= 1000) exit();"., @Edgar Bonet

@EdgarBonet Спасибо, я добавил это в ответ., @Michel Keijzers