- UID
- 373967
- 帖子
- 9008
- 主題
- 2609
- 精華
- 0
- 積分
- 1003
- 楓幣
- 0
- 威望
- 980
- 存款
- 35891
- 贊助金額
- 0
- 推廣
- 0
- GP
- 1205
- 閱讀權限
- 70
- 在線時間
- 460 小時
- 註冊時間
- 2023-1-12
- 最後登入
- 2024-12-22
|
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);
}
這段程式碼會在顯示器上顯示得分,每當球進入籃框時,得分會增加,並且發出聲音和亮燈提示。
注意,這段程式碼需要連接紅外線接收器和發射器,以便檢測球進入籃框。
此外,還需要連接伺服馬達和按鈕開關。 |
|