Официальный сайт компании Arduino по адресу arduino.cc
Различная длительность горения лампочки на ргб ленте.
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Пт, 18/09/2020 - 13:51
Есть простенький код светофора с 6 лампочками, написанный моими кривыми руками. На сериал порт поступает циферка. она трансформируется в количество времени необходимое для горения сигналов. Необходимо заставить лампочку на ргб гореть именно это время.
Как я не изгалялся с millis, ничего не получилось, а delay() не работает с переменными.
Помогите, пожалуйста. Как заставить лампочку гореть определенное время?
#include "FastLED.h" #define NUM_LEDS 8 #define DATA_PIN 3 #define RED 0xFF0000 #define GREEN 0x00FF00 #define YELLOW 0xFF4400 #define BLACK 0x000000 // Степень гашения яркости (кратно четвертям от 256, т.е. 0, 64, 128, 256) // Массив светодиодов (знакомест) CRGB leds[NUM_LEDS]; int timing; int M; int KV; void setup() { delay(1000); // Защитный интервал для начального сброса контроллеров ленты Serial.begin(9600); FastLED.addLeds<NEOPIXEL, DATA_PIN>(leds, NUM_LEDS); } void loop() { if (Serial.available() > 0) { M = Serial.parseInt(); Serial.println(M); } KV = ((5+(M*3))*1000); Serial.println(KV); //---------------------------- leds[0]=RED; leds[5] = GREEN; FastLED.show(); timing = millis(); delay(kv); while (millis() - timing < KV){} leds[0]=BLACK; leds[5] = BLACK; FastLED.show(); leds[1]= YELLOW; leds[4]= YELLOW; FastLED.show(); delay(3000); leds[4]=BLACK; leds[1] = BLACK; FastLED.show(); //----------------------------- leds[2]=GREEN; leds[3] = RED; FastLED.show(); timing = millis(); while (millis() - timing < KV){} leds[2]=BLACK; leds[3] = BLACK; FastLED.show(); leds[1]= YELLOW; leds[4]= YELLOW; FastLED.show(); delay(3000); leds[4]=BLACK; leds[1] = BLACK; FastLED.show(); }
помимо того, что вы неправильно работаете со временем - этот код даже компилироваться не будет.
И что значит "delay() не работает с переменными" ? - у меня работает
Ну не знаю, у меня компилируется, если delay(kv) убрать.
Собственно, если написать delay(kv) (делей и переменная,)
То будет это. Т.е. нельзя. Или я что-то не понял наверно.
УПС. Я идиот. Несколько недель тупил, из-за того что KV написал с маленьких букв.
Лооол.
Извиняюсь.