#define segA 11
#define segB 10
#define segC 9
#define segD 8
#define segE 7
#define segF 6
#define segG 5
#define dig1 A3
#define dig2 A2
#define dig3 A1
#define dig4 A0
#define upButton 3
#define downButton 2
int cifras[4];
int count = 0;
void setup() {
pinMode(segA, OUTPUT);
pinMode(segB, OUTPUT);
pinMode(segC, OUTPUT);
pinMode(segD, OUTPUT);
pinMode(segE, OUTPUT);
pinMode(segF, OUTPUT);
pinMode(segG, OUTPUT);
pinMode(dig1, OUTPUT);
pinMode(dig2, OUTPUT);
pinMode(dig3, OUTPUT);
pinMode(dig4, OUTPUT);
pinMode(upButton, INPUT_PULLUP);
pinMode(downButton, INPUT_PULLUP);
cifras[0] = 0;
cifras[1] = 0;
cifras[2] = 0;
cifras[3] = 0;
}
void loop() {
test4();
}
void test1() {
// Test #1: display 0 in digit 4, other digits are off
//=======================================================
digitalWrite(dig1, LOW);
digitalWrite(dig2, LOW);
digitalWrite(dig3, LOW);
digitalWrite(dig4, HIGH);
digitalWrite(segA, LOW);
digitalWrite(segB, LOW);
digitalWrite(segC, LOW);
digitalWrite(segD, LOW);
digitalWrite(segE, LOW);
digitalWrite(segF, LOW);
digitalWrite(segG, HIGH);
}
void test2() {
// Test #2: display 0000
// =======================================================
digitalWrite(segA, LOW);
digitalWrite(segB, LOW);
digitalWrite(segC, LOW);
digitalWrite(segD, LOW);
digitalWrite(segE, LOW);
digitalWrite(segF, LOW);
digitalWrite(segG, HIGH);
digitalWrite(dig1, HIGH);
digitalWrite(dig2, HIGH);
digitalWrite(dig3, HIGH);
digitalWrite(dig4, HIGH);
}
void test3() {
// Test #3: display 1234
// =======================================================
setSegments(1);
digitalWrite(dig1, HIGH);
digitalWrite(dig2, LOW);
digitalWrite(dig3, LOW);
digitalWrite(dig4, LOW);
delay(10);
setSegments(2);
digitalWrite(dig1, LOW);
digitalWrite(dig2, HIGH);
digitalWrite(dig3, LOW);
digitalWrite(dig4, LOW);
delay(10);
setSegments(3);
digitalWrite(dig1, LOW);
digitalWrite(dig2, LOW);
digitalWrite(dig3, HIGH);
digitalWrite(dig4, LOW);
delay(10);
setSegments(4);
digitalWrite(dig1, LOW);
digitalWrite(dig2, LOW);
digitalWrite(dig3, LOW);
digitalWrite(dig4, HIGH);
delay(10);
}
void test4() {
// Test #4: display counting
// =======================================================
setSegments(cifras[3]);
digitalWrite(dig1, HIGH);
digitalWrite(dig2, LOW);
digitalWrite(dig3, LOW);
digitalWrite(dig4, LOW);
delay(10);
setSegments(cifras[2]);
digitalWrite(dig1, LOW);
digitalWrite(dig2, HIGH);
digitalWrite(dig3, LOW);
digitalWrite(dig4, LOW);
delay(10);
setSegments(cifras[1]);
digitalWrite(dig1, LOW);
digitalWrite(dig2, LOW);
digitalWrite(dig3, HIGH);
digitalWrite(dig4, LOW);
delay(10);
setSegments(cifras[0]);
digitalWrite(dig1, LOW);
digitalWrite(dig2, LOW);
digitalWrite(dig3, LOW);
digitalWrite(dig4, HIGH);
delay(10);
if (digitalRead(upButton)==LOW) {
count++;
if (count>9999) count = 9999;
}
if (digitalRead(downButton)==LOW) {
count--;
if (count<0) count=0;
}
cifras[0] = count % 10;
cifras[1] = (count/10) % 10;
cifras[2] = (count/100) % 10;
cifras[3] = (count/1000) % 10;
}
void setSegments(int number) {
digitalWrite(dig1, LOW);
digitalWrite(dig2, LOW);
digitalWrite(dig3, LOW);
digitalWrite(dig4, LOW);
switch(number) {
case 0:
digitalWrite(segA, LOW);
digitalWrite(segB, LOW);
digitalWrite(segC, LOW);
digitalWrite(segD, LOW);
digitalWrite(segE, LOW);
digitalWrite(segF, LOW);
digitalWrite(segG, HIGH);
break;
case 1:
digitalWrite(segA, HIGH);
digitalWrite(segB, LOW);
digitalWrite(segC, LOW);
digitalWrite(segD, HIGH);
digitalWrite(segE, HIGH);
digitalWrite(segF, HIGH);
digitalWrite(segG, HIGH);
break;
case 2:
digitalWrite(segA, LOW);
digitalWrite(segB, LOW);
digitalWrite(segC, HIGH);
digitalWrite(segD, LOW);
digitalWrite(segE, LOW);
digitalWrite(segF, HIGH);
digitalWrite(segG, LOW);
break;
case 3:
digitalWrite(segA, LOW);
digitalWrite(segB, LOW);
digitalWrite(segC, LOW);
digitalWrite(segD, LOW);
digitalWrite(segE, HIGH);
digitalWrite(segF, HIGH);
digitalWrite(segG, LOW);
break;
case 4:
digitalWrite(segA, HIGH);
digitalWrite(segB, LOW);
digitalWrite(segC, LOW);
digitalWrite(segD, HIGH);
digitalWrite(segE, HIGH);
digitalWrite(segF, LOW);
digitalWrite(segG, LOW);
break;
case 5:
digitalWrite(segA, LOW);
digitalWrite(segB, HIGH);
digitalWrite(segC, LOW);
digitalWrite(segD, LOW);
digitalWrite(segE, HIGH);
digitalWrite(segF, LOW);
digitalWrite(segG, LOW);
break;
case 6:
digitalWrite(segA, HIGH);
digitalWrite(segB, HIGH);
digitalWrite(segC, LOW);
digitalWrite(segD, LOW);
digitalWrite(segE, LOW);
digitalWrite(segF, LOW);
digitalWrite(segG, LOW);
break;
case 7:
digitalWrite(segA, LOW);
digitalWrite(segB, LOW);
digitalWrite(segC, LOW);
digitalWrite(segD, HIGH);
digitalWrite(segE, HIGH);
digitalWrite(segF, HIGH);
digitalWrite(segG, HIGH);
break;
case 8:
digitalWrite(segA, LOW);
digitalWrite(segB, LOW);
digitalWrite(segC, LOW);
digitalWrite(segD, LOW);
digitalWrite(segE, LOW);
digitalWrite(segF, LOW);
digitalWrite(segG, LOW);
break;
case 9:
digitalWrite(segA, LOW);
digitalWrite(segB, LOW);
digitalWrite(segC, LOW);
digitalWrite(segD, HIGH);
digitalWrite(segE, HIGH);
digitalWrite(segF, LOW);
digitalWrite(segG, LOW);
break;
}
}