Добрый день, снова я столкнулся проблемой, недавно спалил ардуино нано подав на нее 12 вольт случайно и решил переделать лампу на LGT8F328P. Загрузил скетч, вроде даже 30 минут поработало нормально пока тестировал энкодер. Но в случайный момент перестало работать: не считывался энкодер и случайно переходит в состояние, когда он постоянно перезагружается.
Не могу понять в чем проблема: В коде, В питании, В браке платки?
PS Пробовал и на 5 вольтах, 4.6 дал в надежде на чудо и по совету gpt
Не могу понять в чем проблема: В коде, В питании, В браке платки?
PS Пробовал и на 5 вольтах, 4.6 дал в надежде на чудо и по совету gpt
Скетч:
#include <FastLED.h>
#define LED_PIN 5 // пин
#define LED_NUM 60 // количество светодиодов
CRGB leds[LED_NUM];
#include <EncButton.h>
#define STEP 18
#define CLK 6
#define DT 4
#define SW 2
#define COLORSTEP 4
EncButton enc(CLK,DT,SW);
bool isBrightMode = true;
static uint32_t tmr;
bool isWhiteMode = true;
int saveLight = 128;
int colorOffset = 128;
int memoryBright = saveLight;
int bright = saveLight;
void applyColor() {
CHSV color = CHSV(colorOffset, isWhiteMode?0:255, bright);
fill_solid(leds, LED_NUM, color);
FastLED.setBrightness(bright);
FastLED.show();
}
void setup() {
Serial.begin(9600);
// put your setup code here, to run once:
colorOffset = 128;
isWhiteMode = true;
isBrightMode = true;
bright = saveLight;
Serial.println("INIT: ");
FastLED.addLeds<WS2812, LED_PIN, GRB>(leds, LED_NUM);
applyColor();
}
void colorOffsetPlus(){
colorOffset = (colorOffset + STEP/COLORSTEP) % 256;
applyColor();
Serial.print("colorOffset: "); Serial.println(colorOffset);
}
void colorOffsetMinus(){
colorOffset = (colorOffset - STEP/COLORSTEP) % 256;
applyColor();
Serial.print("colorOffset: "); Serial.println(colorOffset);
}
void brightPlus(){
bright = constrain(bright+STEP,0,255);
applyColor();
Serial.print("Bright: "); Serial.println(bright);
}
void brightMinus(){
bright = constrain(bright-STEP,0,255);
applyColor();
Serial.print("Bright: "); Serial.println(bright);
}
void loop() {
enc.tick();
if(enc.hasClicks(1)){
isBrightMode = !isBrightMode;
Serial.print("isBrightMode: "); Serial.println(isBrightMode);
}
if(enc.hasClicks(2)){
isWhiteMode = !isWhiteMode;
Serial.print("isWhiteMode: "); Serial.println(isWhiteMode);
applyColor();
}
if(isBrightMode){
if(enc.right()){
brightPlus();
}
if(enc.left()){
brightMinus();
}
}
else{
if(enc.right()){
colorOffsetPlus();
}
if(enc.left()){
colorOffsetMinus();
}
}
if (enc.right()) {
Serial.println("RIGHT");
}
if (enc.left()) {
Serial.println("LEFT");
}
if (enc.press()) {
Serial.println("PRESS");
}
if (millis() - tmr > 500) {
tmr = millis();
Serial.println("loop alive");
}
}




