- UID
- 373967
- 帖子
- 8764
- 主題
- 2609
- 精華
- 0
- 積分
- 992
- 楓幣
- 2572
- 威望
- 969
- 存款
- 31556
- 贊助金額
- 0
- 推廣
- 0
- GP
- 1205
- 閱讀權限
- 50
- 在線時間
- 451 小時
- 註冊時間
- 2023-1-12
- 最後登入
- 2024-11-3
|
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毫秒,這段程式碼將冒號的狀態進行切換,即從亮變為暗,再從暗變為亮,如此反復。這樣做可以讓冒號的亮暗狀態看起來更加自然,且不會一直亮著或者一直暗著。 |
|