Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Производственный процесс

Уйти от задержки

Компоненты и расходные материалы

Arduino UNO
× 1
5 мм светодиод:красный
× 2

Об этом проекте

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

Если бы мы хотели мигать светодиодом каждые 1000 миллисек, а второй - каждые 500 миллисекунд, мы все равно могли бы использовать задержку, как это, как вы можете видеть, я разделил задержку в 1000 миллисекунд первого светодиода на 500 миллисекундов мигания второго светодиода.

  байт LED2 =12; void setup () {pinMode (LED_BUILTIN, OUTPUT); pinMode (LED2, ВЫХОД);} void loop () {digitalWrite (LED_BUILTIN, HIGH); digitalWrite (LED2, ВЫСОКИЙ); задержка (500); digitalWrite (LED2, LOW); задержка (500); digitalWrite (LED_BUILTIN, LOW); digitalWrite (LED2, ВЫСОКИЙ); задержка (500); digitalWrite (LED2, LOW); задержка (500); }  

Но что произойдет, если мы захотим моргнуть более быстрым за 300 миллисекунд вместо 500 миллисекунд. Вот где использование задержки делает это очень сложным или невозможным.

Так что делать? Прекратите использовать задержку!

У нас даже есть пример в среде Arduino IDE, который называется blinkwithoutdelay.

Я дублирую логику первого светодиода на второй и устанавливаю желаемую задержку.

Так что попробуйте и его и избегайте задержек. Я скажу одну заключительную вещь:код, которым я поделился, далек от совершенства, и я подумал о его изменении, но, поскольку это видео предназначено для людей, которые плохо знакомы с Arduino, Я голосовал против.

Код

  • Пример кода
Пример кода Arduino
 const int ledPin =LED_BUILTIN; int ledState =LOW; беззнаковый длинный предыдущийМиллис =0; const long interval =1000; const int ledPin2 =12; int ledState2 =LOW; беззнаковый длинный предыдущийMillis2 =0; const long interval2 =300; void setup () {pinMode (ledPin, ВЫХОД); pinMode (ledPin2, OUTPUT);} void loop () {беззнаковый длинный currentMillis =millis (); если (текущийМиллис - предыдущийМиллис> =интервал) {предыдущийМиллис =текущийМиллис; если (ledState ==LOW) {ledState =HIGH; } еще {ledState =LOW; } digitalWrite (ledPin, ledState); } // завершаем if if (currentMillis - previousMillis2> =interval2) {previousMillis2 =currentMillis; если (ledState2 ==LOW) {ledState2 =HIGH; } еще {ledState2 =LOW; } digitalWrite (ledPin2, ledState2); } // конец, если} 

Схема


Производственный процесс

  1. Как защитить алюминий от коррозии
  2. Изучите облачные вычисления с нуля
  3. 3 причины для перехода с C на C ++
  4. Получить влажность / температуру из Интернета
  5. Проект IoT 101:потоковая температура с вашего Raspberry Pi
  6. Потоковая передача данных датчика с пластины PPDAQC Pi с использованием InitialState
  7. РОБОТ МАЛИНЫ PI WIFI, УПРАВЛЯЕМЫЙ С СМАРТ-ТЕЛЕФОНА ANDROID
  8. Контроль задержки Verilog
  9. Откуда возникла концепция пиления?
  10. Чего ожидать от сериала «Серый каст»?