SKETCH
#include "U8glib.h"
U8GLIB_ST7920_128X64_1X u8g(6, 5, 4 ,7); // CONEXION SERIE
float sensor=1025 ;
byte x;
float y[128];
byte punto;
long distancia;
long tiempo;
void draw(void) {
// graphic commands to redraw the complete screen should be placed here
u8g.drawFrame(0,0,128,56);
u8g.setFont(u8g_font_04b_03);
u8g.setFontPosTop();
u8g.drawStr(0, 56, "Distanc:");
u8g.setFontPosTop();
// punto
for( punto = 1; punto <= 127; punto++ ) {
u8g.drawPixel(punto,55-54*y[punto]/1024);
}
// barra de nivel
u8g.drawFrame(32,57,75,6);
u8g.drawBox(33,58,74*(sensor/1024),4);
u8g.setColorIndex(0);
u8g.drawBox(33+74*(sensor/1024),58,73-74*(sensor/1024),4);
u8g.setColorIndex(1);
//u8g.drawFrame(32,57,75,6);
//leyenda
String s = String(int( distancia)) ;
u8g.setPrintPos(109, 56);
u8g.print(s);
// u8g.drawStr(109, 56, s);
}
void setup(void) {
// Serial.begin(9600);
pinMode(9, OUTPUT); /*activación del pin 9 como salida: para el pulso ultrasónico*/
pinMode(8, INPUT); /*activación del pin 8 como entrada: tiempo del rebote del ultrasonido*/
}
void loop(void) {
// picture loop
u8g.firstPage();
digitalWrite(9,LOW); /* Estabilización del sensor*/
delayMicroseconds(5);
digitalWrite(9, HIGH); /* envío del pulso */
delayMicroseconds(10);
tiempo=pulseIn(8, HIGH);
distancia= int(0.017*tiempo);
sensor=1024*distancia/338;
//
x= x+1;
if (x>=126) {
x=1;
}
y[x]=(sensor);
for( punto = 1; punto <= 127; punto++ ) {
}
// // rebuild the picture after some delay
do {
draw();
} while( u8g.nextPage() );
// delay(100);
}
CONEXIONES:
IMPORTANTE: Para conectar en serie con el arduino y no quemar nada tube que desoldar dos resistencias como indico aquí. No hay que hacelo con todos los LCD, pero con mi modelo de lcd de no hacerlo se puede quemar.