Blikací LED
Napsal: 30 lis 2018, 22:52
Ahoj všem
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?
PS opravil jsem kod měl jsem tam špatně složenou závorku ted to chodí lépe.
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);
}