chtěl bych vytvořit kontrolku z neopixel, která bude signalizovat stavy nejen barvami ale i délkou blikání. Trochu jsem o tom přemýšlel a napadl mne zatím tento kod pro blikání. Kod musí být co nejméně zatěžující pro kod tedy žádné dealy().
Nejprve jsem uvažoval že budu počítat průchod hlavním programem a dle toho budu časovat blikání, bylo by to ale nepřesné i když by to mohlo třeba napovědět něco a průchodu jednotlivými částmi programu. Nakonec jsem ale vsadil na millis(). vytvořil jsem kod a předpokládám, že rozhodně budete mít mnoho lepších nápadů na ten kod, než já a kratších. Proto sem dávám můj návrh, jsou tam dvě smyčky jedna je zakomentovaná pokud se odkomentuje neopixel bliká hodně rychle modrou a pomaleji červenou kupodivu se ty kody neovlivnují i když jsem původně myslel, že to tak bude. Jen je třeba chvilku počkat než to naběhne. Zkusíte někdo napsat kratší kod?
Kód: Vybrat vše
Adafruit_NeoPixel pixels = Adafruit_NeoPixel(1, 3, NEO_GRB + NEO_KHZ800);
unsigned long ms=0;
unsigned long mek=500;
unsigned long tik;
void setup() {
pixels.begin();
Serial.begin(9600);
}
void loop() {
tik=millis();
/*
if (mek>tik){
pixels.setPixelColor(0, pixels.Color(0, 0, 15));
pixels.show();
}
else{
pixels.setPixelColor(0, pixels.Color(0, 0, 0));
pixels.show();
if ((tik-100)>(mek)){mek=mek+200;} }
*/
if (ms>tik ){
pixels.setPixelColor(0, pixels.Color(100, 0,0));
pixels.show();
}
else{
pixels.setPixelColor(0, pixels.Color(0, 0, 0));
pixels.show();
if ((tik-400)>(ms)){ms=ms+800;} }
Serial.print(ms);
Serial.print(" ");
Serial.println(tik);
}