Problema com esp07 e codigo


#1

ola amigos estou com um problema no codigo:

#include <ESP8266WiFi.h>
#include <String.h>
#include <CapacitiveSensor.h>

const int led1 = 2 ; //led1
const int cap1 = 4; // interruptor touch
const int cap2 = 12; // resistencia
const int sensibil = 100;  // valor que varia consoante a resistencia do capl4
CapacitiveSensor   cs = CapacitiveSensor(cap1,cap2);    
 
String readString = String(30);
String statusled;
const char* ssid = "Casa";
const char* password = "964002176";

WiFiServer server(80);
 
void setup()
{
    Serial.begin(115200);
    delay(10);

    pinMode(led1, OUTPUT);
 
    WiFi.begin(ssid, password);

    while (WiFi.status() != WL_CONNECTED)
    {
        delay(500);
    }
    server.begin();
}

void loop()
{
    //long cap =  cs.capacitiveSensor(30);
    //if (cap > sensibil )
    // digitalWrite(led1, !digitalRead(led1));
    //  delay(2);
 
    WiFiClient client = server.available();
 
    if (client)
    {
        while(client.connected())
        {
            if(client.available())
            {
            char c= client.read();
            if (readString.length() < 30)
            {
                readString += (c);
            } 
            if (c== '\n')
            {
                if(readString.indexOf("led1") > 0)
                {
                    digitalWrite(led1, !digitalRead(led1));
                }
           
                client.println("HTTP/1.1 200 OK");
                client.println("Content-Type: text/html");
                client.println("");
 
                client.println("<!doctype html>");
                client.println("<html>");
                client.println("<head>");
                client.println("<title>Tutorial</title>");
                client.println("<meta name=\"viewport\" content=\"width=320\">");
                client.println("<meta name=\"viewport\" content=\"width=device-width\">");
                client.println("<meta charset=\"utf-8\">");
                client.println("<meta name=\"viewport\" content\"initial-scale=1.0, user-scalable=no\">");
                client.println("<head>");
                client.println("<body>");
                client.println("<center>");
                client.println ("<font size=\"5\" face=\"verdana\" color=\"green\">Android</font>");
                client.println ("<font size=\"3\" face=\"verdana\" color=\"red\"> & </font>");
                client.println("<font size=\"5\" face=\"verdana\" color=\"blue\">Arduino</font><br />");
 
                if(digitalRead(led1))
                {
                    statusled = "Ligado";
                } 
                else
                {
                    statusled = "Desligado";
                }
 
                client.println("<form action=\"http://192.168.1.88/led1?\" method=\"get\">");
                client.println("<button type=submit style=\"width:200px;\">led1 - "+statusled+"</button> ");
                client.println("</form> <br />");
                client.println("<center>");
                client.println ("<body>");
                client.println("</html>");
              
                readString = "";
                client.stop();
            }
        }
    }
}

ou seja por baixo do void loop tenho umas linhas comentadas…essas linhas são para funcionar o meu interruptor touch screen.

Mas…
Se eu deixar o codigo com as linhas comentadas…ele funciona bem ou seja abre a pagina 192.168.1.88 e aparece um botao se eu clicar nele liga o led se eu clicar de novo desliga.
E aparece no botao o status se ele esta ligado ou não.

No entanto o interruptor nao esta a funcionar…se eu descomentar as linhas…o que acontece é:

o site 192.168.1.88 não abre…
e o led1 pisca de 3 em 3 segundos…

o que esta errado?
agradeco a vossa ajuda.


#2

Não sei, mas primeiramente vamos ver esse código comentado, me parece que você tem um “if” e abaixo 2 linhas de código, não estaria faltando chaves?

Não estaria faltando chaves?

Com uma linha, a chave é dispensável, mas com duas linhas ou mais dentro do bloco condicional, ela se faz necessária.


#3

Ola amigo…
Me desculpa responder assim sem me apresentar no forum, é que não encontrei onde fazer a apresentação.
Mas meu nome é Luiz Carlos.
Sou Tecnico em informatica e tenho uns projetos em arduino, cheguei ate este forum numa pesquisa do google, onde encontrei seu post.

Eu estou passando por um problema bem parecido com este que vc apresentou ai, porém o meu é com interface touch usando a capacitivesensor e receptor RF.
Meu codigo ignora o RF por causa de uma cariavel vc conseguiu resolver o problema ?
Segue o codigo que estou usando.
Desde já agradeço…

#include <CapacitiveSensor.h>
//#include <Automacao.h>

// inicio das variaveis do receptor rf

const byte pinRF = 7; // Pin where RF Module is connected. If necessary, change this for your project
int lambda; // on pulse clock width (if fosc = 2KHz than lambda = 500 us)
struct rfControl //Struct for RF Remote Controls
{
unsigned long addr; //ADDRESS CODE
boolean btn1; //BUTTON 1
boolean btn2; //BUTTON 2
};
boolean ACT_HT6P20B_RX(struct rfControl &_rfControl){
static boolean startbit; //checks if start bit was identified
static int counter; //received bits counter: 22 of Address + 2 of Data + 4 of EndCode (Anti-Code)
static unsigned long buffer; //buffer for received data storage
int dur0, dur1; // pulses durations (auxiliary)
if (!startbit)
{// Check the PILOT CODE until START BIT;
dur0 = pulseIn(pinRF, LOW); //Check how long DOUT was “0” (ZERO) (refers to PILOT CODE)
//If time at “0” is between 9200 us (23 cycles of 400us) and 13800 us (23 cycles of 600 us).
if((dur0 > 9200) && (dur0 < 13800) && !startbit)
{
//calculate wave length - lambda
lambda = dur0 / 23;
//Reset variables
dur0 = 0;
buffer = 0;
counter = 0;
startbit = true;
}
}
//If Start Bit is OK, then starts measure os how long the signal is level “1” and check is value is into acceptable range.
if (startbit && counter < 28)
{
++counter;
dur1 = pulseIn(pinRF, HIGH);
if((dur1 > 0.5 * lambda) && (dur1 < (1.5 * lambda))) //If pulse width at “1” is between “0.5 and 1.5 lambda”, means that pulse is only one lambda, so the data é “1”.
{
buffer = (buffer << 1) + 1; // add “1” on data buffer
}
else if((dur1 > 1.5 * lambda) && (dur1 < (2.5 * lambda))) //If pulse width at “1” is between “1.5 and 2.5 lambda”, means that pulse is two lambdas, so the data é “0”.
{
buffer = (buffer << 1); // add “0” on data buffer
}
else
{
//Reset the loop
startbit = false;
}
}
//Check if all 28 bits were received (22 of Address + 2 of Data + 4 of Anti-Code)
if (counter==28)
{
// Check if Anti-Code is OK (last 4 bits of buffer equal “0101”)
if ((bitRead(buffer, 0) == 1) && (bitRead(buffer, 1) == 0) && (bitRead(buffer, 2) == 1) && (bitRead(buffer, 3) == 0))
{
counter = 0;
startbit = false;
//Get ADDRESS CODE from Buffer
_rfControl.addr = buffer >> 6;
//Get Buttons from Buffer
_rfControl.btn1 = bitRead(buffer,4);
_rfControl.btn2 = bitRead(buffer,5);
//Serial.print("Address: "); Serial.println(_rfControl.addr, HEX);
//Serial.print("Button1: "); Serial.println(_rfControl.btn1, BIN);
//Serial.print("Button2: "); Serial.println(_rfControl.btn2, BIN);
//Serial.println();
//If a valid data is received, return OK
return true;
}
else
{
//Reset the loop
startbit = false;
}
}
//If none valid data is received, return NULL and FALSE values
_rfControl.addr = NULL;
_rfControl.btn1 = NULL;
_rfControl.btn2 = NULL;
return false;
}

// fim das variaveis do receptor rf

//Resistor ligando os pinos 4 e 2 (sender=4, receiver=2)
CapacitiveSensor touch1 = CapacitiveSensor(4,2);
int comando[3]; //Comando, Lampada, Valor
int sensibilidade1 = 60; //Frontreira que defini entre tocar ou nao
bool ligado1 = 0; //Indica se a lampada esta ligada ou nao
int ponto1 = 0; //Valor colhido pelo pino receptor

void setup() {
Serial.begin(9600); //Saida serial
pinMode(pinRF, INPUT);// pino 7 DATA do receptor Rx 433mhz
pinMode(12, OUTPUT); //led piloto da lampada
pinMode(13, OUTPUT); //led monitor RF

}

void loop()
{
// Serial.print("Estoui aqui… ");
// Inicio do decodificador rf
digitalWrite(13, digitalRead(pinRF)); //blink de onboard LED when receive something
struct rfControl rfControl_1; //Set variable rfControl_1 as rfControl type

if(ACT_HT6P20B_RX(rfControl_1)){

//Serial.print("Estou dentro do primeiro if… do RF ");
//If a valid data is received, print ADDRESS CODE and Buttons values
// Serial.print("Address: "); Serial.println(rfControl_1.addr, DEC);
// Serial.print("Button1: "); Serial.println(rfControl_1.btn1, BIN);
// Serial.print("Button2: "); Serial.println(rfControl_1.btn2, BIN);
// Serial.println();

//PEGUE O “ADDRESS” E COLOQUE NA FRENTE DELE “0x” para poder comparar

 if (rfControl_1.addr == 3050885){  
    
if ((rfControl_1.btn1 == 1) && (rfControl_1.btn2 == 0)){//se botão 1 for pressionado  
  digitalWrite(12,HIGH);
  digitalWrite(8,HIGH);
  delay(1000);
}  
if ((rfControl_1.btn1 == 0) && (rfControl_1.btn2 == 1)){//se botão 2 for pressionado  
  digitalWrite(12,LOW);
  digitalWrite(8,LOW);
  desligaLampada(1);  
delay(1000);
}  
if ((rfControl_1.btn1 == 1) && (rfControl_1.btn2 == 1)){//se botão 3 for pressionado  
  digitalWrite(12,HIGH);  
  digitalWrite(8,HIGH);
  delay(1000);  
  digitalWrite(12,LOW);
  digitalWrite(8,LOW);   
  delay(1000);  
}  

}
}

//***********************************************************
//Verifica se houve toque no interruptor para ligar a lampada
//***********************************************************
long start = millis();

/////////////////////////////////////////////////////////////////
ponto1 = touch1.capacitiveSensor(30); // aqui esta meu problema.
////////////////////////////////////////////////////////////////

if (ponto1 > sensibilidade1){ 
if (!ligado1) 
  ligaLampada(1);
 else 

desligaLampada(1);

}

}

void ligaLampada(int lampada) {
if (lampada == 1) {
if (!ligado1) {
digitalWrite(8,HIGH);
Serial.print(“Lampada Ligada.”);
Serial.println();
for (int i=255; i>10; i–) {
analogWrite(11,i);
delay(5);
}

  ligado1 = !ligado1;
} 

}

}

void desligaLampada(int lampada) {
if (lampada == 1) {
if (ligado1) {
digitalWrite(8,LOW);
Serial.print(“Lampada Desligada.”);
Serial.println();
for (int i=255;i>10;i–) {
analogWrite(11,i);
delay(5);
}
ligado1 = !ligado1;

}

}
}