Arduino – flagi bitowe

flagPamiętacie jak miesiąc temu wspominałem o flagach bitowych w javie? Arduino jest właśnie świetnym przykładem możliwości ich wykorzystania. Mamy tutaj ograniczoną pamięć, dlatego w prosty sposób można zoptymalizować jej zużycie.

Cel jest taki aby stany wszystkich diod przechowywać w jednej zmiennej zamiast wykorzystywania tablicy.

Ok,  krótki przykład: sterujemy czterema diodami pamiętając ich stan po każdej zmianie.

Definiujemy piny:

Następnie dla każdego pinu definiujemy flagi bitowe w postacie kolejnych potęg liczby 2:

Funkcja setup():

Manipulację i odczyt stanów można zaimplementować w trzech podstawowych operacjach przyjmując w argumencie zmienną liczbową pins, w której można zakodować binarnie kilka numerów diod według wcześniej zdefiniowanych flag, np:

  • dioda pierwsza:
    pins = FLAG[0]
  • dioda druga i czwarta:
    pins = FLAG[1] | FLAG[3]
  • dioda pierwsza, trzecia i czwarta:
    pins = FLAG[0] | FLAG[2] | FLAG[3]

Definicja i odczyt stanów sprowadza się do następujących operacji bitowych:

  1. Włączenie diod
  2. Wyłączenie diod
  3. Sprawdzenie czy dioda jest włączona

     

Funkcja aktualizacji stanów diod:

Funkcje do manipulacji stanami:

Główny program

Algorytm programu jest następujący:

  1. Zaświeć diodę pierwszą i trzecią
  2. Zaświeć diodę druga i czwartą
  3. Zaświeć diodę pierwszą i drugą
  4. Zaświeć diodę trzecią i czwartą

Jednocześnie mogą się świecić tylko dwie diody z każdego punktu.

Definicja stanów:

I pętla wysyłająca sygnały:

Cały program:

 

Wykorzystanie flag bitowych idealnie pasuje pod ostatni wpis związany ze zdalnym sterowaniem diodami led, gdzie konieczne jest zapamiętanie ostatniego stanu.

To również może Cię zainteresować:

  • Arduino ‚Hello World’ – pierwszy programArduino ‚Hello World’ – pierwszy program Dotarła do mnie w czwartek przesyłka z Botlandu z zestawem od ElektroPrzewodnika dlatego od razu po pracy postanowiłem zmontować prosty układ i napisać do niego program. Migające diody […]
  • Arduino – przyciski i szeregowy monitorArduino – przyciski i szeregowy monitor W drugim dniu zabawy z Arduino postanowiłem przede wszystkim wykonać coś do odczytu wejść. Zmontowałem układ realizujący dwa cele: Wysyłka informacji do komputera przez szeregowy […]
  • Trochę elektroniki – od czego zacząć?Trochę elektroniki – od czego zacząć? Korzystając z ostatniego dnia promocji w ebookpoint.pl kupiłem sobie książkę: "Arduino. 65 praktycznych projektów" Johna Boxalla za zaledwie 32,99 zł. Tym samym rozpoczynam swoją przygodę […]
  • Arduino – zdalne sterowanie za pomocą podczerwieni. Własne klasyArduino – zdalne sterowanie za pomocą podczerwieni. Własne klasy Ponieważ w ostatnich dwóch dniach nauczyłem się zarówno wysyłać jak i odbierać cyfrowe sygnały postanowiłem wykonać układ na którego realizację czekałem jeszcze przed zakupem […]
  • KAmduino UNO – polskie Arduino za 50 zł!KAmduino UNO – polskie Arduino za 50 zł! Dzięki uprzejmości firmy Kamami.pl miałem okazję przed chwilą przetestować polskie Arduino - KAmduino UNO. Przyznam, że uruchomienie układu z przykładowym programem zajęło mi dosłownie […]
  • Adafruit Flora – Flora RGB Smart NeoPixel v.2Adafruit Flora – Flora RGB Smart NeoPixel v.2 Drugi wpis z serii Adafruit Flora rozpoczynam od podstaw, czyli obsługi diod RGB (w które zaopatrzyłem się w kamami.pl). Smart NeoPixel, to moduły z diodami LED RGB zaprojektowane […]

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *