Arduino jest bardzo popularne do budowania projektów i gier hobbystycznych, a wcześniej używaliśmy Arduino do tworzenia gier Snake, gry w ping ponga, wyścigów kosmicznych itp. Dzisiaj budujemy jeszcze jedną popularną grę wykorzystującą Arduino- Buzz gra przewodowa lub Steady hand game.
W tym projekcie użyjemy Arduino Uno, Buzzera i dwóch przewodów aluminiowych. Wyświetlacz LCD 16x2 jest również połączony, aby wyświetlić stan gry. Oba końce przewodu labiryntu zostaną podłączone do pinów cyfrowych 2 i 3 Arduino, a przewód uchwytu jest podłączony do styku uziemienia Arduino. Piny cyfrowe są zdefiniowane jako piny INPUT_PULLUP. Więc kiedy drut uchwytu dotyka drutu labiryntu, zmienia stan pinów cyfrowych na niski, a brzęczyk wydaje dźwięk.
Dioda jest podłączona na końcu przewodu labiryntu, więc kiedy przejdziesz obok tej diody i dotkniesz przewodu labiryntu okrągłym przewodem, tylko jeden pin (pin 3) będzie niski. W takim przypadku na wyświetlaczu LCD zostanie wyświetlony tekst z gratulacjami (Dobra robota).
Wymagane składniki
- Arduino Uno
- Drut aluminiowy
- Wyświetlacz LCD 16x2
- Moduł I 2 C.
- Płytka prototypowa
- Brzęczyk
- Dioda
Schemat obwodu
Schemat obwodu dla Arduino Buzz Wire Game podano powyżej. Piny SCL i SDA modułu I2C są połączone z pinami A5 i A4 Arduino, natomiast pin V CC i GND modułu I2C są połączone z pinami 5V i GND Arduino. Dodatnia szyna Buzzera jest podłączona do cyfrowego pinu 4 Arduino, a ujemna do GND. Wytnij drut aluminiowy i zagnij go w kształt zygzaka. Przylutuj diodę na jednym końcu drutu. Następnie przetnij kolejny drut, aby zrobić uchwyt i zgnij jeden koniec w pętlę.
Wyświetlacz LCD 16x2 może być również połączony z Arduino bez użycia modułu I2C.
Podłącz piny D2 i D3 Arduino do obu końców przewodu Zig-Zag i podłącz przewód uchwytu do styku GND Arduino.
Objaśnienie kodu
Pełny kod dla tej gry Arduino Buzz Wire znajduje się na końcu dokumentu.
Uruchom kod, dołączając plik biblioteki dla modułu LCD. Biblioteka LiquidCrystal_I2C.h służy do komunikacji I2C pomiędzy modułami Arduino i LCD.
#zawierać
Następnie zdefiniuj piny Arduino dla brzęczyka, punkt początkowy przewodu i punkt końcowy przewodu.
const int startPin = 2; const int endPin = 3; const int brzęczyk = 4;
Następnie zdefiniuj dwie zmienne początek i koniec. Te zmienne będą używane do zapisywania odczytów drutu.
int start, end_;
Teraz zdefiniuj styk brzęczyka jako wyjście, a styki przewodów jako INPUT_PULLUP . Arduino posiada wewnętrzne rezystory podciągające o wartości około 20 kΩ. Te rezystory można podłączyć wewnętrznie za pomocą INPUT_PULLUP . Zdefiniowanie INPUT_PULLUP działa tak samo, jak podłączenie rezystora ~ 20 kiloomów między pinem a + 5V.
pinMode (buzzer, OUTPUT); pinMode (startPin, INPUT_PULLUP); pinMode (startPin, INPUT_PULLUP);
W pustej pętli odczytaj stan styków drutu.
start = digitalRead (startPin); end_ = digitalRead (endPin);
Teraz porównaj odczyty szpilek drutu. Jeśli oba styki są niskie, oznacza to, że dotknąłeś przewodu, więc brzęczyk wyda dźwięk, a jeśli styk początkowy przewodu jest wysoki, a kołek końcowy niski, oznacza to, że osiągnąłeś punkt końcowy.
if (start == LOW && end _ == LOW) {digitalWrite (buzzer, WYSOKI); opóźnienie (1000); digitalWrite (buzzer, LOW); lcd.setCursor (0,0); lcd.print ("Spróbuj ponownie"); Serial.print ("Spróbuj ponownie"); } else if (start == HIGH && end _ == LOW) {lcd.setCursor (0,0); lcd.print ("Dobra robota"); Serial.print ("Dobra robota"); }
Testowanie gry Buzz Wire
Po podłączeniu sprzętu i wgraniu podanego kodu możesz rozpocząć zabawę. Więc trzymaj drut z kółkiem w dłoni i spróbuj przeciągnąć drut z okręgiem do diody przylutowany drutem zygzakowatym, nie pozwalając okrągłemu drutowi stykać się gdziekolwiek. Jeśli dotkniesz przewodów, brzęczyk wyda dźwięk, a na wyświetlaczu LCD pojawi się „ Spróbuj ponownie ”. Jeśli ukończysz grę bez dotykania przewodu, pojawi się komunikat „ Dobra robota ”.
W ten sposób możesz stworzyć grę Buzz Wire z Arduino. Działający film i pełny kod podano poniżej.