lunes, 18 de marzo de 2019

Pantalla LCD 16x2

Pantalla LCD 16x2

En este tutorial de LCD de Arduino aprenderemos cómo conectar una pantalla LCD (pantalla de cristal líquido) a la placa Arduino. Los LCD como estos son muy populares y ampliamente utilizados en proyectos de electrónica, ya que son buenos para mostrar información como datos de sensores de su proyecto y también son muy baratos.

Tiene 16 pines y el primero de izquierda a derecha es el pin de tierra. El segundo pin es el VCC al que conectamos el pin de 5 voltios en la placa Arduino. El siguiente es el pin Vo en el que podemos conectar un potenciómetro para controlar el contraste de la pantalla.

A continuación, el pin RS o el pin de selección de registro se utilizan para seleccionar si enviaremos comandos o datos a la pantalla LCD. Por ejemplo, si el pin RS está configurado en estado bajo o cero voltios, entonces estamos enviando comandos a la pantalla LCD como: coloque el cursor en una ubicación específica, borre la pantalla, apague la pantalla, etc. Y cuando el pin RS se establece en estado alto o 5 voltios, estamos enviando datos o caracteres a la pantalla LCD.

Luego viene el pin R / W que selecciona el modo si leeremos o escribiremos en la pantalla LCD. Aquí el modo de escritura es obvio y se usa para escribir o enviar comandos y datos a la pantalla LCD. El modo de lectura es utilizado por la propia pantalla LCD cuando se ejecuta el programa, que no es necesario discutir sobre él en este tutorial.
El siguiente es el pin E que permite la escritura en los registros, o los siguientes 8 pines de datos de D0 a D7. Entonces, a través de estos pines, enviamos los datos de 8 bits cuando escribimos a los registros o, por ejemplo, si queremos ver la última A mayúscula en la pantalla, enviaremos 0100 0001 a los registros de acuerdo con la tabla ASCII.

Y los dos últimos pines A y K, o ánodo y cátodo son para la luz de fondo del LED.
Después de todo, no tenemos que preocuparnos mucho por cómo funciona la pantalla LCD, ya que la Biblioteca de cristal líquido se ocupa de casi todo. Desde el sitio web oficial de Arduino puede encontrar y ver las funciones de la biblioteca que permiten un uso fácil de la pantalla LCD. Podemos usar la biblioteca en modo de 4 u 8 bits. En este tutorial lo usaremos en modo de 4 bits, o solo usaremos 4 de los 8 pines de datos.

Esquema del circuito

Usaremos solo 6 pines de entrada digital de la placa Arduino. Los registros de la pantalla LCD de D4 a D7 se conectarán a los pines digitales de Arduino de 4 a 7. El pin Habilitar se conectará al pin número 2 y el pin RS se conectará al pin número 1. El pin R / W se conectará a La conexión a tierra y el pin Vo se conectarán al potenciómetro.

Código para arduino

  1. #include <LiquidCrystal.h> // includes the LiquidCrystal Library
  2. LiquidCrystal lcd(1, 2, 4, 5, 6, 7); // Creates an LC object. Parameters: (rs, enable, d4, d5, d6, d7)
  3. void setup() {
  4. lcd.begin(16,2); // Initializes the interface to the LCD screen, and specifies the dimensions (width and height) of the display }
  5. }
  6. void loop() {
  7. lcd.print("Arduino"); // Prints "Arduino" on the LCD
  8. delay(3000); // 3 seconds delay
  9. lcd.setCursor(2,1); // Sets the location at which subsequent text written to the LCD will be displayed
  10. lcd.print("LCD Tutorial");
  11. delay(3000);
  12. lcd.clear(); // Clears the display
  13. lcd.blink(); //Displays the blinking LCD cursor
  14. delay(4000);
  15. lcd.setCursor(7,1);
  16. delay(3000);
  17. lcd.noBlink(); // Turns off the blinking LCD cursor
  18. lcd.cursor(); // Displays an underscore (line) at the position to which the next character will be written
  19. delay(4000);
  20. lcd.noCursor(); // Hides the LCD cursor
  21. lcd.clear(); // Clears the LCD screen
  22. }

¿Qué es Arduino?

Arduino


Arduino es una plataforma de creación de electrónica de código abierto, la cual está basada en hardware y software libre, flexible y fácil de utilizar para los creadores y desarrolladores. Esta plataforma permite crear diferentes tipos de microordenadores de una sola placa a los que la comunidad de creadores puede darles diferentes tipos de uso.

Tipos de Arduinos

Hay diferentes tipos de Arduinos desarrollados por la misma empresa

Tenemos al arduino nano el funciona como el Mega2560 y el Uno pero tiene menor memoria y su tamaño lo hace mejor para ahorrar espacio

También se encuentra arduino ethernet y ethernet shield los cuales se puede programar y conectarse al módem y con la IP address puede acceder al página que usted programo para poder prender o apagar un foco

miércoles, 30 de mayo de 2018

Ethernet shield con arduino

Buenas a todos, en este mi primer post les mostrare como conectar su arduino al Wifi para poder controlar lo que son los focos o servomotores con el uso de Internet.

Los materiales a ocupar son:

  1. Un Arduino Uno o Mega2560
  2. Un Ethernet Shield w5100
  3. Cables Macho-Macho y Macho-Hembra
  4. Cable Ethernet
  5. 1 servomotor
  6. Relevadores de 1, 2 o 4 canales
Lo primero que debemos de saber es que el Ethernet Shield
Una vez obtenido los materiales procederemos al código:
#include <SPI.h>
#include <Ethernet.h>
#include <Servo.h> 
                                    Estas son las librerías que se van a utilizar para el IDE de Arduino

Servo microservo; 
int pos = 0; 
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };   //Direccion Fisica MAC
byte ip[] = { 192, 168, 1, 91 };                       // IP Local que usted debe configurar 
byte gateway[] = { 192, 168, 1, 254 };                   // Puerta de enlace
byte subnet[] = { 255, 255, 255, 0 };                  //Mascara de Sub Red
EthernetServer server(80);                             //Se usa el puerto 80 del servidor     
String readString;
                                   En este caso todo lo dejaremos igual excepto el byte gateway, ese debemos de cambiarlos a una red a la cual no este ocupado, nos vamos al buscador de Windows y escribimos "cmd" y nos aparecerá la siguiente ventana

y para identificar nuestra red debemos escribir "ipconfig" y nos aparecerá lo siguiente



Y debemos verificar lo que es el adaptador de LAN inalámbrica Wifi y nos brinda una serie de números pero el que más nos interesa es la Dirección IPv4, tomamos los tres primeros números y el ultimo lo cambiamos verificando que se utilizado por las demás computadoras o aparatos conectados a Wifi

void setup() {

  Serial.begin(9600);  // Inicializa el puerto serial 
   while (!Serial) {   // Espera a que el puerto serial sea conectado, Solo necesario para el Leonardo
    ; 
  }
  pinMode(2,OUTPUT);        // Se configura como salidas los puertos del 2 al 6
  pinMode(3,OUTPUT);
  pinMode(4,OUTPUT);
  pinMode(5,OUTPUT);
  pinMode(6,OUTPUT);
  microservo.attach(7);  // Se configura como Servo el Puerto 7

  Ethernet.begin(mac, ip, gateway, subnet); // Inicializa la conexion Ethernet y el servidor
  server.begin();
  Serial.print("El Servidor es: ");
  Serial.println(Ethernet.localIP());    // Imprime la direccion IP Local
}


