Всем привет. Я программист 0 уровня, могу только повторять проекты.
Решил попробовать сделать сыну ночник из одного светодиода WS2812. Получилось, но не до конца правильно. Первых 3 режима отрабатывает нормально, а на 4 режиме (mode 3) после захода в цикл перестает реагировать кнопка и этот режим становится вечным. Пересмотрел кучу примеров, не помогло.
Пробовал переделать эту конструкцию на миллис, но не хватает знаний.
Помогите пожалуйста поправить код до рабочего или переписать эту конструкцию на миллис!
Решил попробовать сделать сыну ночник из одного светодиода WS2812. Получилось, но не до конца правильно. Первых 3 режима отрабатывает нормально, а на 4 режиме (mode 3) после захода в цикл перестает реагировать кнопка и этот режим становится вечным. Пересмотрел кучу примеров, не помогло.
Пробовал переделать эту конструкцию на миллис, но не хватает знаний.
Помогите пожалуйста поправить код до рабочего или переписать эту конструкцию на миллис!
Nochnik:
//mAqua mYellow mRed mBlue mGreen mGray mWhite mSilver
//mMaroon mOrange mOlive mLime mTeal mNavy mMagenta mPurple
#define STRIP_PIN 3 // пин ленты
#define NUMLEDS 1 // кол-во светодиодов
#include <microLED.h> // подключаем библу
microLED<NUMLEDS, STRIP_PIN, MLED_NO_CLOCK, LED_WS2812, ORDER_GRB> strip;
//--------------------------кнопка-----------------------------
#include <EncButton.h>
EncButton<EB_TICK, 9> btn;
//---------------------------------------------------------------
int mode = 0 ;
void setup() {
strip.setBrightness(100); // (0-255)
strip.clear(); // .show() !
strip.show(); // вывод
delay(1); // минимум 40 мкс
}
void loop() {
btn.tick();
if (btn.click()) {
mode++;
}
if (mode > 3) {
mode = 0;
}
if (mode == 0) {
strip.set(0, mHEX(0xFF00FF));
strip.show(); // вывод изменений на ленту
delay(1);
}
if (mode == 1) {
strip.set(0, mHEX(0x00FF00));
strip.show(); // вывод изменений на ленту
delay(1);
}
if (mode == 2) {
strip.set(0, mHEX(0xFFFFFF));
strip.show(); // вывод изменений на ленту
delay(1);
}
if (mode == 3) {
for (uint8_t j = 0; j < 255; j = j + 40) {
btn.tick();
for (int i = 0; i < 255; i++) {
strip.set(0, mWheel8(j, i));
strip.show();
delay(20);
}
for (int i = 255; i > 0; i--) {
strip.set(0, mWheel8(j, i));
strip.show();
delay(10);
}
}
}
}