Lo que hice es un medidor de distancia con una placa Arduino UNO con un sensor de ultrasonido y luego mostrar la distancia en centímetros en un display de 4 digitos, para que me sirve, en mi caso quiero saber cual es el nivel del tanque de la cisterna para conocer la reserva que tengo de agua potable.
El código final lo saque de dos sitios el primero es un ejemplo de medidor y el segundo es un ejemplo para utilizar el display, no olvides cargar la librería.
https://www.tautvidas.com/blog/2012/08/distance-sensing-with-ultrasonic-sensor-and-arduino/
http://www.techmonkeybusiness.com/tm1637-4-digit-display-example-sketch.html
A continuación dejo el código.
pre.CICodeFormatter{
font-family:arial;
font-size:12px;
border:1px dashed #CCCCCC;
width:99%;
height:auto;
overflow:auto;
background:#f0f0f0;
line-height:20px;
background-image:URL(https://2.bp.blogspot.com/_z5ltvMQPaa8/SjJXr_U2YBI/AAAAAAAAAAM/46OqEP32CJ8/s320/codebg.gif);
padding:0px;
color:#000000;
text-align:left;
}
pre.CICodeFormatter code{
color:#000000;
word-wrap:normal;
}
</style>
<pre class="CICodeFormatter" ><code class="CICodeFormatter"> #include <TM1637Display.h>
const int CLK = 9;
const int DIO = 8;
int NumStep = 0;
TM1637Display display(CLK, DIO);
const int trigPin = 2;
const int echoPin = 4;
void setup() {
Serial.begin(9600);
display.setBrightness(0x0a);
}
void loop()
{
long duration, inches, cm;
pinMode(trigPin, OUTPUT);
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
pinMode(echoPin, INPUT);
duration = pulseIn(echoPin, HIGH);
inches = microsecondsToInches(duration);
cm = microsecondsToCentimeters(duration);
Serial.print(cm);
Serial.println();
display.showNumberDec(cm);
delay(100);
}
long microsecondsToInches(long microseconds)
{
return microseconds / 74 / 2;
}
long microsecondsToCentimeters(long microseconds)
{
return microseconds / 29 / 2;
}