Arduino 在構建愛好項目和游戲方面非常受歡迎,我們之前使用 Arduino 構建過貪吃蛇游戲、乒乓球游戲、太空競賽游戲等。今天我們正在使用 Arduino- Buzz 線游戲或 Steady 手游戲構建更流行的游戲。
對于這個項目,我們將使用 Arduino Uno、蜂鳴器和兩根鋁線。一個16x2 的 LCD也用于顯示游戲狀態。迷宮線的兩端將連接到 Arduino 的數字引腳 2 和 3,手柄線連接到 Arduino 的接地引腳。數字引腳定義為 INPUT_PULLUP 引腳。所以當手柄線接觸到迷宮線時,數字引腳狀態變為低電平,蜂鳴器發出聲音。
二極管連接在迷宮線的末端,因此當您經過該二極管并用圓形手柄線觸摸迷宮線時,只有一個引腳(引腳 3)會變低。在這種情況下,LCD 上將顯示祝賀文字(做得好)。
所需組件
阿杜諾
鋁線
16x2 液晶
I 2 C 模塊
面包板
蜂鳴器
二極管
電路原理圖
上面給出了 Arduino Buzz Wire Game 的電路圖。I2C 模塊的 SCL 和 SDA 引腳連接到 Arduino 的 A5 和 A4 引腳,而 I2C 模塊的 V CC和 GND 引腳連接到 Arduino 的 5V 和 GND 引腳。蜂鳴器的正軌連接到 Arduino 的數字引腳 4,負軌連接到 GND。切割鋁線并將其彎曲成鋸齒形。在電線的一端焊接一個二極管。然后剪下另一根電線做一個把手,并將一端彎曲成一個環。
16x2 LCD 也可以在不使用 I2C 模塊的情況下與 Arduino連接。
將 Arduino 的 D2 和 D3 引腳連接到 Zig-Zag 線的兩端,并將手柄線連接到 Arduino 的 GND 引腳。
代碼說明
此Arduino Buzz Wire 游戲的完整代碼在文檔末尾給出。
通過包含 LCD 模塊的庫文件開始您的代碼。LiquidCrystal_I2C.h 庫用于 Arduino 和 LCD 模塊之間的 I2C 通信。
#include
之后,定義蜂鳴器的 Arduino 引腳、電線的起點和電線的終點。
常量 int startPin = 2; 常量 int endPin = 3; 常量 int 蜂鳴器 = 4;
然后定義兩個變量start&end_。這些變量將用于保存電線的讀數。
整數開始,結束_;
現在將蜂鳴器引腳定義為輸出,將接線引腳定義為INPUT_PULLUP。Arduino 有內部上拉電阻,其值約為 20k 歐姆。這些電阻可以使用INPUT_PULLUP在內部連接。定義 INPUT_PULLUP 在功能上與在引腳和 +5V 之間連接一個 ~20k 歐姆電阻器相同。
pinMode(蜂鳴器,輸出); pinMode(startPin, INPUT_PULLUP); pinMode(startPin, INPUT_PULLUP);
在void 循環內,讀取線引腳的狀態。
開始 = digitalRead(startPin); end_ = digitalRead(endPin);
現在比較線針的讀數。如果兩個引腳都為低電平,則表示您已經觸摸了電線,因此蜂鳴器會發出聲音,如果電線的起始引腳為高電平,而結束引腳為低電平,則表示您已到達終點。
如果(開始 == 低 && 結束_== 低){ 數字寫入(蜂鳴器,高); 延遲(1000); 數字寫入(蜂鳴器,低); lcd.setCursor(0,0); lcd.print("再試一次"); Serial.print("再試一次"); } else if (start == HIGH && end_== LOW){ lcd.setCursor(0,0); lcd.print("做得好"); Serial.print("做得好"); }
測試 Buzz Wire 游戲
連接硬件并上傳給定代碼后,您就可以開始玩游戲了。因此,將帶有圓圈的電線握在手中,并嘗試將帶有圓圈的電線一直通過曲折線焊接到二極管上,而不要讓圓線接觸任何地方。如果您觸摸電線,則蜂鳴器會發出聲音,LCD 會顯示“再試一次”。如果你在不接觸電線的情況下完成游戲,那么它會顯示“干得好”。
#include
LiquidCrystal_I2C lcd(0x27, 16, 2);
常量 int startPin = 2;
常量 int endPin = 3;
常量 int 蜂鳴器 = 4;
整數開始,結束_;
無效設置(無效)
{
Serial.begin(9600);
液晶顯示器開始();
lcd.clear();
pinMode(蜂鳴器,輸出);
pinMode(startPin, INPUT_PULLUP);
pinMode(startPin, INPUT_PULLUP);
}
無效循環(無效)
{
開始 = digitalRead(startPin);
end_ = digitalRead(endPin);
串行打印(開始);
序列號.print("\n");
Serial.print(end_);
if (start == LOW && end_== LOW ){
digitalWrite(buzzer, HIGH);
延遲(1000);
數字寫入(蜂鳴器,低);
lcd.setCursor(0,0);
lcd.print("再試一次");
Serial.print("再試一次");
}
else if (start == HIGH && end_== LOW){
lcd.setCursor(0,0);
lcd.print("做得好");
Serial.print("做得好");
}
延遲(500);
}
-
蜂鳴器
+關注
關注
12文章
890瀏覽量
45872 -
Arduino
+關注
關注
187文章
6464瀏覽量
186669 -
游戲設計
+關注
關注
0文章
3瀏覽量
2025
發布評論請先 登錄
相關推薦
評論