Untitled
unknown
plain_text
a year ago
2.0 kB
5
Indexable
byte D1 = 9;
byte D2 = 10;
byte D3 = 11;
byte D4 = 12;
byte A = 2;
byte B = 3;
byte C = 4;
byte D = 5;
byte E = 6;
byte F = 7;
byte G = 8;
// Define the input pins for the 7-segment display segments.
const int segmentPins[] = {A, B, C, D, E, F, G};
// Define the input pins for the 7-segment display digits.
const int digitPins[] = {D1, D2, D3, D4};
const byte digitSegmentsByte[] = {
0b11111110, // 0
0b01100000, // 1
0b11011010, // 2
0b11110010, // 3
0b01100110, // 4
0b10110110, // 5
0b10111110, // 6
0b11100000, // 7
0b11111110, // 8
0b11110110 // 9
};
// For common cathode
uint8_t digitON = LOW;
uint8_t digitOFF = HIGH;
uint8_t segmentON = HIGH;
uint8_t segmentOFF = LOW;
int digits[4];
void setup() {
randomSeed(analogRead(A0));
//splitNumberToDigits(1234, digits);
splitNumberToDigits(getRandomNumber(), digits);
// Pin initialization
for (int i = 0; i < 8; i++) {
pinMode(segmentPins[i], OUTPUT);
}
for (int i = 0; i < 4; i++) {
pinMode(digitPins[i], OUTPUT);
digitalWrite(digitPins[i], digitOFF);
}
}
void loop()
{
for(int i = 0; i < 4; i++) {
for(int j = 0; j < 7; j++) {
digitalWrite(segmentPins[j], bitRead(getDigitSegmentsByte(digits[i]), 7 - j) == 1 ? segmentON: segmentOFF);
}
digitalWrite(digitPins[i], digitON);
delay(10);
digitalWrite(digitPins[i], digitOFF);
}
}
byte getDigitSegmentsByte(int digit) {
if (digit >= 0 && digit <= 9) {
return digitSegmentsByte[digit];
} else {
return digitSegmentsByte[0];
}
}
void splitNumberToDigits(int number, int digits[4]) {
number = abs(number);
if (number == 0) {
digits[0] = digits[1] = digits[2] = digits[3] = 0;
return;
}
for (int i = 0; i < 4; i++) {
digits[i] = 0;
}
int index = 3;
while (number > 0 && index >= 0) {
digits[index--] = number % 10;
number /= 10;
}
}
int getRandomNumber() {
return random(0, 10000);
}Editor is loading...
Leave a Comment