Arduino – flagi bitowe

UWAGA, ruszył Humble Book Bundle na serię Cookbok wydawnictwa O'REILLY

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.

UWAGA, ruszył Humble Book Bundle na serię Cookbok wydawnictwa O'REILLY

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