ROBOT WI FI

Dunque
essendomi un pò rotto di fare solo prove con componenti a banco e non avendo abbastanza risorse economiche per per comprare il robot Arduino ho optato per una scatola del Meccano rubata al figlio del mio vicino di casa,per costruire il mio primo Robot.

Ovviamente le istruzioni non le ho neppure guardate ma il mio Robot e meccanicamente pronto e con una MEGA montata,pronta per la programmazione.

Ora la storiella è questa
vorrei programmarlo non per fare grandi cose,ma semplicemente per ripassare quello che ho imparato in questi mesi, in più volevo controllarlo e magari comandarlo da remoto.

Quindi essendomi accorto di non avere un cavo USB lungo(casa-lavoro) ho comprato pure una scheda WIFI ESP8256-01 che a parte aver capito che lo devo indirizzare,per il resto non ne sò niente.

La domanda è questa.
Prima di cominciare a programmare il mio Robot via cavo o batteria,devo tener conto che dopo ci aggiungerò una scheda WIFI,oppure è la scheda che si deve adattare ?????

Puso:
... Prima di cominciare a programmare il mio Robot via cavo o batteria,devo tener conto che dopo ci aggiungerò una scheda WIFI,oppure è la scheda che si deve adattare ?????

Devi tenerne conto per varie cose ... prima di tutto per l'alimentazione (NON va bene il pin 3.3V di Arduino), per i pin da usare, per l'adattamento dei livelli e per la struttura del codice :slight_smile:

Ti rammento anche che, in Megatopic, c'è un thread di oltre 170 pagine interamente dedicato al ESP8266.

Nella prima pagina troverai una serie di link a guide e tutorials che ti consiglio di studiare per imparare subito ad utilizzare il modulo ESP ed evitare di fare danni :smiley:

Guglielmo

ok
grazie

OK
cominciamo male

ho fatto i dovuti accorgimenti per il collegamenti e mi sono letto un 1000000 di forum linck esempi ect ect.

Molti riportano a scaricare la la scheda aggiuntiva da "http://arduino.esp8266.com/stable/package_esp8266com_index.json"

cosa che ho fatto pure io,ma ho trovato un mucchio di schede tranne la esp8266 :frowning: :frowning: :frowning: :frowning: :frowning:

Se non altro vedo la connessione WiFi dal PC,e riesco a connettermi quindi la schedina dovrebbe essere ancora funzionante,spero.

qualcuno mi aiuta?
ho già fatto un miliardo di tentativi,ma non ci salto fuori.

Mi auto-quoto:

gpb01:
Ti rammento anche che, in Megatopic, c'è un thread di oltre 170 pagine interamente dedicato al ESP8266.

Nella prima pagina troverai una serie di link a guide e tutorials che ti consiglio di studiare per imparare subito ad utilizzare il modulo ESP ed evitare di fare danni

... se avessi seguito SOLO la guida di SukkoPera, senza perdere tempo su tanti siti inutili, avresti già risolto.

Guglielmo

L’HO seguita ed anche quella di Brunello,ma quell’ indirizzo mi trova alcune schede aggiuntive tranne quella dell’ESP…
Comunque me lo rileggo per l’ennesima volta per vedere se ho saltato qualke passaggio.

Ma non devi trovare nessuna scheda ... a cosa stai collegando il tuo ESP-01? Ad una MEGA? E allora devi usare Arduino MEGA NO altre board ... quelle sono per schede NON Arduino, ma basate SOLO su ESP.

