problema connessione Arduino Mega 2560 < Firmata > VisualBasic 2010

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

Buongiorno a tutti,

e come al solito sono ancora a rompere le scatole (ogni commento sulla mia insistenza è ben accetta ;)).

mi è tornato il PC con un po di modifiche, ho provato subito Arduino Uno con dei led per vedere se funziona: funziona perfettamente; anche mandando comandi più velocemente della luce non si blocca e fa tutto come dovrebbe.

Ma non finisce qui.

Attaccato Arduino Mega con attaccata la scheda relè: tutto come prima. Dopo qualche comando si blocca.

Ora stavo cercando di capire il perché. Mi viene in mente, come proposto qualche posta fa, che sia colpa dell'alimentazione, ovvero che Arduino non riesce a far fronte ai consumi della scheda (anche se, per ora ho collegato solo 2 relè degli 8 disponibili).

Ho chiesto in un altro topic se il collegamento possa andare bene, ma allora cosa posso fare? lo devo comandare con dei transistor? non è fatto apposta per funzionare con Arduino a 5V con 20 Ma di assorbimento?

vi posto la marca della scheda relè:

e come confermato da Brunello, lo schema di collegamento, con un alimentatore esterno, è il seguente.

Qualche consiglio? Dove posso comprare una scheda relè seria o consigliate di farlo da me?

Grazie mille,

Giacomo.

Ho anche io moduli simili. Quello che hai tu ha dei fotoaccoppiatori. Se l'Arduino alimenta solo i fotoaccoppiatori non ci dovrebbero essere problemi a meno che il consumo anche dei fotoaccoppiatori superi il massimo disponibile da Arduino.

Ma il computer ha adesso USB2 o no? Penso non si possano trasformare delle usb1 in 2, bisogna aggiungere una scheda nuova.

Il tecnico ha detto che ha dovuto mettere una PIC? :roll_eyes: nuova perché Windows 7 non supportava le USB1 o qualcosa del genere. Ha anche cambiato la scheda di rete e messo un po di dam in più, almeno per quello che ho capito io.

La scheda l'ho proprio presa con i fotoaccoppiatori sia per proteggere Arduino che per farlo consumare poco, anche se ho messo anche l'alimentatore esterno.

Potrebbe essere che la scheda è difettosa? quale altra consigliate di acquistare, di buona qualità?

Grazie a tutti,

Giacomo.

Ma quale sketch usi ? Non è che adesso usi uno sketch + complesso e magari con un errore?

era quello che mettevo anche prima, anzi più leggero dell'iniziale.

te lo posto, magari mi sfugge qualche errore

int Co2 = 8;
int O2 = 13;

char iniezione;

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

void loop(){

   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);
      }
   }
}

Ho messo un led con una resistenza da 220 e ho usato il led del pin 13 come indicatori e tutto funziona su arduino uno, ma quando passo sul Mega, con in quei pin le uscite per la scheda relè dopo un po si blocca

Ho provato anche a staccare le scheda relè da Arduino Mega e mettevi solo un led con resistenza di 220 ohm e usare il led sul pin 13 come altro indicatore e tutto funziona benissimo. Non è che devo mettere una resistenza anche per i led del fotoaccoppiatore o dite che è la scheda che è da buttare?

Giacomo