problema connessione Arduino Mega 2560 < Firmata > VisualBasic 2010

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

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

mi esce questa scritta

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

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.

provo subito :wink:

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

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 Terminal.

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.

@ 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.

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

Attenzione! 8) :slight_smile:

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?

GiacomoSam:
...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.

E' chiaro che perde caratteri!

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

GiacomoSam:
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?

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

Mi quoto. Magari perderà anche un carattere ma a me (anche con +CR) non si inchioda Windows XP ne l'IDE

Allora:

@nid69ita:

io mandavo semplicemente un '1', poi dopo qualche secondo un '2' e così via, se nessun CR o altro, credo come hai fatto tu.

io mando un solo carattere alla volta, almeno per ora, ma poi dovrò marne una decina, ma visto che non funzionava ha tolto tutto dallo sketch e provato solo a mettere i comandi in ricezione.

Comunque ho chiamato il tecnico del dipartimento che ha portato via il PC incriminato. Ha detto che lo formatta, gli mette un po più di dam e se riesce installa Windows 7 8). Anche lui non si capacitava di questi problemi

Spero per settimana prossima di avere di nuovo il PC e di arrivare a un punto.

Ringrazio tutti voi per l'aiuto e la pazienza

Giacomo

@ icio

Purtoppo il mio PC non riesce ad aprire il video (provo ad aprirlo con VLC, può andare bene? :roll_eyes:).

E sinceramente non ho capito bene: dovrei collegare il pin 2 a un ingresso di Arduino?

quando arrivo a casa provo ad aprire il file con il computer di casa.

Grazie

Giacomo

GiacomoSam:
Allora: @nid69ita:
io mandavo semplicemente un '1', poi dopo qualche secondo un '2' e così via, se nessun CR o altro, credo come hai fatto tu.
io mando un solo carattere alla volta, almeno per ora, ma poi dovrò marne una decina, ma visto che non funzionava ha tolto tutto dallo sketch e provato solo a mettere i comandi in ricezione.
Giacomo

Io anche, sia Cr che senza, ed ad un certo punto ho iniziato a mandare caratteri uno dietro l'altro, sembravo il super-eroe Flash :grin:
Ma nulla, nessun problema. E poi con Mac non ti dava problemi. Secondo me c'era qualcosa in Windows. (Che era 7 o XP ? )

Allora mi sa che è proprio come hai fatto io :roll_eyes:.

usavo XP professional. Anche il tecnico mi ha detto che forse il PC aveva qualche problema cos' ha detto che lo formattava e provava a mettere Windows 7 al posto di XP, se riusciva a mettere un po di RAM in più. Spero per lunedì di riavere il PC e soprattutto senza problemi :wink:

Vi terrò aggiornati sugli avvenimenti.

Grazie mille per ora.

Giacomo.

Sto ancora aspettando che mi aggiustino il PC.

Ho una domanda che forse può essere stupida:

Non è che non funzioni per colpa della USB 1.0? Ripensandoci è molto strano che su due PC non funzioni allo stesso modo e invece sul Mac va tutto bene. Una delle cose comuni ai due PC sui quali non funziona è, oltre a Windows XP, è la USB che è a 1.0, ma su internet ho visto che comunque viaggiano a Mb al secondo, comunque maggiori dei miei 57600.

Grazie,

Giacomo.

Non è che si tratta di un problema di consumi? Cioè l'Arduino inizia a richiedere corrente e la porta non è in grado di darla per cui si inchioda?
Fra l'altro la Wiki inglese

riporta che la corrente fornita con USB 1.0 è di soli 150 mA contro i 500 della USB 2.0
Non dice nulla sulla USB 1.1

Può essere :~; 150 Ma mi sembrano un po pochi, anche se in realtà ho attaccato solo una scheda relè con alimentazione esterna (forza ha un darlington per pilotare il relè?? :roll_eyes:)

Non sono riuscito a trovare nessuna specifica sulle richieste della porta USB di Arduino. Se così fosse è chiaro perché non funziona sui due PC identici (i potenti mezzi dell'Università) e invece funziona sul Mac.

Spero che il tecnico sappia metterci mano altrimenti mi sa che devo comprare un PC nuovo =(
Se attacco il cavo USB, e l'alimentatore con cavo jack insieme succede qualcosa? Arduino prende corrente sia dalla USB che dall'alimentatore? Vorrei vedere qual'è l'assorbimento totale di Arduino comandando le varie uscite, se supera i 150 ma ci sta che si è trovato il problema.

Giacomo.