- UID
- 373967
- 帖子
- 9008
- 主題
- 2609
- 精華
- 0
- 積分
- 1003
- 楓幣
- 0
- 威望
- 980
- 存款
- 35891
- 贊助金額
- 0
- 推廣
- 0
- GP
- 1205
- 閱讀權限
- 70
- 在線時間
- 460 小時
- 註冊時間
- 2023-1-12
- 最後登入
- 2024-12-22
|
Arduino遊戲機是一個非常有趣的 DIY 電子項目,以下是一些基本的零件、連接腳位和程式碼,您可以參考這些來建立自己的遊戲機。
零件:
Arduino UNO 開發板
OLED 顯示屏
搖桿模塊
蜂鳴器
按鈕
連接腳位:
OLED 顯示屏:
SDA:A4
SCL:A5
搖桿模塊:
VRx:A0
VRy:A1
SW:D2
蜂鳴器:D3
按鈕:
按鈕 1:D4
按鈕 2:D5
程式碼:
以下是一個基本的程式碼框架,可以幫助您開始建立自己的遊戲機。
#include <Adafruit_SSD1306.h>
#include <Adafruit_GFX.h>
#include <Wire.h>
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);
int x_axis = A0;
int y_axis = A1;
int button = 2;
int buzzer = 3;
int button1 = 4;
int button2 = 5;
int toneVal = 2000; // 音調的頻率
int durationVal = 100; // 蜂鳴器的持續時間
void setup() {
pinMode(button1, INPUT_PULLUP);
pinMode(button2, INPUT_PULLUP);
pinMode(button, INPUT_PULLUP);
pinMode(buzzer, OUTPUT);
display.begin(SSD1306_SWITCHCAPVCC, 0x3C); // 開啟 OLED 顯示屏
display.clearDisplay(); // 清除顯示屏
display.display(); // 更新顯示屏
}
void loop() {
int x = analogRead(x_axis); // 讀取 x 軸的值
int y = analogRead(y_axis); // 讀取 y 軸的值
int btn = digitalRead(button); // 讀取按鈕的值
if(btn == LOW){
tone(buzzer, toneVal, durationVal); // 播放音效
delay(100); // 延遲一段時間,防止重複觸發
}
if(digitalRead(button1) == LOW){ // 按鈕 1 按下
display.clearDisplay(); // 清除顯示屏
display.setCursor(0,0);
display.println("Button 1 Pressed"); // 顯示按下的按鈕編號
display.display(); // 更新顯示屏
}
if(digitalRead(button2) == LOW){ // 按鈕 2 按下
display.clearDisplay(); // 清除
display.setCursor(0,0);
display.println("Button 2 Pressed"); // 顯示按下的按鈕編號
display.display(); // 更新顯示屏
}
// 控制搖桿方向
if(x < 100){ // 左
display.clearDisplay(); // 清除顯示屏
display.setCursor(0,0);
display.println("Left"); // 顯示方向
display.display(); // 更新顯示屏
}
else if(x > 900){ // 右
display.clearDisplay(); // 清除顯示屏
display.setCursor(0,0);
display.println("Right"); // 顯示方向
display.display(); // 更新顯示屏
}
if(y < 100){ // 上
display.clearDisplay(); // 清除顯示屏
display.setCursor(0,0);
display.println("Up"); // 顯示方向
display.display(); // 更新顯示屏
}
else if(y > 900){ // 下
display.clearDisplay(); // 清除顯示屏
display.setCursor(0,0);
display.println("Down"); // 顯示方向
display.display(); // 更新顯示屏
}
} |
|