Powrót do strony głównej

Gra reakcyjna na ATmega32 dla dwóch graczy

Druga wersja reakcyjnego gadżetu na ATmega32 dodaje trzy LED na gracza, licznik do trzech i animację. Opisano schemat, lutowanie, logikę firmware i porównanie z prototypem na ATmega328P. Nadaje się dla middle/senior embedded-developerów.

DIY reaktor na ATmega32: ulepszenia i schemat
Advertisement 728x90

Ulepszony dwuosobowy reaktor na ATmega32: od prototypu do seryjnej produkcji

Twórcy systemów wbudowanych często zaczynają od prostych prototypów na ATmega328P, ale aby zwiększyć skalę, przechodzą na mocniejsze mikrokontrolery, takie jak ATmega32. Druga wersja symulatora reakcji dla dwóch graczy wykorzystuje właśnie ten układ: zwiększono liczbę wskaźników, dodano animację i licznik do trzech zwycięstw. Lutowanie wykonano pastą z topnikiem, płytka wymaga obróbki końcowej dla czystości — optymalne metody obejmują alkohol izopropylowy z kąpielą ultradźwiękową lub specjalistyczne środki do usuwania topnika.

Geometria breloka została zachowana w kompaktowej formie do noszenia w kieszeni. Na przedniej stronie znajduje się nadruk serduszek jako wskaźników punktów, na tylnej — logo projektu.

Wizualizacja i część sprzętowa

Każdy gracz otrzymał po trzy diody LED pod przyciskiem: niebieskie dla pierwszego, czerwone dla drugiego. Centralna zielona dioda LED sygnalizuje start. Schemat jest dostępny w plikach Gerber projektu, wizualizacja 3D potwierdza ergonomię.

Google AdInline article slot

![Projekt PCB](./images/image-4.jpg)

![Render 3D przedniej strony](./images/image-5.PNG)

![Render 3D tylnej strony](./images/image-6.PNG)

Google AdInline article slot

![Pełny schemat](./images/image-7.png)

Logika gry i oprogramowanie

Gra realizuje reakcję na bodziec wizualny z losowym opóźnieniem. Oprogramowanie na ATmega32 zarządza:

  • Migającą zieloną diodą LED do przygotowania.
  • Rejestracją pierwszego naciśnięcia przycisku.
  • Animacją migających diod LED po zakończeniu rundy.
  • Licznikiem zwycięstw do trzech.

Zasady w pseudokodzie:

Google AdInline article slot
  • while (gra_nie_rozpoczęta) { migaj(zielona_dioda_LED, losowe_opóźnienie); }
  • opóźnienie(losowe(100-500ms)); zapal(zielona_dioda_LED);
  • if (przycisk1_naciśnięcie < przycisk2_naciśnięcie) { punkt1++; animacja(niebieskie_diody_LED); } else { punkt2++; animacja(czerwone_diody_LED); }
  • if (punkty1 == 3 || punkty2 == 3) { animacja_końcowa(); reset(); }

Oprogramowanie zoptymalizowano pod kątem niskiego zużycia energii, timery AVR zapewniają precyzję opóźnień bez blokowania.

Porównanie wersji

| Parametr | Wersja 1 (ATmega328P) | Wersja 2 (ATmega32) |

|----------|-----------------------|---------------------|

| LED na gracza | 1 | 3 |

| Licznik | Do 1 | Do 3 |

| Animacja | Brak | Efekty migania |

| Nadruk | Brak | Pełny (serduszka, logo) |

| Lutowanie | Podstawowe | Pasta + topnik |

Przejście na ATmega32 dało więcej pinów do rozszerzenia, 32 KB Flash w porównaniu do 32 KB w 328P, ale z lepszą peryferią.

Zalecenia dotyczące montażu

  • Użyj pasty lutowniczej 0,5 mm dla komponentów SMD.
  • Po lutowaniu: czyszczenie w kąpieli ultradźwiękowej z 99% izopropanolem przez 5–10 min.
  • Testuj czasy oscyloskopem: opóźnienie powinno być równomiernie losowe.
  • Do programowania: avrdude z USBasp, fuse-bity dla wewnętrznego oscylatora 16 MHz.

Rozszerzenie: dodaj brzęczyk dla sprzężenia zwrotnego dźwiękowego lub Bluetooth dla wyników w aplikacji.

Co jest ważne

  • Skalowanie prototypu: Od jednej diody LED do trzech z animacją zwiększa zaangażowanie bez komplikowania schematu.
  • Zalety ATmega32: Więcej GPIO, UART do debugowania, nadaje się do wielu graczy.
  • Lutowanie SMD: Czyszczenie topnika jest kluczowe dla trwałości; unikaj no-clean bez obróbki końcowej.
  • Czasy reakcji: Losowe opóźnienie 100–500 ms imituje rzeczywiste scenariusze.
  • Struktura oprogramowania: Pętle nieblokujące na timerach dla responsywności.

— Editorial Team

Advertisement 728x90

Czytaj dalej