Go Down

Topic: problema connessione Arduino Mega 2560 < Firmata > VisualBasic 2010 (Read 21837 times) previous topic - next topic

GiacomoSam

@nid69ita

io sto usando l'IDE 1.0.5-r2 e mando i comandi direttamente dalla seriale, ma anche andando piano (distanza di qualche secondo) mi si impalla tutto.

ho provato anche a copiare lo sketch di Guglielmo così com'è ma nulla.

P.s. Non è che c'è qualche problema con Java? :smiley-slim:

Giacomo.

nid69ita

Se voi, pubblica lo sketch, e provo anche io con la mia Arduino Uno e Windows XP.
Quali valori bisogna mandare da monitor seriale?
my name is IGOR, not AIGOR

GiacomoSam

Grazie mille, così mi tolgo il dubbio e capisco se il problema è nel mio PC

ecco lo sketch:

Code: [Select]

int pH1;
int pH2;
int DO;
int Co2 = 8;
int O2 = 12;

char iniezione;

void setup(){
   Serial.begin(57600);
   pinMode(Co2, OUTPUT);
   pinMode(O2, OUTPUT);
}

void loop(){
   pH1 = analogRead(A1);
   Serial.println(pH1);
   delay(50);
   Serial.flush();
   
   pH2 = analogRead(A0);
   Serial.println(pH2);
   delay(50);
   Serial.flush();
   
   DO = analogRead(A2);
   Serial.println(DO);
   delay(50);
   Serial.flush();

   if (Serial.available() > 0){
      iniezione = Serial.read();
      switch (iniezione) {
      case '1':
         digitalWrite(Co2, HIGH);
         digitalWrite(O2, LOW);
         break;
      case '2':
         digitalWrite(Co2, LOW);
         digitalWrite(O2, HIGH);
         break;
      case '0':
         digitalWrite(Co2, LOW);
         digitalWrite(O2, LOW);
         break;
      default:
         break;
      }
     
      while (Serial.available()){
         Serial.read();
         delay(1);
      }
   }
}


bisogna mandare i valori '1', '2' o '0' per attivare o meno le uscite 8 e 12.

Giacomo.

nid69ita

#33
Apr 09, 2014, 04:53 pm Last Edit: Apr 09, 2014, 04:55 pm by nid69ita Reason: 1
Fatto. A me non sembra dare problemi. Io però non ho nulla di collegato agli analogici.
Su 8 e 12 ho messo 2 led e funzionano.
P.S. uso la 1.0.5 non credo r2 però.
Allego immagine del monitor seriale prima di inviare 2
my name is IGOR, not AIGOR

GiacomoSam

Se vi può essere utile, una volta caricato lo sketch, sotto la scritta "Caricamento terminato"

mi esce questa scritta

Code: [Select]
Dimensione del file binario dello sketch: 5.110 bytes (su un massimo di 258.048 bytes)
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_getsync(): timeout communicating with programmer


Vi dice qualcosa.

Grazie ancora,

Giacomo

nid69ita

#35
Apr 09, 2014, 04:56 pm Last Edit: Apr 09, 2014, 04:59 pm by nid69ita Reason: 1
Banalmente, hai provato a cambiare il cavo USB ?

Ho provato anche con versione 1.5.5 nessun problema.
Quegli errori non mi dicono nulla ma a me non li da.
my name is IGOR, not AIGOR


GiacomoSam

Allora

ho cambiato il Cavo

cambiato PC

cambiato Arduino

cambiato IDE (1.0.5, 1.0.5-r2, 1.5.6-r2)

e nulla da fare.

LA cosa più curiosa è che mettendo tutto su un Mac va tutto bene, ma non posso usare VB sul Mac


zoomx

Se hai qualche altro dispositivo che funziona in serale collegalo al PC e fai un test con la console seriale dell'IDE, giusto per vedere se non è un problema dell'IDE.

Oppure invece di usare il terminale seriale dell'IDE usa Hyperterminal o questo http://sites.google.com/site/terminalbpp/.

Fra l'altro il terminale dell'IDE non manda nulla finché non si preme il return mentre quello che ho linkato manda il carattere immediatamente.

GiacomoSam

@ zoomx.

