INFORMACJA: Poniższy post nie wydostał się z Poczekalni :(
Witam. Jestem nowym użytkownikiem tego serwisu i chciałbym od razu podzielić się czymś co sam zrobiłem. Jest to pierwszy projekt elektroniczny jaki wykonałem, więc proszę nie szczędzić od uwag, dzięki którym będę wiedział co powinienem robić lepiej. Przejdźmy do rzeczy:
Projekt o nazwie „LED Fight”, to autorska gra zręcznościowa dla dwóch osób. Jest to moja własna koncepcja, ale oczywiście przy jej realizacji czerpałem wiedzę z wielu źródeł. Zasadę działania gry najlepiej opisać słowem „przepychanka”. Do dyspozycji mamy 11 pól do walki. Gracze ustawiają się naprzeciw sobie. Gdy gra się rozpoczyna, pola walki ustawione są w pozycji startowej. Oznacza to, że gracze posiadają po swojej stronie po tyle samo własnych pól, a środkowe pole jest polem starcia. Przykładowo gracz zielony posiada po swojej stronie 5 zielonych pól, gracz niebieski, po swojej stronie 5 niebieskich pól, a środkowe pole jest koloru turkusowego (wynika z połączenia zielonego z niebieskim). Celem gry jest zdobycie wszystkich pól. Aby to osiągnąć, każdy z graczy ma do dyspozycji swój pad z dwoma przyciskami. Przycisk lewy (zielony) odpowiada za zbieranie bonusów, przycisk prawy (czerwony) odpowiada za walkę o pola. Po starcie gracze powinni jak najszybciej naciskać przyciski walki. Jeśli, któryś z graczy będzie naciskał odpowiednio szybciej niż przeciwnik, zyska pole. Oprócz tego w grze funkcjonuje pole bonusowe. Pole to może przyjąć trzy kolory reprezentujące bonus możliwy do zebrania przez graczy poprzez naciśnięcie przycisku zbierania bonusów na swoim padzie. Pierwszy bonus, koloru czerwonego, jest bonusem odejmującym. W przypadku jego zebrania tracimy natychmiast jedno pole. Drugi bonus, koloru zielonego, to bonus dodający. Analogicznie do poprzedniego, jego zebranie skutkuje uzyskaniem natychmiast jednego pola. Trzeci bonus, koloru niebieskiego, jest tak zwanym bonusem relaksu. Jego zebranie powoduje, że gracz, który go uzyskał może odpocząć od walki przez określoną ilość czasu, podczas gdy przeciwnik nieprzerwanie musi walczyć, by utrzymać pozycję. Informacja o tym, który z graczy zebrał bonus relaksu znajduje się na dedykowanym dla każdego gracza polu, umiejscowionym po jego stronie. Kiedy gracz zbierze ten bonus, pole to zapala się na niebiesko. Gra trwa tak długo, aż jeden z graczy nie uzyska wszystkich pól, włącznie z polem środkowym.
Opis tego co znajduje się na płytce:
- Diody informujące o zebraniu bonusu relaksu
- Dioda bonusów
- Pola walki
- Rejestry przesuwne 74HC595
- Mikrokontroler ATmega8A
- Moduł zasilania ze stabilizatorem 7805
- Złącze zasilania
- Złącze programatora ISP
- Złącze pada gracza 2
- Złącze pada gracza 1
- Wyprowadzenie kanału pomiarowego ADC
- Złącze wyświetlacza LCD
- Potencjometr kontrastu wyświetlacza LCD
Użyte elementy elektroniczne:
- Mikrokontroler ATmega8A – jednostka sterująca
- Rezystory :
- 10 kΩ (x1) – rezystor podciągający pin RST, mikrokontrolera ATmega8 do VCC
- 100 Ω (x26) – rezystory ograniczające prąd płynący przez diody, dopasowane do koloru niebieskiego i zielonego
- 150 Ω (x1) – rezystor ograniczający prąd płynący przez diodę koloru czerwonego
- Kondensatory elektrolityczne :
- 10 µF (x2) – magazynowanie energii
- 100 µF (x1) – redukcja tętnień napięcia
- 47 µF (x1) – magazynowanie energii
- Kondensatory ceramiczne/tantalowe :
- 100 nF (x3) – filtrowanie zakłóceń
- 100 nF (x1) – kondensator ustalający napięcie odniesienia dla ADC
- 330 nF (x1) – filtrowanie zakłóceń
- Potencjometr 10 kΩ (x1) – regulacja kontrastu wyświetlacza LCD
- 8-bitowe rejestry przesuwne 74HC595 (x3) – obsługa większej ilości diod LED
- Stabilizator napięcia L7805CV – stabilizacja napięcia wejściowego na 5 V
- Złącze śrubowe dwupinowe – podłączenie zasilania
- Goldpiny – do połączenia programatora, padów i wyświetlacza LCD
- Taśma łączeniowa – podłączenie wyświetlacza LCD
- Podstawki pod układy scalone
Schemat układu:
Ustawienia gry, które można modyfikować wedle uznania:
- Liczba pól
Dostępne opcje [3, 5, 7, 9, 11]
Określa ile pól wykorzystywanych jest podczas rozgrywki. Maksymalna liczba pól do wykorzystania to 11. Przy wybraniu mniejszej wartości pomijane pola pozostają nieaktywne.
Domyślna wartość : 11. - Czułość padów
Dostępne opcje [1, 2, 3, 4]
Określa jak duża musi być różnica pomiędzy ilością przyciśnięć klawisza walki, aby zyskać jedno pole. Przykładowo, jeżeli parametr ten jest równy 1, aby zdobyć jedno pole, gracz musi nacisnąć przycisk walki tylko raz, zakładając, że w tym czasie przeciwnik nie naciska. Kiedy parametr ten wynosi 4, aby zdobyć pole, należy nacisnąć 4 razy. Każde naciśnięcie przycisku przez przeciwnika w czasie kompletowania 4 przyciśnięć redukuje naliczone przyciśnięcia o 1.
Domyślna wartość : 2 - Częstość bonusów
Dostępne opcje [od 100ms do 2000ms, co 100ms]
Określa, co jaki czas podejmowana jest próba losowa, mogąca potencjalnie wygenerować bonus. O wystąpieniu lub niewystąpieniu bonusu decyduje parametr [Szansa na bonus].
Domyślna wartość : 2000ms. - Szansa na bonus
Dostępne opcje [10%, 11%, 12%, 14%, 16%, 20%, 25%, 33%]
Określa jakie jest prawdopodobieństwo wystąpienia pojedynczego bonusu, podczas podejmowania próby losowej. O częstości podejmowania prób losowych decyduje parametr [Częstość bonusów].
Domyślna wartość : 20%. - Bonus odejmujący
Dostępne opcje [TAK, NIE]
Określa czy podczas rozgrywki bonus odejmujący ma być aktywny. Ustawienie opcji NIE powoduje, że bonus nie będzie generowany.
Domyślna wartość : TAK - Bonus dodający
Dostępne opcje [TAK, NIE]
Określa czy podczas rozgrywki bonus dodający ma być aktywny. Ustawienie opcji NIE powoduje, że bonus nie będzie generowany.
Domyślna wartość : TAK - Bonus relaksu
Dostępne opcje [TAK, NIE]
Określa czy podczas rozgrywki bonus relaksu ma być aktywny. Ustawienie opcji NIE powoduje, że bonus nie będzie generowany.
Domyślna wartość : TAK - Szybkość autoclick
Dostępne opcje [od 100ms do 1000ms, co 20ms]
Określa jaka będzie szybkość sztucznego naciskania, przy zebranym bonusie relaksu. Przykładowo wartość 100ms oznacza, że kiedy gracz zbierze bonus relaksu, jego przeciwnik będzie musiał naciskać przycisk walki co najmniej z szybkością jednego naciśnięcia co 100ms, aby nie stracić pola.
Domyślna wartość : 160ms - Czas autoclick
Dostępne opcje [od 1000ms do 20000ms, co 100ms]
Określa jak długo będzie trwało sztuczne naciskanie, przy zebranym bonusie relaksu. Przykładowo wartość 1000ms oznacza, że kiedy gracz zbierze bonus relaksu, nie będzie musiał sam naciskać przycisku walki przez 1000ms.
Domyślna wartość : 5000ms - Automatyczne wygaszanie bonusu odejmującego
Dostępne opcje [TAK, NIE]
Określa czy bonus odejmujący, będzie automatycznie wyłączany przy następnej próbie losowej, która nie wygeneruje innego bonusu.
Domyślna wartość : TAK
Na koniec krótki filmik, który ma tylko przedstawić zasadę działania:
INFORMACJA: Poniższy post nie wydostał się z Poczekalni :(
Fajna zabawka, złożenie czegoś takiego musi dawać sporo satysfakcji i radochy. Autor zamierza udostępnić kod atmegi :)?
No nie ma co ukrywać jest radocha :) Kod udostępnię, tylko muszę go lekko ogarnąć.
Fajne. …ale ode mnie tylko 4 gwiazdki bo brakuje obudowy, no i te przyciski padów…
Szkoda, że zabrakło samego programu, bo już chciałem przerzucać projekt na Główną. Dodaj kod, to wyciągnę art z kosza :)