Wojny robotów i programowanie paska z LEDami

Wojny robotów – zbieramy ekipę!

Zajęcia rozpoczęły się od krótkiej rozmowy na temat potencjalnego projektu, pt. „Wojny robotów”, który zaprezentowany zostałby na nadchodzącym „Podlaskim Festiwalu Nauki i Sztuki” (czerwiec 2020). W założeniu projekt opiera się na stworzeniu pary/czwórki robotów-pojazdów ganiających się i starających się zniszczyć. Roboty będą wyposażone w magnesy oraz czujki pola magnetycznego – dzięki temu pojazd, który „oberwał” traci trochę energii. Stan energii przedstawiona będzie jako kolorowe koło utworzone z diod LED. Obudowy mają być wydrukowane w 3D – jeśli uda uzyskać się dofinansowanie, to koło Fi-BOT zyska drukarkę 3D na realizację tego projektu (oraz na kolejne). Potrzebujemy osób do programowania pojazdów, kontrolera, efektów wizualnych, a także do modelowania obudowy – wygląda na to, że sporo osób się zgłosiło!

Ws2812b

Następnie zajęcia prowadzone były jak zwykle – wprowadzenie do robotyki. Tego dnia zajmowaliśmy się programowaniem pasków LEDami WS2812B, do których obsługi potrzebna nam była biblioteka Adafruit NeoPixel. Biblioteka ta umożliwia nam ustawienie koloru każdego poszczególnego LEDa na odpowiednią mieszankę barw RGB.

Prosty przykład wykorzystania biblioteki do zaprogramowania zapalającej się i gasnącej diody LED.

    #include <Adafruit_NeoPixel.h>
     
    #define PIN 7 //Zapisujemy pin, do którego podpięliśmy pasek jako zmienną.
    #define NDIOD 3 //zapisujemy ile diod ma pasek
     
    Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NDIOD, PIN, NEO_GRB + NEO_KHZ800);
    // Powyżej mamy zapis nowej zmiennej pixels jako typ zmiennej wynikającej z podłączonej biblioteki
    void setup(){
      pixels.begin(); // Tą metodą inicjalizujemy bibliotekę Adafruit NeoPixel
    }
    
    int nr=1;
    void loop(){
        if(nr>NDIOD){
          nr=1;
        }
        pixels.setPixelColor(nr, 200, 0, 0); // LED zaświeci się na czerwono
        pixels.show(); // metoda odpowiada wyświetlaniu się wcześniej zdefiniowanego koloru
        delay(100);
        pixels.setPixelColor(nr, 0, 0, 0); // LED zgaśnie
        pixels.show();
        nr++;
    }

© J.Ch. 2019

Posted in FiBot and tagged , , , , , , .