洪嵐峰 發表於 2023-4-1 23:55:14

Arduino Nano開發板

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[] = { // 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, OUTPUT);
  }
  for (int i = 0; i < 7; i++) {
    pinMode(segmentPins, 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[] = { // 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, OUTPUT);
  }
  for (int i = 0; i < 7; i++) {
    pinMode(segmentPins, 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, digits);
  }
  digitalWrite(digitPins, HIGH);
  delayMicroseconds(2500);
  digitalWrite(digitPins, LOW);
}
void showColon() {
  digitalWrite(segmentPins, HIGH);
  digitalWrite(digitPins, HIGH);
  digitalWrite(digitPins, 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是冒號的引腳,digitPins和digitPins是第二位和第三位的引腳,HIGH表示將這些引腳的電位設為高電位,以使這些引腳對應的7段顯示器片段和陽極通電。

至於delay(200)的作用是為了控制冒號的閃爍頻率。因為每200毫秒,這段程式碼將冒號的狀態進行切換,即從亮變為暗,再從暗變為亮,如此反復。這樣做可以讓冒號的亮暗狀態看起來更加自然,且不會一直亮著或者一直暗著。
頁: [1]
查看完整版本: Arduino Nano開發板