Ejercicio Cero Modificado
Modificaciones ejercicio 0
Vamos a cambiar lo siguiente:
Incorporar una pantalla LCD para evitar tener que abrir el Monitor Serie.
El código tiene unos cambios así que lo debereis de copiar de nuevo o introducir
en el ejercicio anterior las partes nuevas.
Esquema conexiones
Este es el esquema con la aparición del LCD
Pantalla LCD
En este ejercicio vamos a incorporar una pantalla LCD para evitar el uso del Monitor Serie
de arduino y la necesidad de apretar el reset de la ESP8266 para obtener información.
Hay diferentes tipos de pantallas LCD, nosotros nos hemos decantado por este que solo lleva 4 cables.
Codigo Ejercicio 0 modificado
//sacosta.org
//ejercicio 0 modificado
//cuatro botones, cada botón enciende la tira del color correspondiente.
//un quinto botón apaga la tira
// Neopixel
//LCD conexiones: SCL a D1, SDA a D2, VCC a VV, GND a G
//GRB
#include <Adafruit_NeoPixel.h>
#define NeoPIN D6
#define NUM_LEDS 30
int brightness = 150;
Adafruit_NeoPixel strip = Adafruit_NeoPixel(NUM_LEDS, NeoPIN, NEO_RGB + NEO_KHZ800);
// LCD
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2);//código para 2 filas , 16 columnas
#include <Wire.h>
#include <ESP8266WiFi.h>
const char *ssid = "XXXXXXXX";
const char *password = "XXXXXXXXXXX";
WiFiServer server(80);
void setup() {
Serial.begin(115200);
delay(10);
strip.setBrightness(brightness);
strip.begin();
strip.show();
delay(50);
Serial.println("NeoPixel started");
lcd.init();
lcd.backlight();
// Conecta a la red wifi.
Serial.println();
Serial.println();
Serial.print("Conectado con ");
Serial.println(ssid);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("Connectado WiFi.");
// Inicio del Servidor web.
server.begin();
Serial.println("Servidor web iniciado");
// Esta es la IP
Serial.print("Esta es la IP para connectarse: ");
Serial.print("http://");
Serial.print(WiFi.localIP());
Serial.println("/");
lcd.clear(); // Borra contenido pantalla
lcd.setCursor(0,0); // Inicio del cursor
lcd.print(WiFi.localIP());
lcd.setCursor(0,1); // Inicio del cursor
lcd.print("APP ejercicio_0"); //podemos usar la misma que en el ejercicio anterior
delay(100);
}
void loop() {
// Consulta si se ha connectado algún cliente.
WiFiClient client = server.available();
if (!client) {
return;
}
// Espera hasta que el cliente envie datos
Serial.println("Nuevo cliente.");
while(!client.available()){
delay(1);
}
/////////////////////////////////////////////////////
// Lee la información enviada por el cliente.
String req = client.readStringUntil('\r');
Serial.println(req);
client.flush();
// Consulta la petición del cliente.
String val;
if (req.indexOf("/dato=1") != -1)
{
//grb
for(int i=0; i < NUM_LEDS; i++) {
strip.setPixelColor(i, strip.Color( 0, 255,0 ) );
}
// init
strip.show();
lcd.clear(); // Borra la pantalla
lcd.setCursor(1,0); // Inicio del cursor segunda fila
lcd.print("Tira color rojo");
}
else if (req.indexOf("/dato=2") != -1)
{
for(int i=0; i < NUM_LEDS; i++) {
strip.setPixelColor(i, strip.Color( 0, 0 ,255) );
//delay(100);
}
// init
strip.show();
lcd.clear(); // Borra la pantalla
lcd.setCursor(1,0); // Inicio del cursor segunda fila
lcd.print("Tira color azul");
}
else if (req.indexOf("/dato=3") != -1)
{
for(int i=0; i < NUM_LEDS; i++) {
strip.setPixelColor(i, strip.Color( 255,0, 0 ) );
}
// init
strip.show();//
lcd.clear(); // Borra la pantalla
lcd.setCursor(1,0); // Inicio del cursor segunda fila
lcd.print("Tira color verde");
}
else if (req.indexOf("/dato=4") != -1)
{
for(int i=0; i < NUM_LEDS; i++) {
strip.setPixelColor(i, strip.Color(239,236,177) );
}
// init
strip.show();//
lcd.clear(); // Borra la pantalla
lcd.setCursor(1,0); // Inicio del cursor segunda fila
lcd.print("Color amarillo");
}
else if (req.indexOf("/dato=5") != -1)
{
for(int i=0; i < NUM_LEDS; i++) {
strip.setPixelColor(i, strip.Color(0,0,0) );
}
// init
strip.show();//
lcd.clear(); // Borra la pantalla
lcd.setCursor(1,0); // Inicio del cursor segunda fila
lcd.print("Tira apagada");
}
else {
Serial.println("Error.");
client.stop();
return;
}
Serial.println(val);
delay(10);
//////////////////////////////////////////////
// Página WEB. ////////////////////////////
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println("");
client.println(val);
Serial.println("Cliente desconectado.");
}
En la pantalla del LCD, que a veces hay que graduar el nivel de brillo con un regulador que lleva en la
parte posterior, aparecerá el nombre del archivo de Arduino que utilizamos y, lo más importante, el
número de la IP que vamos a necesitar.
Monitor Serie
Si abrimos el monitor serie obtendremos la misma información; en color rojo aparecerá
la red wifi a la que nos hemos conectado y la IP correspondiente.
Obra publicada con Licencia Creative Commons Reconocimiento Compartir igual 4.0