冰楓論壇

標題: Arduino遊戲機 [打印本頁]

作者: 洪嵐峰    時間: 2023-3-30 06:04
標題: Arduino遊戲機
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(); // 更新顯示屏
}
}




歡迎光臨 冰楓論壇 (https://bingfong.com/) Powered by 冰楓