洪嵐峰 發表於 2023-4-23 14:16:32

ATtiny10投籃機

ATtiny10投籃機上顯示得分
需要以下零件:

TM1637顯示器模塊
4根杜邦線
連接ATtiny10和TM1637顯示器的腳位如下:

ATtiny10腳位        TM1637顯示器模塊腳位
1        CLK (時鐘腳)
2        DIO (資料腳)
3V        VCC (電源正極)
GND        GND (電源負極)

程式碼如下(使用Arduino IDE編寫):


#include <Servo.h>
#include <TM1637Display.h>

#define CLK 1 // 連接至ATtiny10的CLK腳位
#define DIO 2 // 連接至ATtiny10的DIO腳位

TM1637Display display(CLK, DIO);
Servo myservo;
int ir1 = 5; // 紅外線接收器 1 腳位
int ir2 = 6; // 紅外線接收器 2 腳位
int irled1 = 7; // 紅外線發射器 1 腳位
int irled2 = 8; // 紅外線發射器 2 腳位
int buzzer = 9; // 蜂鳴器腳位
int led1 = 3; // 紅色LED 1 腳位
int led2 = 4; // 紅色LED 2 腳位
int button = 10; // 按鈕開關腳位
int pos = 0; // 伺服馬達的初始位置
int angle = 10; // 每次旋轉的角度
int score = 0; // 得分

void setup() {
  display.setBrightness(0x0f); // 設定顯示器亮度
  myservo.attach(11); // 將伺服馬達連接至腳位 11
  pinMode(ir1, INPUT);
  pinMode(ir2, INPUT);
  pinMode(irled1, OUTPUT);
  pinMode(irled2, OUTPUT);
  pinMode(buzzer, OUTPUT);
  pinMode(led1, OUTPUT);
  pinMode(led2, OUTPUT);
  pinMode(button, INPUT_PULLUP); // 使用內部上拉電阻
}

void loop() {
  if (digitalRead(button) == LOW) { // 如果按鈕被按下
    digitalWrite(irled1, HIGH); // 啟動紅外線發射器 1
    delay(10); // 等待一會兒
    digitalWrite(irled1, LOW); // 關閉紅外線發射器 1
    if (digitalRead(ir1) == HIGH) { // 如果紅外線接收器 1 接收到信號
      digitalWrite(led1, HIGH); // 紅色LED 1 亮燈
      delay(500); //

  digitalWrite(led1, LOW); // 熄滅紅色LED 1
  score++; // 增加得分
  display.showNumberDec(score); // 在顯示器上顯示得分
  tone(buzzer, 500, 100); // 發出嗡嗡聲
}
digitalWrite(irled2, HIGH); // 啟動紅外線發射器 2
delay(10); // 等待一會兒
digitalWrite(irled2, LOW); // 關閉紅外線發射器 2
if (digitalRead(ir2) == HIGH) { // 如果紅外線接收器 2 接收到信號
  digitalWrite(led2, HIGH); // 紅色LED 2 亮燈
  delay(500); // 等待一會兒
  digitalWrite(led2, LOW); // 熄滅紅色LED 2
  score++; // 增加得分
  display.showNumberDec(score); // 在顯示器上顯示得分
  tone(buzzer, 500, 100); // 發出嗡嗡聲
}
}
// 控制伺服馬達旋轉
if (pos == 0) {
angle = abs(angle);
} else if (pos == 180) {
angle = -abs(angle);
}
pos += angle;
myservo.write(pos);
delay(10);
}



這段程式碼會在顯示器上顯示得分,每當球進入籃框時,得分會增加,並且發出聲音和亮燈提示。

注意,這段程式碼需要連接紅外線接收器和發射器,以便檢測球進入籃框。

此外,還需要連接伺服馬達和按鈕開關。
頁: [1]
查看完整版本: ATtiny10投籃機