ho provato a fare come dici tu (credo  :~).

Ho scaricato il terminal che mi hai postato. Su l'arcuino nuovo con cavo nuovo ho caricato uno sketch come quello postato in precedenza ma togliendo la parte di read, mettendo solo la parte di ricezione, tramite il mac.


Code: [Select]
int avanti = 8;
int indietro = 12;

char movimento;

void setup(){
Serial.begin(9600);
pinMode(avanti, OUTPUT);
pinMode(indietro, OUTPUT);


}

void loop(){
 
  if (Serial.available() > 0){
    movimento = Serial.read();
    switch(movimento){
    case '1':
    digitalWrite(avanti, HIGH);
    digitalWrite(indietro, LOW);
    break;
   
    case '2':
    digitalWrite(avanti, LOW);
    digitalWrite(indietro, HIGH);
    break;
   
    case '3':
    digitalWrite(avanti, LOW);
    digitalWrite(indietro, LOW);
    break;
    }
    while (Serial.available()){
      Serial.read();
      delay(1);
    }
  }
}
   


testato e funziona perfettamente. Poi ho spostato il cavo USB dal mac al PC, aperto il programma, scelto la porta COM4, premuto "Connect" e dato gli ordini dalla text box con di fianco scritto "+CR e -> Send". Ho messo nello sketch il baou rate a 9600 e lasciato nel terminal 9600 senza toccare altro. Come al solito mi prende i primi 3 o 4 comandi e poi si impianta e devo fare Citrl+alt+canc. Una cosa: a me non li manda subito, ma devo premere invio e poi cancellare il carattere prima di mettere quello nuovo, che poi mi mette tutto nel box sotto.

Un'altra cosa: ma è normale che il led 13 rimanga sempre acceso a meno che io non gli dica di spegnersi?

Per collegare altri dispositivi alla seriale per vedere se funziona, non mi viene in mente nulla. Mi consigli di provare con altro?

Grazie mille per i consigli.

Giacomo

GiacomoSam

Attenzione! 8) :)

mandando i comandi da Hyperterminal di Windows tutto funziona quasi perfettamente (forse era lui che mandava i carateri direttamente :~). si blocca solo quando mando comandi molto velocemente (ora sto usando 9600 baud)

Cosa vuol dire?


nid69ita


...e dato gli ordini dalla text box con di fianco scritto "+CR e -> Send". Ho messo nello sketch il baou rate a 9600 e lasciato nel terminal 9600 senza toccare altro.

Ma anche da monitor seriale fai aggiungere CR ? Perchè nelle mie prove (vedi la mia foto) non aggiungo nulla, invio il carattere puro senza aggiunte. Tu nel tuo codice dopo lo switch() hai un ulteriore ciclo di lettura.
my name is IGOR, not AIGOR

icio

E'  chiaro che perde caratteri!

Hai considerato il mio post in questo argomento? E' il 5 messaggio nella seconda pagina

zoomx


premuto "Connect" e dato gli ordini dalla text box con di fianco scritto "+CR e -> Send". Ho messo nello sketch il baou rate a 9600 e lasciato nel terminal 9600 senza toccare altro. Come al solito mi prende i primi 3 o 4 comandi e poi si impianta e devo fare Citrl+alt+canc. Una cosa: a me non li manda subito, ma devo premere invio e poi cancellare il carattere prima di mettere quello nuovo, che poi mi mette tutto nel box sotto.


Devi scrivere direttamente nel box sotto dove poi ti appaiono i caratteri, il box sopra che hai usato serve proprio a comporre una stringa prima di mandarla, come succede con l'IDE. Non devi mettere la spunta su +CR in quanto il tuo programma su arduino non si aspetta alcun CR.

@icio
In effetti sembrerebbe il problema che hai descritto ma non si capisce come mai si pianti invece di ignorare i caratteri.

GiacomoSam,
ma tu quanti caratteri alla volta mandi?

icio

Dipende da come è gestito il flusso in ingresso da arduino, non scarta il CR ma nemmeno lo elabora più quando la coda è terminata ,  probabilmente e dico probabilmente durante l'elaborazione del messaggio viene toccato qualche registro dell'USART

Go Up