Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- byte ledMap[10][7] = {
- { 1,1,1,1,1,1,0 },
- { 0,1,1,0,0,0,0 },
- { 1,1,0,1,1,0,1 },
- { 1,1,1,1,0,0,1 },
- { 0,1,1,0,0,1,1 },
- { 1,0,1,1,0,1,1 },
- { 1,0,1,1,1,1,1 },
- { 1,1,1,0,0,0,0 },
- { 1,1,1,1,1,1,1 },
- { 1,1,1,0,0,1,1 }
- };
- // digit which is being displayed on the seven-segment display
- byte currentDigit = 0;
- // how much should we increment in each second
- int inc = 0;
- void setup() {
- Serial.begin(9600);
- for (byte pin = 2; pin <= 9; pin++) {
- pinMode(pin, OUTPUT);
- }
- }
- void write(byte digit) {
- for (byte pin = 0; pin < 7; pin++) {
- digitalWrite(pin + 2, ledMap[digit][pin]);
- }
- currentDigit = digit;
- }
- void clear() {
- for (byte pin = 0; pin < 7; pin++) {
- digitalWrite(pin + 2, 0);
- }
- }
- void loop() {
- if (Serial.available()) {
- byte input = Serial.read();
- switch(input) {
- case 'u': // up counter
- inc = 1;
- break;
- case 'd': // down counter
- inc = -1;
- break;
- case 'c': // clear
- clear();
- break;
- case '+': // increment by one
- write((currentDigit + 1) % 10);
- break;
- case '-': // decrement by one
- write((currentDigit + 9) % 10);
- break;
- default:
- if (input >= '0' && input <= '9')
- write(input - '0');
- break;
- }
- }
- else {
- if (inc != 0) {
- byte next = (currentDigit + 10 + inc) % 10;
- write(next);
- delay(1000);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement