Tutorial Arduino – e-Reader desde una SD con un LCD Deja un comentario

AR6El objetivo del siguiente tutorial es leer los datos almacenados en una tarjeta SD para mostrarlos por un display LCD.Este código permite desarrollar objetivos más complejos como tomar datos de un sensor y almacenarlos en la SD para luego leerlos sin necesidad de extraer la tarjeta o hacer una interfaz que permita manejarse entre los distinos archivos de la SD.

Material necesario:

  • DISPLAY LCD
  • potenciómetro de 10k
  • resistencia de 10k  y de 330 ohm (necesaria en caso de LCD con retroiluminación)
  • SD + SD SHIELD
  • Botón

Aspecto importante a tener en cuenta: para conectar el LCD a la vez que la SD se han cambiado los pines que comunmente se utilizan para éstos. En el código se detalla la conexión de ambos.

Para conocer el funcionamiento  del LCD visitar la entrada: Arduino + LCD display HD44780

Para conocer la conexión de la SD y el LCD, prestar atención al código.
//

La parte más importante de este tutorial es el código ya que adquiere cierta complejidad. ¡Así que si no comprendes alguna parte no dudes en comentar!

/*
Arduino SD Card reader

Author: Geeky Theory

Blog: http://www.geekytheory.com

https://www.youtube.com/user/telecoreference

https://www.facebook.com/geekytheory

  • SD card attached to SPI bus as follows:
    ** MOSI – pin 11
    ** MISO – pin 12
    ** CLK – pin 13
    ** CS – pin 6
  • LCD RS pin to digital pin 9
  • LCD Enable pin to digital pin 8
  • LCD D4 pin to digital pin 5
  • LCD D5 pin to digital pin 4
  • LCD D6 pin to digital pin 3
  • LCD D7 pin to digital pin 2
  • LCD R/W pin to ground
  • 10K resistor:
  • ends to +5V and ground
  • wiper to LCD VO pin (pin 3)
    /
    #include
    #include ;
    LiquidCrystal lcd(9, 8, 5, 4, 3, 2);
    File myFile;
    const int chipSelect = 6;
    const int buttonPin = 7;
    int buttonState = 0;
    void setup()
    {
    // Open lcd communications
    lcd.begin(16, 2);
    lcd.print(“Initializing SD”);
    // make sure that the default chip select pin is set to
    // output, even if you don’t use it:
    pinMode(10, OUTPUT);
    // see if the card is present and can be initialized:
    if (!SD.begin(chipSelect)) {
    lcd.setCursor(0,1);
    lcd.println(“Card failed”);
    // don’t do anything more:
    return;
    }
    lcd.setCursor(0,1);
    lcd.println(“card initialized.”);
    }
    void loop()
    {
    /
    “caracter” es la variable que almacena el dato que lee en la tarjeta
    está definido como char para forzar el tipo de variable (casting) para
    que el LCD no muestre su codificación ASCII /
    char caracter;
    /
    “i” almacena la posición en X del LCD, como máximo es 15
    int i;
    /setcursor almacena la posición en Y del LCD,
    como solo hay arriba y abajo se define como booleano (0,1) */
    boolean setcursor=false;
    // open the file. note that only one file can be open at a time,
    // so you have to close this one before opening another.
    File dataFile = SD.open(“test.txt”);
    i=0;
    //lee el valor del pulsador
    buttonState = digitalRead(buttonPin);
    do{buttonState = digitalRead(buttonPin);}
    while (buttonState == LOW);
    lcd.setCursor(0,0);
    if (dataFile) {
    while (dataFile.available()) {
    buttonState = digitalRead(buttonPin);
    do{buttonState = digitalRead(buttonPin);}
    while (buttonState == LOW);
    /
    si ha llegado al final de la linea y está en la en la segunda linea,
    pasa a la primera linea y situate al principio de la linea /
    if((i>15)$$(setcursor==true)) {
    lcd.setCursor(0,0);
    i=0;
    setcursor=!setcursor;
    }
    /
    si ha llegado al final de la linea y está en la en la primera linea,
    pasa a la segunda linea y situate al principio de la linea */
    if((i>15) && (setcursor==false)) {
    lcd.setCursor(0,1);
    i=0;
    setcursor=!setcursor;
    }
    i++;
    caracter=dataFile.read();
    lcd.print(caracter);
    delay(100);
    }
    dataFile.close();
    }
    // if the file isn’t open, pop up an error:
    else {
    lcd.println(“error opening test.txt”);
    }
    }

[youtube http://www.youtube.com/watch?v=POvquIPiiis&w=640&h=360]

github

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Enviar Whatsapp
Hola 👋
¿En qué podemos ayudarte?