Điều khiển hiển thị LED 7 Đoạn
Chúng ta sẽ bắt đầu bằng cách tìm hiểu cách hoạt động của màn hình 7 đoạn, học cách điều khiển nó để hiển thị số một cách từng bước. Sau đó, chúng ta sẽ tạo ra một trò chơi, Chỉ cần nhấn một nút, một số ngẫu nhiên từ 1 đến 6 sẽ xuất hiện trên màn hình 7 đoạn.
Kết nối với Arduino:
Code:
// Define the pins connected to the segments of the 7-segment display
int pinA = 2;
int pinB = 3;
int pinC = 4;
int pinD = 5;
int pinE = 6;
int pinF = 7;
int pinG = 8;
// Define the pin connected to the button
int buttonPin = 9;
void setup() {
// Set all pins as outputs
pinMode(pinA, OUTPUT);
pinMode(pinB, OUTPUT);
pinMode(pinC, OUTPUT);
pinMode(pinD, OUTPUT);
pinMode(pinE, OUTPUT);
pinMode(pinF, OUTPUT);
pinMode(pinG, OUTPUT);
// Set the button pin as an input
pinMode(buttonPin, INPUT);
}
void loop() {
// Check if the button is pressed
if (digitalRead(buttonPin) == HIGH) {
// Wait for the button to be released before continuing
while (digitalRead(buttonPin) == HIGH) {
// Generate a random number between 1 and 6
int num = random(1, 7);
// Display the random number on the 7-segment display
displayDigit(num);
// Delay for a short period to allow visible display updates
delay(100);
}
// Add a delay to debounce the button and prevent multiple rapid inputs
delay(500);
}
}
void displayDigit(int digit) {
// Turn off all segments
digitalWrite(pinA, LOW);
digitalWrite(pinB, LOW);
digitalWrite(pinC, LOW);
digitalWrite(pinD, LOW);
digitalWrite(pinE, LOW);
digitalWrite(pinF, LOW);
digitalWrite(pinG, LOW);
// Turn on the segments needed for the desired number (LOW turns on the segments for common cathode)
switch (digit) {
case 1:
digitalWrite(pinB, HIGH);
digitalWrite(pinC, HIGH);
break;
case 2:
digitalWrite(pinA, HIGH);
digitalWrite(pinB, HIGH);
digitalWrite(pinD, HIGH);
digitalWrite(pinE, HIGH);
digitalWrite(pinG, HIGH);
break;
case 3:
digitalWrite(pinA, HIGH);
digitalWrite(pinB, HIGH);
digitalWrite(pinC, HIGH);
digitalWrite(pinD, HIGH);
digitalWrite(pinG, HIGH);
break;
case 4:
digitalWrite(pinB, HIGH);
digitalWrite(pinC, HIGH);
digitalWrite(pinF, HIGH);
digitalWrite(pinG, HIGH);
break;
case 5:
digitalWrite(pinA, HIGH);
digitalWrite(pinC, HIGH);
digitalWrite(pinD, HIGH);
digitalWrite(pinF, HIGH);
digitalWrite(pinG, HIGH);
break;
case 6:
digitalWrite(pinA, HIGH);
digitalWrite(pinC, HIGH);
digitalWrite(pinD, HIGH);
digitalWrite(pinE, HIGH);
digitalWrite(pinF, HIGH);
digitalWrite(pinG, HIGH);
break;
}
}