esp8266...mi sono arenato

Purtroppo mi tocca ammetterlo...non sono ancora pronto per Webbino.....oggi ho dovuto ripristinare il PC dopo i vari tentetivi con le librerie.

Però nonostatne tutti i casini che ho combinato(non si carica più lo sketch vuoto..quindi i comandi AT non rispondono più) almeno sono riuscito a fare un piccolo passo in avanti.

Tornando a Blynk (sempre con chiavetta usb)adesso riesco a vedere quando premo il bottone sul telefono....po pero mi sono accorto che se stacco la chiavetta USB e la ricollego,non vedo più niente....finche non ricarico lo Sketch.

Il bello è che tutto quello che devi fare con Webbino è modificare due righe in sto cavolo di webbino_config.h, poi fa tutto lui.

scusami Sukko,ma prima devo prendere confidenza con sto cavolo di modulo ESP...comunque l'ho trovato il file....ma poi ho fatto dei casini ....e siccome non ci saltavo più fuori ho preferito fare un passo indietro........

Dunque,per il momento credo di aver risolto parte dei problemi in questo modo, innanzitutto ho caricato sul modulo ESP tramite chiavetta un classico esempio Blynk.

#define BLYNK_PRINT Serial
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>

char auth[] = " AUTETICAZIONE";
char ssid[] = "ROUTER DI CASA";
char pass[] = "PASSWORD";

BLYNK_WRITE(V1)
{
  int pinValue = param.asInt(); 
  Serial.print("V1 ");
  Serial.println(pinValue);
}

BLYNK_WRITE(V3)
{
  byte V_3=(param.asInt());
  Serial.print("V3 ");
  Serial.println(V_3);
}

void setup()
{
 Serial.begin(9600);
 Blynk.begin(auth, ssid, pass);
}

void loop()
{
  Blynk.run();
}

Poi ho caricato uno sketch differente su arduino Uno

#include <SoftwareSerial.h>

SoftwareSerial mySerial(6,5); // RX, TX
char a=Serial.read(); 
char b=mySerial.read();
char c=0;..........................//SEMBRA INUTILE
void setup()
{
 Serial.begin(9600);
 mySerial.begin(9600);
}

void loop()
{
 if(Serial.available())
    {
     a=Serial.read();
     mySerial.print(a); 
    }
 if(mySerial.available())
    {
     b=mySerial.read();
     Serial.print(b,DEC);
    
    } 
    c=b;
if(c,DEC==864932481310){Serial.println("ciao...belli");}........//QUI NON DA NIENTE
 
  }

I due dispositivi comunicano almeno sembra,il problema è che a parte leggere sul SerialMonitor, non riesco ad utilizzare il dato.

Ho provato ad aggiungere la "char c"si leggendo in caratteri,sia in decimale, insomma facendo un pò di tentativi, ma niente da fare.

Come faccio a sfruttare la variabile char b,oltre che leggerla sul monitor?

non ho capito il senso di

c=b;

e comunque un char non può avere un valore di 5 byte

c==864932481310

dal reference:
"The char datatype is a signed type, meaning that it encodes numbers from -128 to 127. For an unsigned, one-byte (8 bit) data type, use the byte data type."

in pratica vorrei sfruttare il valore che leggo sulla char b .

il senso di c=b..era la speranza di copiare il valore di b su un altra variabile da poter poi utilizzare per fare altre cose.

non ho capito :frowning: :frowning: :confused: :confused: :cry: :cry:

allora:

#include <SoftwareSerial.h>

SoftwareSerial mySerial(6,5); // RX, TX
char a=Serial.read();
char b=mySerial.read();
char c=0;..........................//SEMBRA INUTILE
void setup()

qui sei all'inizio quindi le seriali non sono ancora inizializzate per cui

#include <SoftwareSerial.h>

SoftwareSerial mySerial(6,5); // RX, TX
char a;  // la serial non esiste ancora
char b;
char c=0;..........................//SEMBRA INUTILE  // e lo è 
void setup()

poi, questo cosa ti stampa?

 if(mySerial.available())
    {
     b=mySerial.read();
     Serial.print(b,DEC);
   
    }

e quindi quando fai c=b
c avrà lo stesso contenuto che ti stampava prima.....
ma per ogni azione successiva puoi benissimo usare b per cui

if(b=="QualsiasiValoreValidoPerChar"){Serial.println("ciao...belli");}........//QUI NON DA NIENTE
 
  }

Serial.print (b,DEC)..lo avevo messo perche in char mi scrive il valore V1(tasto virtuale di Blynk, ma lo segna verde e non compila), quindi ho provati a mettere i decimali per farlo compilare , infatti compila.

La char c, lo sapevo che era inutile..era giusto per tentare un ultima arrampicata sui vetri.

Il problema è che a anche scritto " if(b=="QualsiasiValoreValidoPerChar"){Serial.println("ciao...belli");} "......non succede nulla.

si ma che valore ti da
Serial.print (b,DEC) ??

con V1 a 0 da 864932481310

con V1 a 1 da 864932491310

se metto un println me li scorpor in decine

86
49
32
48\49 (questo è il numero che cambia tra acceso e spento dal telefono)
13
10

ma il risultato non cambia, niente scritta"ciao belli"

non ti sei accorto che non è UN char ma SEI char???? E che quindi o li concateni un un'altra variabile e poi controlli cosa c'è scritto...oppure analizzi esclusivamente se ricevi 48 o 49
praticamente se
if(b=="QualsiasiValoreValidoPerChar")
lo fai diventare
if(b=='48')
o 49 a seconda di cosa vuoi interpretare vedrai che funziona

Patrick_M ....SEI UN GRANDE