MA TE LA VUOI STUDIARE LA GUIDA DI SUKKOPERA ? ? ? >:( >:( >:(

Guglielmo

Dunque passato un pò di tempo ci sto riprovando con sta maledetta schedina ESP 8266-01 ma non ci salto fuori :confused: :confused:

Alimentata per i fatti suoi,RX e TX invertiti su MEGA2560(pin 19,18) ,Serial monitor impostato NL&CL 115200 baud ed un MILIONE di tentativi fatti :drooling_face: :drooling_face:

Il PC la vede come connessione WiFi quindi immagino sia funzionante.

Già provato sia gli esempi dell varie librerie tipo"<SoftwareSerial.h><Wire.h><Adafruit_ESP8266.h><WiFiEsp.h> <Blynk.h>" sia senza esempi con solo le librerie e lo schetc vuoto, sia con lo schetc vuoto e senza librerie…ma il risultato è sempre lo stesso >:( >:( >:( >:( ,al comando AT…semplicemente non succede nulla,neppure un misero messaggio di errore :’( :’( :’( :’( :’( :’(

ho copiato questo…copiato ma capito cosa dovrebbe succedere

void setup()
{
 Serial.begin(9600); 
 Serial1.begin(115200); 
}

void loop()
{
 while(Serial.available())
      {
        char ch=Serial.read(); 
        Serial1.print(ch);
      }
      
 while(Serial1.available())
      {
        char ch=Serial1.read(); 
        Serial.print(ch);
      }

      
  }

purtoppo mi ritorna quello che scrivo io…e non quello che dovrebbe rispondere l’ESP >:( >:( :confused: :confused:

Io non so quale sia il problema. Quello che so é che non é un problema di codice Arduino. Controlla hardware e funzionamento dell'apparecchio collegato all'altra seriale.

L'hardware mi sembra a posto(provato sia collegato direttamente,sia aggiungendo resistenze come sul video che ho praticamente ricopiato......"Virtuino esp8266 web server with arduino mega - YouTube".......ho provato pure a cambiare la serial1 in serial2 (spostandomi coi relativi pin)....ma il risultato è lo stesso.

Puso:
purtoppo mi ritorna quello che scrivo io.....e non quello che dovrebbe rispondere l'ESP >:( >:( :confused: :confused:

ma non deve risponderti esattamente quello che scrivi tu? :slight_smile:

magari...rispondesse anche male...piu che un ESP sembra un pappagallo >:( >:( >:(

speravo almeno in Io scrivo AT....non pretendo che mi risponda ok subito,ma almeno un misero segnale.....sto maledetto sembra che mi stia prendendo in giro :confused: :confused:

forse non è flashata??

che sappia io quando li compri i moduli sono flashati ...

prova a collegarti direttamente all'esp-01 con un ftdi e con PuTTY o Termite apri un collegamento e vedi se ti risponde ai comandi AT....

Abbandonato per il momento la scheda wifi mi sono concentrato sul mio robottino per farlo andare andare da solo, in pratica il classico robottino con un sensore ad ultrasuoni che se trova un ostacolo cerca un altra direzione per proseguire,e fin qui tutto OK..qui lo schetc..(è il meglio che sono riuscito a sintetizzare per il momento)...

//variabili per loop SCRIVI
boolean Scrivi=0;

//variabili per loop ULTRASUONO
const byte Echo(30);
const byte Trig(31);
int Tempo=0; 
int Distanza=0;
int Cm=0;
byte MediaCm=0;
boolean AttivaUltrasuono=0;
boolean ScriviAttivaUltrasuono=0;
boolean ControlloDistanza=0;
byte VerificaDistanza[7]={};
byte PuntaDistanza=0;


//variabili per loop MUOVI_STEPPER()
boolean MuoviStepper=0;
boolean ScriviMuoviStepper=0;
boolean StepperPronto=0;
#include <Stepper.h>
const int Giro=200;
Stepper myStepper(Giro,41, 43, 45, 47);
unsigned long tempoMot=0;
byte Posizione=0;

//variabili per loop MEMORIZZA_DISTANZE
boolean MemorizzaDistanze=0;
boolean ScriviMemorizzaDistanze=0;
byte MemoriaDistanza_1[7]={};
byte MemoriaDistanza_2[7]={};
byte MemoriaDistanza_3[7]={};
byte PuntaMemoria_1=0;
byte PuntaMemoria_2=0;
byte PuntaMemoria_3=0;
byte ConfrontoMemoria=0;

//variabili per loop MEDIA_DISTANZE()
boolean MediaDistanze=0;
boolean ScriviMediaDistanze=0;
byte MediaMemorieDistanze[7]={};
byte MediaMemorieTotale[5]={};
byte PuntaMediaMemorie=0;
byte PuntaMediaTotale=0;
byte PosizionaPuntatori=0;
int MediaMemorie=0;
byte Media=0;

//variabili per loop OSSERVAZIONE()
boolean Osservazione=0;
boolean ScriviOsservazione=0;

//variabili per loop CAMMINA
const byte Avanti(48);
const byte Indietro(49);
byte Cammina=0;
boolean Pronto_a_Camminare=0;

//variabili per loop STERZA
#include <Servo.h>
Servo Sterza;
byte Direzione=3;
byte SterzaGradi=90;
boolean SterzataPronta=0;

//variabili per loop AVANZA_TRANQUILLO
boolean AvanzaTranquillo=1;
boolean Avanza=0;
unsigned long tempoSterzata=0;
boolean VicoloCieco=0;

//variabili per loop CERCA_PERCORSO()
boolean CercaPercorso=0;
byte PercorsiTrovati=0;

//variabili per loop DECIDI_PERCORSO()
boolean DecidiPercorso=0;


void setup()
{
 Serial.begin(9600);//velocita Serial Monitor 
 pinMode(Echo,INPUT);//ULTRASUONO
 pinMode(Trig,OUTPUT);//ULTRASUONO 
 myStepper.setSpeed(150);//PASSOPASSO
 pinMode(Avanti,OUTPUT);//CAMMINA
 pinMode(Indietro,OUTPUT);//CAMMINA
 Sterza.attach(6);//STERZA

}

void ULTRASUONO()
{ 
  if(AttivaUltrasuono==1)//parte il LOOP
    {
     digitalWrite(Trig,LOW);
     delayMicroseconds(2);//aspetta(ma non ho capito bene per quale motivo)
     digitalWrite(Trig,HIGH);     
     delayMicroseconds(10);//aspetta(ma non ho capito bene per quale motivo)
     digitalWrite(Trig,LOW);  
     Tempo=pulseIn(Echo,HIGH);//tempo uguale a pulseIn
     Cm=Tempo*0.0165725;//verifica la distanza in millimetri stando attento alla temperatura
     Distanza=Distanza+Cm;
     MediaCm++;
     if(MediaCm>15)
       {
        Distanza=Distanza/15; 
        VerificaDistanza[PuntaDistanza]=Distanza;
        Distanza=0;
        MediaCm=0;
        
       }
    }
}


 void MUOVI_STEPPER()
{        
  if(MuoviStepper==1)//SE pronto al VOID
    {
     
     if(StepperPronto==1)
       {
        if(Posizione==0){myStepper.step(0);}// SE=0 resta Fermo Avanti
        if(Posizione==1){myStepper.step(150);}// SE=1 sposta Destra 1\2  
        if(Posizione==2){myStepper.step(150);}//SE=2 sposta Destra 1 
        if(Posizione==3){myStepper.step(-300);}//SE=3 torna Avanti venendo da Destra(aggiustato passo per meccanica sgranata)
        if(Posizione==4){myStepper.step(-150);}// SE=4 sposta Sinistra 1\2 
        if(Posizione==5){myStepper.step(-150);}//SE=5 sposta Sinistra 1 
        if(Posizione==6){myStepper.step(300);}//SE=6 torna Avanti venendo da Sinistra(aggiustato passo per meccanica sgranata)          
        StepperPronto=0;
       } 
     if(StepperPronto==0)
       {
        if(Posizione>6)//SE  la posizione in cui mettersi supera la dimensione dell'array
          {          
           Posizione=0;//riporta la posizione al punto di partenza                    
           ConfrontoMemoria++;
          }
       if(ConfrontoMemoria<=3)
         {
          ScriviMemorizzaDistanze=0;//BLOCCA il Void
          PuntaDistanza=Posizione; 
          AttivaUltrasuono=1;//PREPARATI a lanciare il Void            
          ULTRASUONO();//LANCIA il Void                                    
          if(millis()-tempoMot>=1000)
            {
              AttivaUltrasuono=0;
             MemorizzaDistanze=1;//PREPARATI a lanciare il Void
             MEMORIZZA_DISTANZE();//LANCIA il Void                       
             Posizione++;         
             StepperPronto=1; 
             tempoMot=millis();//azzera il cronometro 
            }
         }
       if(ConfrontoMemoria>3)
         {                                                    
           MuoviStepper=0;//BLOCCA il Void
           PuntaDistanza=0;                    
           ConfrontoMemoria=0; 
           MemorizzaDistanze=0;
           ScriviMemorizzaDistanze=0; 
           MediaDistanze=1;
           Media=1;                      
         }
      }
   }             
}

 void  MEMORIZZA_DISTANZE()
{ 
  if(MemorizzaDistanze==1)
    {
     ScriviMemorizzaDistanze=1;//PREPARATI a lanciare il Void  
     PuntaDistanza=Posizione;      
     if(ConfrontoMemoria==1)
       {
        PuntaMemoria_1=PuntaDistanza;
        MemoriaDistanza_1[PuntaMemoria_1]=VerificaDistanza[PuntaDistanza];        
       }
     if(ConfrontoMemoria==2)
       {
        PuntaMemoria_2=PuntaDistanza;
        MemoriaDistanza_2[PuntaMemoria_2]=VerificaDistanza[PuntaDistanza];       
       }
     if(ConfrontoMemoria==3)
       {
        PuntaMemoria_3=PuntaDistanza;
        MemoriaDistanza_3[PuntaMemoria_3]=VerificaDistanza[PuntaDistanza];            
       }
    }
}

void MEDIA_DISTANZE()
{  
  if(MediaDistanze==1)
    {
     ScriviMediaDistanze=1;      
     PuntaMemoria_1=PosizionaPuntatori;
     PuntaMemoria_2=PosizionaPuntatori;
     PuntaMemoria_3=PosizionaPuntatori;      
     if(Media==1)
       { 
        PuntaMediaMemorie=PosizionaPuntatori;              
        MediaMemorie=MemoriaDistanza_1[PuntaMemoria_1]+MemoriaDistanza_2[PuntaMemoria_2]+MemoriaDistanza_3[PuntaMemoria_3];
        MediaMemorieDistanze[PuntaMediaMemorie]=MediaMemorie/3;       
        if(PosizionaPuntatori>6)
          {                               
           PosizionaPuntatori=0; 
           Media=2;         
          }      
       }       
     if(Media==2)
       { 
        PuntaMediaTotale=PosizionaPuntatori;         
        MediaMemorieTotale[0]=MediaMemorieDistanze[1];
        MediaMemorieTotale[1]=MediaMemorieDistanze[2];
        MediaMemorieTotale[2]=(MediaMemorieDistanze[0]+MediaMemorieDistanze[3]+MediaMemorieDistanze[6])/3;
        MediaMemorieTotale[3]=MediaMemorieDistanze[4];
        MediaMemorieTotale[4]=MediaMemorieDistanze[5];
        if(PosizionaPuntatori>4)
          {            
           Media=3;
           PosizionaPuntatori=0; 
           MediaDistanze=0; 
           ScriviMediaDistanze=0;
                    
          }
       }      
    PosizionaPuntatori++;       
   }     
}

void OSSERVAZIONE()
{
 if(ScriviOsservazione==1)
   {
    Scrivi=1;
    SCRIVI();
   }
 if(Osservazione==1)
   {
    MuoviStepper=1;    
    MUOVI_STEPPER();
    MEDIA_DISTANZE();
   }
}
void SCRIVI()
{
 if(Scrivi==1)
   {
    if(ScriviMemorizzaDistanze==1)
      {
       if(ConfrontoMemoria==1)
         {
          if(PuntaMemoria_1==0)
            { 
             Serial.println(""); 
             Serial.println("");
             Serial.print("ConfrontoMemoria ");
             Serial.print(ConfrontoMemoria);
             Serial.print("  ");
             Serial.print(MemoriaDistanza_1[PuntaMemoria_1]);
             Serial.print(" ");
            }
          if(PuntaMemoria_1!=0)
            { 
             Serial.print(MemoriaDistanza_1[PuntaMemoria_1]); 
             Serial.print(" "); 
            }      
         }
       if(ConfrontoMemoria==2)
         {
          if(PuntaMemoria_2==0)
            { 
             Serial.println(""); 
             Serial.println("");
             Serial.print("ConfrontoMemoria ");
             Serial.print(ConfrontoMemoria);
             Serial.print("  ");
             Serial.print(MemoriaDistanza_2[PuntaMemoria_2]);
             Serial.print(" ");
            }
          if(PuntaMemoria_2!=0)
            { 
             Serial.print(MemoriaDistanza_2[PuntaMemoria_2]); 
             Serial.print(" "); 
            }
         }
       if(ConfrontoMemoria==3)
         {
          if(PuntaMemoria_3==0)
            { 
             Serial.println(""); 
             Serial.println("");
             Serial.print("ConfrontoMemoria ");
             Serial.print(ConfrontoMemoria);
             Serial.print("  ");
             Serial.print(MemoriaDistanza_3[PuntaMemoria_3]);
             Serial.print(" ");
            }
          if(PuntaMemoria_3!=0)
            { 
             Serial.print(MemoriaDistanza_3[PuntaMemoria_3]); 
             Serial.print(" "); 
            }  
         }          
      }
   }      
 if(ScriviMediaDistanze==1)
   {
    if(Media==1)
      {          
       if(PuntaMediaMemorie==0)
         { 
          Serial.println(""); 
          Serial.println("");
          Serial.print("MediaMemorie        ");
          Serial.print(MediaMemorieDistanze[PuntaMediaMemorie]);
          Serial.print(" ");                     
         }
       if(PuntaMediaMemorie!=0)
         { 
          Serial.print(MediaMemorieDistanze[PuntaMediaMemorie]); 
          Serial.print(" ");            
         }        
      }
    if(Media==2)
      {         
       if(PuntaMediaTotale==0)
         { 
          Serial.println(""); 
          Serial.println("");
          Serial.print("MediaMemorieTotale      ");
          Serial.print( MediaMemorieTotale[PuntaMediaTotale]);
          Serial.print(" ");                     
         } 
       if(PuntaMediaTotale!=0)
         { 
          Serial.print(MediaMemorieTotale[PuntaMediaTotale]); 
          Serial.print(" ");            
         }  
      }
   }
}

void CAMMINA()
{
  if(Pronto_a_Camminare==1)
    {
     digitalWrite(41,LOW);//mantieni la posizione del PassoPasso su cui è montato l'Ultrasuono
     if(Cammina==0)//nel caso 0 Fermo
       { 
        digitalWrite(Avanti,LOW);//PRIMA SPENGO
        digitalWrite(Indietro,LOW);//POI ......
       }
     if(Cammina==1)//nel caso 1 Avanti
       {
        digitalWrite(Indietro,LOW);//PRIMA SPENGO
        digitalWrite(Avanti,HIGH);//POI Accendo
       }
     if(Cammina==2)//nel caso 2 Indietro
       {
        digitalWrite(Avanti,LOW);//PRIMA SPENGO
        digitalWrite(Indietro,HIGH);//POI Accendo
       }
    }   
}

void STERZA()
{  
  if(SterzataPronta==1)
    {
     if(Direzione==0){SterzataPronta=0;}     
     if(Direzione==3){SterzaGradi=90;} 
     if(Direzione==1000){SterzaGradi=30;}
     if(Direzione==100){SterzaGradi=60;}       
     if(Direzione==10){SterzaGradi=120;}
     if(Direzione==1){SterzaGradi=150;}     
     if(Direzione==1100){SterzaGradi=45;}    
     if(Direzione==11){SterzaGradi=135;}
    }  
     Sterza.write(SterzaGradi); 
}

void AVANZA_TRANQUILLO()
{  
  if(AvanzaTranquillo==1)//SE è tutto Tranquillo,
    {    
     AttivaUltrasuono=1;//PREPARATI a lanciare il Void
     ULTRASUONO();//LANCIA il Void      
     if(VerificaDistanza[PuntaDistanza]>=80){Avanza=1;}//SE la distanza è maggiore di 80,,,, è tutto Tranquillo              
     if(VerificaDistanza[PuntaDistanza]<=80){Avanza=0;}//SE la distanza è minore di 80,,,NON è tutto Tranquill0 
    
     if(Avanza==1)//SE è tutto Tranquillo,
       {
        Serial.print("VerificaDistanza[PuntaDistanza]  ");
        Serial.println(VerificaDistanza[PuntaDistanza]);                    
        SterzataPronta=1;////preparati a sterzare le ruote     
        Direzione=3;//addrizza le ruote     
        Pronto_a_Camminare=1;//PREPARATI a lanciare il Void    
        Cammina=1;//avanza            
       }
     if(Avanza==0)//SE NON è tutto Tranquillo
       {
        AvanzaTranquillo=0;
       }
    }
  if(AvanzaTranquillo==0)//SE  NON è tutto Tranquillo,
    {               
     AttivaUltrasuono=0;         
     Cammina=0;//FERMATI SUBITO
     Pronto_a_Camminare=0;//BLOCCA questo Void      
     ScriviOsservazione=1;
     Osservazione=1; 
     OSSERVAZIONE();
     if(Media==3)//SE hai osservato tutto
       {
        Osservazione=0;      
        if(MediaMemorieTotale[2]>80)
          {           
           AvanzaTranquillo=1;                 
          }
        if((MediaMemorieTotale[0]<80)&&(MediaMemorieTotale[1]<80)&&(MediaMemorieTotale[2]<80)&&(MediaMemorieTotale[3]<80)&&(MediaMemorieTotale[4]<80))//SE tutte le vie hanno ostacoli
          {
           VicoloCieco=1;//sei in un vicolo cieco
           if(VicoloCieco==1)//SE sei in un vicolo cieco
             {    
               :cold_sweat:  :cold_sweat:  :cold_sweat:  :cold_sweat: 
             }
          }
        if((MediaMemorieTotale[0]>80)||(MediaMemorieTotale[1]>80)||(MediaMemorieTotale[2]>80)||(MediaMemorieTotale[3]>80)||(MediaMemorieTotale[4]>80))//SE alcune vie NON hanno ostacoli
          {
           VicoloCieco=0;//NON sei in un vicolo cieco
           if(VicoloCieco==0)//SE NON sei in un vicolo cieco
             { 
                :grinning:  :grinning:  :grinning:  :grinning:                              
             }        
           }
       Media=0;
      }
   } 
}

void loop()
{              
 AVANZA_TRANQUILLO();   
 CAMMINA();
 STERZA();
}

[/code]
Adesso il mio robottino si è fermato perche davanti ha un ostacolo e non si trova in un vicolo cieco.

Devo affrontare questo primo problema (quello con le faccine :grinning: :grinning:) quindi mi è ventuto in mente di mettere al posto delle faccine questi 2 Void(ancora in fase di progettazione)

void CERCA_PERCORSO()
{
  if(CercaPercorso==1)
    {
     if((MediaMemorieTotale[0]>=80)&&(MediaMemorieTotale[1]<80)&&(MediaMemorieTotale[3]<80)&&(MediaMemorieTotale[4]<80))
       {
        PercorsiTrovati=1; 
        Direzione=1000;
       } 
     if((MediaMemorieTotale[0]<=80)&&(MediaMemorieTotale[1]>80)&&(MediaMemorieTotale[3]<80)&&(MediaMemorieTotale[4]<80))
       {
        PercorsiTrovati=1;  
        Direzione=100;
       }
     if((MediaMemorieTotale[0]<=80)&&(MediaMemorieTotale[1]<80)&&(MediaMemorieTotale[3]>80)&&(MediaMemorieTotale[4]<80))
       {
        PercorsiTrovati=1; 
        Direzione=10;
       } 
     if((MediaMemorieTotale[0]<=80)&&(MediaMemorieTotale[1]<80)&&(MediaMemorieTotale[3]<80)&&(MediaMemorieTotale[4]>80))
       {
        PercorsiTrovati=1;  
        Direzione=1;
       }        
     if((MediaMemorieTotale[0]>=80)&&(MediaMemorieTotale[1]>80)&&(MediaMemorieTotale[3]<80)&&(MediaMemorieTotale[4]<80))
       {
        PercorsiTrovati=2;  
        Direzione=1100;
       }       
     if((MediaMemorieTotale[0]<=80)&&(MediaMemorieTotale[1]<80)&&(MediaMemorieTotale[3]>80)&&(MediaMemorieTotale[4]>80))
       {
        PercorsiTrovati=2;  
        Direzione=11;
       }
     if((MediaMemorieTotale[0]>=80)&&(MediaMemorieTotale[1]<80)&&(MediaMemorieTotale[3]<80)&&(MediaMemorieTotale[4]>80))
       {
        PercorsiTrovati=2;  
        Direzione=1001;
       } 
     if((MediaMemorieTotale[0]>=80)&&(MediaMemorieTotale[1]<80)&&(MediaMemorieTotale[3]>80)&&(MediaMemorieTotale[4]>80))
       {
        PercorsiTrovati=2;  
        Direzione=1010;
       }
      if((MediaMemorieTotale[0]<=80)&&(MediaMemorieTotale[1]>80)&&(MediaMemorieTotale[3]<80)&&(MediaMemorieTotale[4]>80))
       {
        PercorsiTrovati=2;  
        Direzione=101;
       }
      if((MediaMemorieTotale[0]<=80)&&(MediaMemorieTotale[1]>80)&&(MediaMemorieTotale[3]>80)&&(MediaMemorieTotale[4]<80))
       {
        PercorsiTrovati=2;  
        Direzione=110;
       }       
      if((MediaMemorieTotale[0]>=80)&&(MediaMemorieTotale[1]>80)&&(MediaMemorieTotale[3]>80)&&(MediaMemorieTotale[4]<80))
       {
        PercorsiTrovati=3; 
        Direzione=1110;
       } 
     if((MediaMemorieTotale[0]>=80)&&(MediaMemorieTotale[1]>80)&&(MediaMemorieTotale[3]<80)&&(MediaMemorieTotale[4]>80))
       {
        PercorsiTrovati=3;  
        Direzione=1101;
       }
     if((MediaMemorieTotale[0]>=80)&&(MediaMemorieTotale[1]<80)&&(MediaMemorieTotale[3]>80)&&(MediaMemorieTotale[4]>80))
       {
        PercorsiTrovati=3;  
        Direzione=1011;
       } 
     if((MediaMemorieTotale[0]<=80)&&(MediaMemorieTotale[1]>80)&&(MediaMemorieTotale[3]>80)&&(MediaMemorieTotale[4]>80))
       {
        PercorsiTrovati=3;  
        Direzione=111;
       } 
     if((MediaMemorieTotale[0]>=80)&&(MediaMemorieTotale[1]>80)&&(MediaMemorieTotale[3]>80)&&(MediaMemorieTotale[4]>80))
       {
        PercorsiTrovati=4;  
        Direzione=1111;
       }         
     CercaPercorso=0;
    }
  if(CercaPercorso==0)
    {
     DecidiPercorso=1; 
     DECIDI_PERCORSO();
    }  
}



void DECIDI_PERCORSO()
{
  if(DecidiPercorso==1)
    {
     if(PercorsiTrovati==1)
       {

in CERCA_PERCORSO() ho trovato i vari percorsi (1 sta per libero…0 sta ostacolato).

in DECIDI_PERCORSO() mi sono arenato :sob: :sob: :sob: :sob: siccome ho capito che avendo più percorsi da poter prendere, non so come prendere una decisione e nel caso tornare indietro sui mie passi.

Avrei bisogno di un aiuto.

SCUSATE SE DIVISO IN 3 PARTI,MA SUPERAVO I 9000 CARATTERI.