Saltar la navegación

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

lcd tira

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.

lcd
link aliexpress

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.

lcd ip

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.

lcd m s