#define ena 14 // GPIO14(D5)
#define enb 12 // GPIO12(D6)
#define IN_1 15 // GPIO15(D8)
#define IN_2 13 // GPIO13(D7)
#define IN_3 2 // GPIO2(D4)
#define IN_4 0 // GPIO0(D3)
#define cny70 1 // GPIO0(tx)
#define PIN 4 // input pin Neopixel is attached to
#define NUMPIXELS 4 // GPIO4 (D2) number of neopixels in strip
#include <Adafruit_NeoPixel.h>
#include <WiFi.h>
//#include <ESP8266WiFi.h>
#include <WiFiClient.h>
//#include <ESP8266WebServer.h>
Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_GRB +
NEO_KHZ800);
int delayval=5;
int contpixel=1000; // variable acumuladora paara ejecutar cambio en pixel color
String valor; // la variable valor almacena el comando que proviene de la app de
appinventor
int velocidad = 800; // se puede configurado de 0 a 1023.
int vgiro = 3; // valor para giro mas abierto o cerrado
int Valor_cny70 = 0;
//////////////////////////////_________________________________// ws2811
int redColor = 0;
int greenColor = 0;
int blueColor = 0;
//////////////////////////////_________________________________// ws2811
const char* ssid ="ESP_Rufus";
const char* password = "12345678";
//ESP8266WebServer server(80);
WiFiServer server(80);
void setup()
{
pixels.begin();
pinMode(ena, OUTPUT);
pinMode(enb, OUTPUT);
pinMode(IN_1, OUTPUT);
pinMode(IN_2, OUTPUT);
pinMode(IN_3, OUTPUT);
pinMode(IN_4, OUTPUT);
pinMode(cny70, INPUT);
Serial.begin(115200);
WiFi.mode(WIFI_AP);
WiFi.softAP(ssid);
//WiFi.softAP(ssid, password); //con pasword
IPAddress myIP = WiFi.softAPIP();
Serial.print("AP IP address: ");
Serial.println(myIP);
// server.on ( "/", HTTP_handleRoot );
// server.onNotFound ( HTTP_handleRoot );
server.begin();
}
void avanzar(){
digitalWrite(IN_1, LOW);
digitalWrite(IN_2, HIGH);
// analogWrite(ena, velocidad);
digitalWrite(IN_3, LOW);
digitalWrite(IN_4, HIGH);
// analogWrite(enb, velocidad);
}
void retroceder(){
digitalWrite(IN_1, HIGH);
digitalWrite(IN_2, LOW);
// analogWrite(ena, velocidad);
digitalWrite(IN_3, HIGH);
digitalWrite(IN_4, LOW);
// analogWrite(enb, velocidad);
}
void derecha(){
digitalWrite(IN_1, HIGH);
digitalWrite(IN_2, LOW);
// analogWrite(ena, velocidad);
digitalWrite(IN_3, LOW);
digitalWrite(IN_4, HIGH);
// analogWrite(enb, velocidad);
}
void izquierda(){
digitalWrite(IN_1, LOW);
digitalWrite(IN_2, HIGH);
// analogWrite(ena, velocidad);
digitalWrite(IN_3, HIGH);
digitalWrite(IN_4, LOW);
// analogWrite(enb, velocidad);
}
void aderecha(){
digitalWrite(IN_1, LOW);
digitalWrite(IN_2, HIGH);
// analogWrite(ena, velocidad/vgiro);
digitalWrite(IN_3, LOW);
digitalWrite(IN_4, HIGH);
// analogWrite(enb, velocidad);
}
void aizquierda(){
digitalWrite(IN_1, LOW);
digitalWrite(IN_2, HIGH);
// analogWrite(ena, velocidad);
digitalWrite(IN_3, LOW);
digitalWrite(IN_4, HIGH);
// analogWrite(enb, velocidad/vgiro);
}
void rderecha(){
digitalWrite(IN_1, HIGH);
digitalWrite(IN_2, LOW);
// analogWrite(ena, velocidad/vgiro);
digitalWrite(IN_3, HIGH);
digitalWrite(IN_4, LOW);
// analogWrite(enb, velocidad);
}
void rizquierda(){
digitalWrite(IN_1, HIGH);
digitalWrite(IN_2, LOW);
// analogWrite(ena, velocidad);
digitalWrite(IN_3, HIGH);
digitalWrite(IN_4, LOW);
// analogWrite(enb, velocidad/vgiro);
}
void detener(){
digitalWrite(IN_1, LOW);
digitalWrite(IN_2, LOW);
// analogWrite(ena, velocidad);
digitalWrite(IN_3, LOW);
digitalWrite(IN_4, LOW);
// analogWrite(enb, velocidad);
}
void setColor(){
redColor = random(0, 255);
greenColor = random(0,255);
blueColor = random(0, 255);
}
void loop() {
server.handleClient();
if (contpixel==1000)
{
pixels.show();
setColor();
for (int i=0; i < NUMPIXELS; i++)
{
pixels.setPixelColor(i, pixels.Color(redColor, greenColor, blueColor));
pixels.show();
delay(delayval);
}
contpixel=0;
}
contpixel=contpixel+1;
////////////////////////////////
valor = server.arg("State");
if (valor == "a") avanzar();//adelante
else if (valor == "r") retroceder();//retroceder
else if (valor == "i") izquierda();//izquieerda
else if (valor == "d") derecha();//derech
else if (valor == "da") aderecha();//adelante derecha
else if (valor == "ia") aizquierda();//adelante izquierda
else if (valor == "dr") rderecha();//atras derecha
else if (valor == "ir") rizquierda();//atras izquierda
else if (valor == "dd1") velocidad = 400;
else if (valor == "1") velocidad = 550;
else if (valor == "2") velocidad = 700;
else if (valor == "3") velocidad = 840;
else if (valor == "4") velocidad = 999;
else if (valor == "s") detener();
/////////////////////////////////
}
/*
void HTTP_handleRoot(void) {
if( server.hasArg("State") ){
Serial.println(server.arg("State"));
}
server.send ( 200, "text/html", "" );
delay(1);
}
/////////////////////////////////////7
void sencny()
{
Valor_cny70=digitalRead(cny70);
delay(10);//Esperar 100 ms
if(Valor_cny70==0)
{
Serial.print("Linea negra");
}
else//Si el valor del sensro es 1
{
Serial.print("Linea blanca izquierda\n");
}Serial.print(Valor_cny70);
}*/