effettivamente qualke dubbio mi era venuto mettendo il PrintLN, ma non riuscivo ancora a saltarci fuori.

Ora effettivamente "ciao belli" mi appare tutte le volte che appare 49, quindi 1volta se il tasto telefono è 0,
2 volte se il tasto telefono è 1. (infatti la seconda cifra è sempre 49 indipendentemente dallo stato del tasto telefono).

Cosa mi consigli per concatenare le varie char????...al momento mi viene in mente un array, ma mi sembra troppo architettonico per questa cosa.

Grazie comunque per avermi aiutato.

Concatenare la Char, stavo guardando sulle referenze Arduino.cc ho trovato :

concat oppure string...no e che al momento c'ho capito molto......ma almeno e questa la strada giusta??

non so come si fa a cambiare il titolo del Topic....ma RISOLTO.
posto lo sketch per i posteri

SoftwareSerial mySerial(6,5); // RX, TX
char a=0; 
char b=0;
String B="";

void setup()
{
 Serial.begin(9600);
 mySerial.begin(9600);
}

void loop()
{
 if(Serial.available())
    {
     a=Serial.read();
     mySerial.print(a);     
    }
  if(mySerial.available())
    {            
     B="";     
     while(mySerial.available())
          {
           b=mySerial.read();
           B.concat(b);
           Serial.println(B);
           delay(10);
           if(B=="V_11"){Serial.println("ciao belli");}
          }         
     }
}

ora CONCATENATE le Char che arrivano dal modulo ESP posso andare avanti.
;D ;D ;D ;D

:o :o :confused: :confused:

Mi sono accorto di un piccolo problema,

ora è vero che riesco a inviare dal telefono dei comandi virtuali che ESP interpreta e scrive sul monitor, poi con arduino leggo,concateno e di conseguenza posso ad esempio cambiare stato ai pin.

Ma per fare il contrario,cioè scrivere una cosa qualsiasi e leggerlo dal telefono,come faccio?

ho provato a caricare questo su ESP

#define BLYNK_PRINT Serial
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>

char auth[] = "codide blynk";
char ssid[] = "ruter di casa";
char pass[] = "password";

boolean Print=0;
char a=0; 
char b=0;
String B="";

void LETTURE()
{
 if(Serial.read())
   { 
    Print=1;           
    B="";     
    while(Serial.read())
         {
          b=Serial.read();
          B.concat(b);
          delay(10);
         }
   }    
 if(! Serial.read())
   {
    if(Print==1)
      {
       Blynk.virtualWrite(V0, B);
       Blynk.virtualWrite(V1, B); 
       Serial.println(B);       
       Print=0;          
      }       
   }
}  
BLYNK_WRITE(V0)
{
  int pinValue = param.asInt();
  Serial.println(pinValue);
}
BLYNK_WRITE(V1)
{
  Blynk.virtualWrite(V1, B);
}
BLYNK_READ(V2)
{
  Blynk.virtualWrite(V2, B);
}
void setup()
{
 Serial.begin(9600);
 Blynk.begin(auth,ssid,pass);
}

void loop()
{  
  LETTURE();
  Blynk.run(); 
}

...i BLYNK_WRITE (V__)ed i BLYNK_READ(V__) sono per provare.

e questo su Arduino

#include <SoftwareSerial.h>

SoftwareSerial mySerial(6,5); // RX, TX
SoftwareSerial mySerial1(11,10); // RX, TX
boolean Print=0;
boolean Write=0;
char a=0; 
char b=0;
String B="";
void setup()
{
 Serial.begin(9600);
 mySerial.begin(9600);
 mySerial1.begin(9600);
}
void TRASMETTI()
{
 if(Write==0)
   {    
    delay(1000);
    mySerial1.write("1");
    delay(1000);
    mySerial1.print("1");
    Write=1;
   }     
    
}
void RICEVI()
{
 if(mySerial.available())
   { 
    Print=1;           
    B="";     
    while(mySerial.available())
         {
          b=mySerial.read();
          B.concat(b);
          delay(10);
         }
   }    
 if(! mySerial.available())
   {
    if(Print==1)
      {
       Serial.println(B);       
       if(B=="V0 0"){Serial.println("SPENTO");}
       if(B=="V0 1"){Serial.println("ACCESO");}

       if(B=="V1 1"){Serial.println("AVANTI");}
       if(B=="V2 1"){Serial.println("DESTRA");}
       if(B=="V3 1"){Serial.println("INDIETRO");}
       if(B=="V4 1"){Serial.println("SINISTRA");}
       Print=0;           
      }
   }
}
void loop()
{
TRASMETTI();  
RICEVI();
}

Oltr che no trasmettere niente mi sono accorto che se metto nel loop il void"TRASMETTI", non funziona più neanche il void "RICEVI".

Avete qualke consiglio????....non ci salto fuori con sto maledetto modulino ESP ::slight_smile: ::slight_smile: :cold_sweat: :cold_sweat: :sob: :sob: :sob: :sob: :sob:

Per SuKKoPera

ciao abbandonato blynk perche non ci salto fuori sto tentando con Webbino,facendo ricerche sono incappato in www.webbino.it volevo sapere se è tuo.

Altra cosa ho letto il megatopic Webbino ma non ci ho capito molto(da hobbysta con la 3 media inferiore) ...potresti farmi un piccolo esempio(SEMPLICE) per cambiare stato ad un PIN su arduino1 o Mega usando il telefono(con quale APP???)...... e viceversa leggere lo stato di un altro PIN sempre sul telefono???? (ovviamente utilizzando il ruter di casa).

Almeno per avere uno spunto da cui partire.