冰楓論壇

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

[討論] Arduino Nano開發板

[複製鏈接]

2609

主題

0

好友

992

積分

高級會員

Rank: 4

UID
373967
帖子
8764
主題
2609
精華
0
積分
992
楓幣
2572
威望
969
存款
31556
贊助金額
0
推廣
0
GP
1205
閱讀權限
50
在線時間
451 小時
註冊時間
2023-1-12
最後登入
2024-11-3

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

跳轉到指定樓層
1
發表於 2023-4-1 23:55:14 |只看該作者 |倒序瀏覽
arduino nano製作4位數字時鐘  所需材料  連接腳位  程式碼

製作4位數字時鐘,你需要以下材料:

Arduino Nano開發板
4位7段顯示器
4個共陰極數字管
4個NPN晶體管
4個1K歐姆電阻
連接線
以下是連接腳位:

7段顯示器的a-g、dp腳位分別接到Arduino Nano的D2至D9腳位。
每個7段顯示器的共陰極接到GND腳位。
每個NPN晶體管的基接到Arduino Nano的D10至D13腳位,集電極接到7段顯示器的共陰極,發射極接到GND腳位。
每個1K歐姆電阻分別接到每個NPN晶體管的基和Arduino Nano的D10至D13腳位間。
以下是程式碼:


int digitPins[] = {2, 3, 4, 5}; // 7段顯示器腳位
int segmentPins[] = {6, 7, 8, 9, 10, 11, 12}; // a-g, dp腳位
int digits[][7] = { // 0-9的7段顯示器模式
  {1, 1, 1, 1, 1, 1, 0}, // 0
  {0, 1, 1, 0, 0, 0, 0}, // 1
  {1, 1, 0, 1, 1, 0, 1}, // 2
  {1, 1, 1, 1, 0, 0, 1}, // 3
  {0, 1, 1, 0, 0, 1, 1}, // 4
  {1, 0, 1, 1, 0, 1, 1}, // 5
  {1, 0, 1, 1, 1, 1, 1}, // 6
  {1, 1, 1, 0, 0, 0, 0}, // 7
  {1, 1, 1, 1, 1, 1, 1}, // 8
  {1, 1, 1, 1, 0, 1, 1}  // 9
};
int hours = 12; // 初始值
int minutes = 0; // 初始值
void setup() {
  for (int i = 0; i < 4; i++) {
    pinMode(digitPins[i], OUTPUT);
  }
  for (int i = 0; i < 7; i++) {
    pinMode(segmentPins[i], OUTPUT);
  }
}
void loop() {
  // 顯示小時數字
  int tens = hours / 10;
  int units = hours % 10;
  showDigit(0,

int digitPins[] = {2, 3, 4, 5}; // 7段顯示器腳位
int segmentPins[] = {6, 7, 8, 9, 10, 11, 12}; // a-g, dp腳位
int digits[][7] = { // 0-9的7段顯示器模式
  {1, 1, 1, 1, 1, 1, 0}, // 0
  {0, 1, 1, 0, 0, 0, 0}, // 1
  {1, 1, 0, 1, 1, 0, 1}, // 2
  {1, 1, 1, 1, 0, 0, 1}, // 3
  {0, 1, 1, 0, 0, 1, 1}, // 4
  {1, 0, 1, 1, 0, 1, 1}, // 5
  {1, 0, 1, 1, 1, 1, 1}, // 6
  {1, 1, 1, 0, 0, 0, 0}, // 7
  {1, 1, 1, 1, 1, 1, 1}, // 8
  {1, 1, 1, 1, 0, 1, 1}  // 9
};
int hours = 12; // 初始值
int minutes = 0; // 初始值
void setup() {
  for (int i = 0; i < 4; i++) {
    pinMode(digitPins[i], OUTPUT);
  }
  for (int i = 0; i < 7; i++) {
    pinMode(segmentPins[i], OUTPUT);
  }
}
void loop() {
  // 顯示小時數字
  int tens = hours / 10;
  int units = hours % 10;
  showDigit(0, units);
  delay(5);
  showDigit(1, tens);
  delay(5);
  // 顯示冒號
  showColon();
  delay(500);
  // 顯示分鐘數字
  tens = minutes / 10;
  units = minutes % 10;
  showDigit(2, units);
  delay(5);
  showDigit(3, tens);
  delay(5);
  // 增加1分鐘
  minutes++;
  if (minutes == 60) {
    minutes = 0;
    hours++;
    if (hours == 24) {
      hours = 0;
    }
  }
}
void showDigit(int digit, int number) {
  for (int i = 0; i < 7; i++) {
    digitalWrite(segmentPins[i], digits[number][i]);
  }
  digitalWrite(digitPins[digit], HIGH);
  delayMicroseconds(2500);
  digitalWrite(digitPins[digit], LOW);
}
void showColon() {
  digitalWrite(segmentPins[6], HIGH);
  digitalWrite(digitPins[1], HIGH);
  digitalWrite(digitPins[2], HIGH);
  delay(200)




您可以使用以下材料來構建4位數字時鐘:

Arduino Nano開發板
4位共陽極的7段顯示器
4個NPN電晶體
4個220歐姆電阻
杜邦線
以下是7段顯示器和Arduino Nano板的連接方式:

將共陽極的7段顯示器的a-g, dp引腳分別連接到Arduino Nano板的6-12腳位。
將4個NPN電晶體的基腳分別連接到Arduino Nano板的2-5腳位,並將每個電晶體的集電極接地,然後將每個電晶體的發射極連接到對應的7段顯示器的共陽極。
完成以上連接之後,您可以將上述程式碼複製到Arduino IDE中,然後編譯並上傳到Arduino Nano開發板上。當您啟動開發板時,您應該可以看到一個循環顯示時間的4位數字時鐘。
這段程式碼的作用是在7段顯示器的第二位和第三位之間顯示一個冒號。其中segmentPins[6]是冒號的引腳,digitPins[1]和digitPins[2]是第二位和第三位的引腳,HIGH表示將這些引腳的電位設為高電位,以使這些引腳對應的7段顯示器片段和陽極通電。

至於delay(200)的作用是為了控制冒號的閃爍頻率。因為每200毫秒,這段程式碼將冒號的狀態進行切換,即從亮變為暗,再從暗變為亮,如此反復。這樣做可以讓冒號的亮暗狀態看起來更加自然,且不會一直亮著或者一直暗著。
收藏收藏0 推0 噓0


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

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

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

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

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

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

GMT+8, 2024-11-3 02:15

回頂部