void setup() {
for (int pin = 2; pin <= 13; pin++) pinMode(pin, OUTPUT);
pinMode(13, INPUT);
Serial.begin(9600);
}
void loop() { //Debe haber un orden
digitalWrite(12, HIGH);
delayMicroseconds(10);
digitalWrite(12, LOW);
int tiempo = pulseIn(13, HIGH);
int distancia = tiempo / 58;
//Serial.println(distancia); //para q se pueda ver el numero
int centena = distancia / 100;
int decena = (distancia / 10) % 10;
int unidades = (distancia % 100) % 10;
Serial.println(String(centena) + " " + String(decena) + " " + String(unidades));
numero(centena, decena, unidades);
}
void segmentos(bool pinA, bool pinB, bool pinC, bool pinD, bool pinE, bool pinF, bool pinG) {
digitalWrite(2, pinA);
digitalWrite(3, pinB);
digitalWrite(4, pinC);
digitalWrite(5, pinD);
digitalWrite(6, pinE);
digitalWrite(7, pinF);
digitalWrite(8, pinG);
}
void digito(int valor) {
switch (valor) {
case 0:
segmentos(1, 1, 1, 1, 1, 1, 0);
break;
case 1:
segmentos(0, 1, 1, 0, 0, 0, 0);
break;
case 2:
segmentos(1, 1, 0, 1, 1, 0, 1);
break;
case 3:
segmentos(1, 1, 1, 1, 0, 0, 1);
break;
case 4:
segmentos(0, 1, 1, 0, 0, 1, 1);
break;
case 5:
segmentos(1, 0, 1, 1, 0, 1, 1);
break;
case 6:
segmentos(1, 0, 1, 1, 1, 1, 1);
break;
case 7:
segmentos(1, 1, 1, 0, 0, 0, 0);
break;
case 8:
segmentos(1, 1, 1, 1, 1, 1, 1);
break;
case 9:
segmentos(1, 1, 1, 1, 0, 1, 1);
break;
}
}
void numero(int digA, int digB, int digC) { //Debe haber un orden
digitalWrite(10, HIGH); // medio off
digitalWrite(11, HIGH); //derecha off
digito(digA);
digitalWrite(9, LOW); // medio on
delay(50);
digitalWrite(9, HIGH); // medio
digitalWrite(11, HIGH); //derecha
digito(digB);
digitalWrite(10, LOW); // medio
delay(50);
digitalWrite(9, HIGH); // medio
digitalWrite(10, HIGH); // medio
digito(digC);
digitalWrite(11, LOW); //derecha
delay(50);
}