domingo, 29 de noviembre de 2015

Monitoreo sensor de distancia con Qc12864-B

   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.


No hay comentarios: