冰楓論壇

 找回密碼
 立即註冊
搜索
查看: 670|回覆: 0
打印 上一主題 下一主題

[討論] ATtiny10投籃機

[複製鏈接]

2609

主題

0

好友

1003

積分

金牌會員

Rank: 6Rank: 6

UID
373967
帖子
9008
主題
2609
精華
0
積分
1003
楓幣
0
威望
980
存款
35891
贊助金額
0
推廣
0
GP
1205
閱讀權限
70
在線時間
460 小時
註冊時間
2023-1-12
最後登入
2024-12-22

2023端午節紀念勳章 2023中秋節紀念勳章 2023聖誕節紀念勳章

跳轉到指定樓層
1
發表於 2023-4-23 14:16:32 |只看該作者 |倒序瀏覽
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);
}



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

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

此外,還需要連接伺服馬達和按鈕開關。
收藏收藏0 推0 噓0


把本文推薦給朋友或其他網站上,每次被點擊增加您在本站積分: 1鑰匙
複製連結並發給好友,以賺取推廣點數
簡單兩步驟,註冊、分享網址,即可獲得獎勵! 一起推廣文章換商品、賺$$
高級模式
B Color Image Link Quote Code Smilies |上傳

廣告刊登意見回饋關於我們管群招募本站規範DMCA隱私權政策

Copyright © 2011-2024 冰楓論壇, All rights reserved

免責聲明:本網站是以即時上載留言的方式運作,本站對所有留言的真實性、完整性及立場等,不負任何法律責任。

而一切留言之言論只代表留言者個人意見,並非本網站之立場,用戶不應信賴內容,並應自行判斷內容之真實性。

小黑屋|手機版|冰楓論壇

GMT+8, 2024-12-22 13:40

回頂部