Saltar la navegación

Ejercicio_3_colores_random_pixel_pixel

Video ejemplo

Código

//sacosta.org
//Ejercicio_3 app inventor
//Hace un random de colores pixel a pixel y llena la tira 
//Conexiones LCD: SCL a D1, SDA a D2, VCC a VV, GND a G
//En la pantalla LCD durante el setup aparece la red a la que conectarse y la app que lo hace funcionar
//orden colores RGB Red Green Blue
//las variables de esta programación permiten fijar los margenes de los colores y brillo
#include <Adafruit_NeoPixel.h>
#define NeoPIN D6
#define NUMPIXELS 30
int brightness;
int min_brightness=40; //limite inferior de brillo
int max_brightness=80;//limite máximo, podría llegar a 255
int min_color=0; //limite inferior de color
int max_color=100;//limite superior de color, el máximo puede llegar a 255
 
Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMPIXELS, NeoPIN, NEO_GRB + NEO_KHZ800);
 
#include <ESP8266WiFi.h>
const char *ssid = "XXXXXXXXXXX"; //red wifi 
const char *password = "XXXXXXXXXXXX";// password
 
const char *app="ejercicio_3";
 
WiFiServer server(80);
int redColor = 0;
int greenColor = 0;
int blueColor = 0;
int delayval = 1000;
int delayp_p=100; //delay entre pixels
// LCD
#include <LiquidCrystal_I2C.h>    
LiquidCrystal_I2C lcd(0x27,16,2);
 
void setup() {
Serial.begin(115200);
lcd.init();
  lcd.backlight();
  delay(10);
delay(10);
pixels.begin();
delay(50);
Serial.println("NeoPixel started");
 
 
  // 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("Conectado por WiFi.");
 
  // Inici del Servidor web.
  server.begin();
  Serial.println("Servidor web iniciado");
 
  // Esta es la IP
  Serial.print("Esta es la IP : ");
  Serial.print("http://");
  Serial.print(WiFi.localIP());
  Serial.println("/");
  for (int i=0; i<3;i++){ 
  lcd.clear(); // Borra contenido pantalla
  lcd.setCursor(0,0); // Inicio del cursor
  lcd.print(ssid); //muestra nombre de la red
  lcd.setCursor(0,1); // Inicio del cursor
  lcd.print(WiFi.localIP());//muestra ip
  
 delay(5000);
  lcd.clear(); // Borra contenido pantalla
  lcd.setCursor(0,0); // Inicio del cursor
  lcd.print("App inventor");
  lcd.setCursor(0,1); // Inicio del cursor
  lcd.print(app);//muestra el nombre de la app correspondiente
 delay(5000);
  }
  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);
  
}
 
void loop() {
  // Consulta si se ha conectado algun 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 programació enviada al 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)
{
 for (int i=0; i < NUMPIXELS; i++) {
    pixels.setPixelColor(i, pixels.Color(0, 0, 0));
    pixels.show();
  } 
  setColor();
  
pixels.setBrightness(brightness);
  lcd.clear(); // borra pantalla
  lcd.setCursor(0,0); // Inicio del cursor
  lcd.print("RGB y brillo");
  lcd.setCursor(0,1); // Inicio del cursor
  lcd.print("Random cada pixels);
 
for (int i=0; i < NUMPIXELS; i++) {
    // pixels.Color takes RGB values, from 0,0,0 up to 255,255,255
    pixels.setPixelColor(i, pixels.Color(redColor, greenColor, blueColor));
 
    // This sends the updated pixel color to the hardware.
    pixels.show();
  setColor();
    // Delay for a period of time (in milliseconds).
    delay(delayp_p);
  }
  delay(delayval);
}
 
else if (req.indexOf("/dato=2") != -1)
{
lcd.clear(); // borra pantalla
  lcd.setCursor(0,0); // Inicio del cursor
  lcd.print("R= 0");
  lcd.setCursor(5,1); // Inicio del cursor
  lcd.print("G= 0");
  lcd.setCursor(10,0); // Inicio del cursor
  lcd.print("B= 0");
  for(int i=0; i < NUMPIXELS; i++) {
  pixels.setPixelColor(i, pixels.Color(0,0,0) );
  }
  // init
  pixels.show();//
}
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(""); //  Comillas importantes.
  client.println(val);
  Serial.println("Cliente desconectado.");
}
void setColor(){
  redColor = random(min_color, max_color);
  greenColor = random(min_color, max_color);
  blueColor = random(min_color, max_color);
  brightness = random(min_brightness, max_brightness);
}