void loop() {
  // Crea una conexion Cliente
  EthernetClient client = server.available();
  if (client) {
    while (client.connected()) {   
      if (client.available()) {
        char c = client.read();
     
        //Lee caracter por caracter HTTP
        if (readString.length() < 100) {
          //Almacena los caracteres a un String
          readString += c;
          
         }

         // si el requerimiento HTTP fue finalizado
         if (c == '\n') {          
           Serial.println(readString); //Imprime en el monitor serial
     
           client.println("HTTP/1.1 200 OK");           //envia una nueva pagina en codigo HTML
           client.println("Content-Type: text/html");
           client.println();     
           client.println("<HTML>");
           client.println("<HEAD>");
           client.println("<TITLE>Ethernet Arduino</TITLE>");
           client.println("</HEAD>");
           client.println("<BODY>");
           client.println("<hr />");
           client.println("<H1>Arduino Ethernet Shield</H1>");
           client.println("<br />");  
           client.println("<H2>Control on/off 2-6  Servo 7</H2>");
           client.println("<br />");  
           
           client.println("<a href=\"/?button2on\"\"> Apagar Pin2</a> ");           // construye en la pagina cada uno de los botones
           client.println(" | | | ");
           client.println("<a href=\"/?button2off\"\"> Encender Pin2</a><br /> ");   
           client.println("<br />");
           
           client.println("<br />"); 
           client.println("<a href=\"/?button3on\"\"> Apagar Pin3</a> ");
           client.println(" | | | ");
           client.println("<a href=\"/?button3off\"\"> Encender Pin3</a><br /> ");   
           client.println("<br />");
           
           client.println("<br />"); 
           client.println("<a href=\"/?button4on\"\"> Apagar Pin4</a> ");
           client.println(" | | | ");
           client.println("<a href=\"/?button4off\"\"> Encender Pin4</a><br /> ");   
           client.println("<br />");
           
           client.println("<br />");  
           client.println("<a href=\"/?button5on\"\"> Apagar Pin5</a>");
           client.println(" | | | ");
           client.println("<a href=\"/?button5off\"\"> Encender Pin5</a><br />");   
           client.println("<br />");
           
           client.println("<br />"); 
           client.println("<a href=\"/?button6on\"\"> Apagar Pin6</a> ");
           client.println(" | | | ");
           client.println("<a href=\"/?button6off\"\"> Encender Pin6</a><br /> ");   
           client.println("<br />");
           
           
           client.println("<br />"); 
           client.println("<a href=\"/?left\"\">Girar  Izq Pin7</a>");
           client.println(" | | | ");
           client.println("<a href=\"/?right\"\">Girar Der Pin7</a><br />"); 
           client.println("<hr />");
           client.println("<p>Pagina Ethernet</p>");  
           client.println("<br />"); 
           client.println("</BODY>");
           client.println("</HTML>");
     
           delay(1);
           //detiene el cliente servidor
           client.stop();
           
           //control del arduino si un boton es presionado
                   
           if (readString.indexOf("?button2on") >0){
               digitalWrite(2, HIGH);
           }
           if (readString.indexOf("?button2off") >0){
               digitalWrite(2, LOW);
           }
           
           if (readString.indexOf("?button3on") >0){
               digitalWrite(3, HIGH);
           }
           if (readString.indexOf("?button3off") >0){
               digitalWrite(3, LOW);
           }
           
           
           if (readString.indexOf("?button4on") >0){
               digitalWrite(4, HIGH);
           }
           if (readString.indexOf("?button4off") >0){
               digitalWrite(4, LOW);
           }
           
            if (readString.indexOf("?button5on") >0){
               digitalWrite(5, HIGH);
           }
           if (readString.indexOf("?button5off") >0){
               digitalWrite(5, LOW);
           }
           
           
           if (readString.indexOf("?button6on") >0){
               digitalWrite(6, HIGH);
           }
           if (readString.indexOf("?button6off") >0){
               digitalWrite(6, LOW);
           }
           
           
           if (readString.indexOf("?left") >0){
                for(pos = 0; pos < 180; pos += 3)  // Giro de 0 a 180 grados 
                {                                  
                  microservo.write(pos);             
                  delay(15);                       // Espera 15 ms para que el servo llege a la posicion 
                } 
           }
           if (readString.indexOf("?right") >0){
                for(pos = 180; pos>=1; pos-=3)     //Giro de 180 a 0 grados 
                {                                
                  microservo.write(pos);              
                  delay(15);                       // Espera 15 ms para que el servo llege a la posicion 
                } 
           }
            // Limpia el String(Cadena de Caracteres para una nueva lectura
            readString="";  
           
         }
       }
    }
}
}

En el caso del Ethernet Shield los pines 10, 11, 12 y 13 no los podremos utilizar como pines de salida porque esos pines son ocupados por el arduino.

Estas son las partes del arduino:

  • ON: indica que la placa y la shield están alimentadas
  • LINK: indica la presencia de un enlace de red y parpadea cuando la shield envía o recibe datos
  • 100M: indica la presencia de una conexión de red de 100 Mb/s (de forma opuesta a una de 10Mb/s)
  • RX: parpadea cuando el shield recibe datos
  • TX: parpadea cuando el shield envía datos
En otro post les mostrare el vídeo de muestra del Ethernet Shield encendiendo los relevadores