Jag är ny på Arduino och jag har två enheter som jag försöker kontrollera:
- En RGB LED-ljusremsa som kan ändra färger
- Ett ljus sensor som kan upptäcka den omgivande ljusnivån
Vad jag skulle vilja göra är att LED-remsan kontinuerligt cyklar genom en regnbågsfärg och ljussensorn justerar ljusstyrkan på LED remsa baserat på den omgivande ljusnivån. Här är de två koderna i sig, som jag har testat isolerat och bekräftat att de fungerar korrekt:
LED-remsa:
j = (j + 1 256%; // aktuell iteration av ljuscykeln // ställer in stripfärgen för (int i = 0; i< strip.numPixels (); i ++) {strip.setPixelColor (i, Wheel (((i * 256 / strip.numPixels ()) + j) & 255));} // visa de nya färgerna och vänta 20 ms innan nästa cykelstrip.show (); fördröjning (20);
Ljussensor:
sensors_event_t händelse; tsl.getEvent (&event); // få en ljusmätstrip.setBrightness (event.light); // ställ in ljusstyrkan på LED-remsan
Problemet är att ljussensorn tar allt från 100ms till 600ms för att få en läsning, och tsl.getEvent (&event)
är ett blockerande samtal, så slutresultatet är att LED-remsan uppdateras alldeles för långsamt. Jag skulle behöva köra de två sida vid sida så att ljussensoravläsningen inte blockerar uppdateringen av LED-remsan. Någon aning om hur jag kan åstadkomma detta?