Arduino'da yeniyim ve kontrol etmeye çalıştığım iki cihazım var:
- Renkleri değiştirebilen bir RGB LED ışık şeridi
- Işık ortam ışığı seviyesini algılayabilen sensör
Yapmak istediğim şey, LED şeridin bir gökkuşağı renkleri arasında sürekli olarak dönmesini sağlamaktır ve ışık sensörü LED'in parlaklığını ayarlar ortam ışık seviyesine göre şerit. İşte kendi başlarına test ettiğim ve düzgün çalıştıklarını doğruladığım iki kod parçası:
LED şerit:
j = (j + 1 )% 256; // ışık döngüsünün geçerli yinelemesi // şerit rengini ayarlayın (int i = 0; i< strip.numPixels (); i ++) {strip.setPixelColor (i, Wheel (((i * 256 / strip.numPixels ()) + j) & 255));} // yeni renkleri göster ve sonraki cyclestrip.show (); delay (20);
Işık sensörü:
sensörler_event_t olayı; tsl.getEvent (&event); // bir ışık ölçüm şeridi alın.setBrightness (event.light); // LED şeridin parlaklığını ayarlayın
Sorun, ışık sensörünün 100 ms ile 600 ms arasında bir okuma alması ve tsl.getEvent (&event) kod> bloke edici bir çağrıdır, bu nedenle sonuç, LED şeridinin çok yavaş güncellenmesidir. Işık sensörünün LED şerit güncellemesini engellememesi için ikisini yan yana çalıştırmam gerekir. Bunu nasıl başaracağım hakkında bir fikriniz var mı?