Untitled
unknown
plain_text
4 months ago
2.0 kB
3
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