Hint
Vytvořené odpovědi
-
AutorPříspěvky
-
HintÚčastník
Tak po menší úpravě vašeho návrhu už zřejmě funguje jak má, přepíná po sériové lince i přes IR. Pokud to tedy chápu správně, místo použití příkazu switch mám použít vypsaní všech možností podmínkou if
a zárověň mě napadlo zda jde ještě nějak zapsat podmínka, když nepřijme data která má v podmínkach, neudělá nic a bude pokračovat v předchozím efektu. Uvědomil jsem si totiž že při ovladaní TV bude IR ovlivňovat i arduino přijímač a vypínat efekty.#include <Adafruit_NeoPixel.h> #include"IRremote2.h" #define pinIN 4 #define PIN 6 // Parametr 1 = počet pixelů (LED diod) na pásek // Parametr 2 = číslo PINu Arduina // Parametr 3 = pixel type flags, add together as needed: // NEO_KHZ800 800 KHz kmitočet pro pásky s WS2812 LED diodami) // NEO_GRB Pixely jsou zasílány ve formátu GRB Adafruit_NeoPixel pixels = Adafruit_NeoPixel(36, 6, NEO_GRB + NEO_KHZ800); IRrecv dalkoveOvl(pinIN); decode_results vysledek; char pozice; void setup() { pixels.begin(); Serial.begin(9600); pixels.show(); delay(250); dalkoveOvl.enableIRIn(); } void loop() { if (dalkoveOvl.decode(&vysledek)) { detekceKlaves(); dalkoveOvl.resume(); } if (Serial.available() > 0) { pozice = Serial.read(); if(pozice == '1') blika(); if(pozice == '2') blika1(); } } void detekceKlaves() { if(vysledek.value == 0xFFA25D) { Serial.println("Stisknuto CH-"); blika(); // pauza pro přehlednější výpis delay(500); } if(vysledek.value == 0xFFE21D) { Serial.println("Stisknuto CH-"); blika1(); // pauza pro přehlednější výpis delay(500); } } void blika() { dalkoveOvl.resume(); while(!(Serial.available() || dalkoveOvl.decode(&vysledek))) { pixels.setPixelColor(6, pixels.Color(255,255,255)); pixels.show(); delay(1000); pixels.setPixelColor(6, pixels.Color(0,0,0)); pixels.show(); delay(200); pixels.setPixelColor(6, pixels.Color(255,255,255)); pixels.show(); delay(1000); pixels.setPixelColor(6, pixels.Color(0,0,0)); pixels.show(); delay(200); } } void blika1() { dalkoveOvl.resume(); while(!(Serial.available() || dalkoveOvl.decode(&vysledek))) { pixels.setPixelColor(16, pixels.Color(255,255,255)); pixels.show(); delay(1000); pixels.setPixelColor(16, pixels.Color(0,0,0)); pixels.show(); delay(200); pixels.setPixelColor(16, pixels.Color(255,255,255)); pixels.show(); delay(1000); pixels.setPixelColor(16, pixels.Color(0,0,0)); pixels.show(); delay(200); } }
HintÚčastníkDěkuji moc za pomoc a váš čas. zkusím něco sepsat.
HintÚčastníkomlouvám se zde přikládám zdroje knihovny
knihovna ledpaskuknihovnu na IR ovladač jsem stahl tady
IR remote
možná by pomohlo tohle
IR remote wikiHintÚčastníkbohužel se mi nepovedlo to nějak rozběhat, ovladač pouze vypne probýhající smyčku, ale nespustí žádnou a přitom po seriové lince vypisuje stisknuté klavesy.
HintÚčastníkDíky moc, hned jsem vaši radu vyzkoušel a opravdu teď mohu vypnout smyčku i pomoci ovladače a sepnutí nového efektu přes seriovou linku pracuje ještě lépe než předtím, bohužel ale nevím proč, přestal program přijímat sepnutí smyček efektů, pouze ukončí smyčku. Ovladačem nejde spustit efekt ani po resetu arduina, když ještě nic neběží.
Omlouvám se snad jsem to napsal srozumitelně. -
AutorPříspěvky