Problema configurazione programma

ho capito come dici tu. e anzicche stravolgere cosi tanto il programma, che ne pensi se applicassi lo switch solo alla modalità automatica?

No scusa lo switch nella modalità automatica non serve a nulla, li devi solo leggere un singolo valore che è quello di uscita.

ah ecco, e senza usare lo switch, come posso fare? non che non voglia usarlo ma cambiare tutto il programma non è facile

questo è il codice a cui sono arrivato ora:

if(marcia== 'U'){
    for(i=0;i<2;i++){
  digitalWrite(trigPin, LOW);// si imposta il trigpin spento per 2 microsecondi
  delayMicroseconds(2);
  digitalWrite(trigPin, HIGH);//invia per 10 microsecondi un segnale
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);// si spegne il trigpin
  int distance = pulseIn(echoPin, HIGH); // si legge il segnale (distanza in tempo <x>)
  distance= distance/58;
   if((distance>30)&&(distance!=0)){  // a volte arrivano degli zeri e quelli non li devo prendere in considerazione
    digitalWrite(input1m1,HIGH); // accendo il motore
    digitalWrite(input2m1,LOW);
    analogWrite(enablem1, 200);
   }
   if((distance<30)&&(distance!=0)){
      analogWrite(enablem1, 0);  //il motore si ferma e indica col cicalino l'arresto
      digitalWrite(7,HIGH);
      delay(500);
      digitalWrite(7,LOW);
      delay(500);
   }
   else if(marcia=='u'){
    i=10;
    digitalWrite(input1m1,HIGH); // spengo il motore
    digitalWrite(input2m1,HIGH);
    goto fuori;
   }
   i--;
   }
}
fuori:

se mi puoi aiutare a uscire dalla modalità senza usare switch o altri fatti, solo modificando l errore del mio codice sarebbe la cosa migliore

Questa è la parte della modalità automatica

    do
    {
        //Automatico
        if(available() && rx() == 1) mode = 0;
    } while(mode == 1);

Vedi non ci sono switch! mi sembra un codice particolarmente semplice da comprendere, dove c'è scritto automatico metti il codice di gestione del mezzo in modalità automatica.

ok perfetto grazie mille ma cosa metto a -avaible -rx -mode==0 -mode==1

non ci sono queste cose nel mio programma non so che mettere

non mi dire niente, puoi darmi un ultima dritta?

Clash230: non mi dire niente, puoi darmi un ultima dritta?

Scegli una delle due opzioni XD

available() => BluetoothSerial.available() rx() => BluetoothSerial.read();

mode è un semplice flag che ti deve indicare la modalità corrente di esecuzione (automatica o manuale)

ahahah hai ragione

comunque i "mode" servono per entrare e uscire dalla modalità automatica giusto?

e anche da quella manuale.

io avevo pensato che "mode==0" indica l' uscita dalla modalità automatica e "mode==1" la condizione while per farlo restare

che ne pensi?

Tutto dipende dal codice che hai scritto. Come l'ho scritto io 0 indica la modalità manuale 1 la modalità automatica, poi i cicli si basano su questi valori.

si l ho appena provato e funziona alla perfezione solo che dopo che disattivo, resta in funzione ancora un poco, ma non fa niente. GRAZIE MILLE

Significa che areni il codice in un determinato punto, posta il codice completo.

if(marcia== 'U'){
    do
 {
    digitalWrite(trigPin, LOW);// si imposta il trigpin spento per 2 microsecondi
  delayMicroseconds(2);
  digitalWrite(trigPin, HIGH);//invia per 10 microsecondi un segnale
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);// si spegne il trigpin
  int distance = pulseIn(echoPin, HIGH); // si legge il segnale (distanza in tempo <x>)
  distance= distance/58;
   if((distance>30)&&(distance!=0)){  // a volte arrivano degli zeri e quelli non li devo prendere in considerazione
    digitalWrite(input1m1,HIGH); // accendo il motore
    digitalWrite(input2m1,LOW);
    analogWrite(enablem1, 200);
   }
   if((distance<30)&&(distance!=0)){
      analogWrite(enablem1, 0);  //il motore si ferma e indica col cicalino l'arresto
      digitalWrite(7,HIGH);
      delay(500);
      digitalWrite(7,LOW);
      delay(500);
   }

    if(BluetoothSerial.available() && BluetoothSerial.read()=='u') {goto fuori;}
  } while(marcia=='U');
}
fuori:

Perche proprio non ascolti, TOGLI I GOTO!!!

scusa ma qual è il problema di quel goto? il programma va alla perfezione, rimane solo attivo mezzo secondo dopo che arriva il segnale, e mi sembra che sia accettabile

Va bene allora ok.