Malfunzionamento Arduino porta seriale computer fisso e portatile?

Ho un problema abbastanza complesso. Sul mio arduino utilizzo quasi tutte le uscite digitali con collegamenti a diversi led. Quando un pin da corrente la serie di led si accende.
CASO 1 PC FISSO
Mando sulla seriale usb le giuste combinazioni di lettere (esempio "a" --> pin13 ; "b"--> pin12 ecc..) è attiva correttamente il tutto.
CASO 2 PC PORTATILE
Testato con 2 computer aventi stesso e diverso sistema operativo del pc fisso.
Mando sulla seriale le lettere per attivare i pin:
"a"--> corrente pin13 si accende correttamente
"b"--> corrente pin12 MA NELLO STESSO ISTANTE CORRENTE ANCHE AL PIN13
"c"--> corrente pin11 MA NELLO STESSO ISTANTE CORRENTE ANCHE AL PIN13

è una situazione abbastanza strana perchè sul pc fisso S.O. windows xp funziona correttamente, e il programma scritto in Arduino è uguale!

Aspetto importanti soluzioni e consigli grazie tante a chiunque può darmi una mano

Il PC "fisso" in genere può erogare più corrente (sino ad un max di 500mA) per porta USB.

Il portatile, proprio per la sua natura, dispone di software che limitano la massima corrente erogabile.

Ma a prescindere da questo... hai inserito dei resistori di limitazione corrente per ogni uscita?

Eventualmente posta lo schema e lo sketch.

ho pensato, se fosse un problema di driver come potrei risolvere?

  1. non è buona cosa usare tante uscite dell'Arduino per piltoare componenti che assorbono abbastanza corrente. Al max si parla di 100/150 mA per porta logica del microcontrollore, 200 mA per tutte le uscite. Fai un pò di conti.
  2. più che di un limite software, credo che nel caso dei portatili si tratti di un limite hardware imposto dai controller della scheda madre. Non credo tu possa farci nulla. Rivedi il tuo circuito prevedendo un driver per led oppure uno shift register o qualche altro tipo di sistema di pilotaggio ma con alimentazione esterna.

Alimenta Arduino con un alimentatore esterno (io uso sempre 9 volt e finora mi sono trovato bene, ma se ne hai uno da 12 volt funziona ugualmente).
Prendi anche in considerazione le modifiche al circuito che ti hanno proposto.

Sull' Arduino ho giá un alimentazione esterna da 12 V per pilotare tanti led utilizzando su ogni iscuta una resistenza da 2K e dei transistor bc337

Arduino è alimentato sempre tramite i 12 V esterni, se ho capito bene.
In questo caso sarà il fantasma del pin13 che si manifesta.
Cambia pin, quello è funesto ]:smiley:
Tornando seri... ho letto in giro di vari strani comportamenti del pin13 forse legati al LED se ho correttamente interpretato le notizie. Cambia pin, magari usa il 13 per altro.
Evita anche pin0 e pin1. Su questa ultima frase chiedo conforto ai più esperti di Arduino.

Ho cambiato il pin del13 con un altro analogico come uscita, i pin 0-1-2 non li sto utilizzando. Ho notato una cosa, ho disattivato il pin12 come uscita e quando attivo gli altri pin, il pin12 eroga corrente (pur non dichiarandolo nel programma)

Ho inoltre provato con questo codice:

int led = 13;
char val = '0';
 
void setup() {
  pinMode(led,OUTPUT);
  Serial.begin(9600);
}
 
void loop () {
  val = Serial.read();
 
  if(val=='a'){
    digitalWrite(led,HIGH);
    Serial.println("led ON");
  }
  else if(val=='b'){
    digitalWrite(led,LOW);
    Serial.println("led OFF");
  }
 }

PC fisso funziona correttamente
PC portatile il led non si accende

Ho cambiato pin dal 13 al 10 (utilizzo transistor ed alimentazione esterna per i led)
Conseguenze:

PC fisso funziona correttamente

PC portatile
Attivazione pin 10 in lieve intensità
Attvazione pin 12 e 13 in grande intesità (come si nota non sono stati nè dichiarati nè settati)

Deduco che sia problema di porta seriale USB non ho altre soluzioni, voi che ne pensate?

Qui siamo a livelli di fantascienza, dai :wink:
Non è che semplicemente hai delle impostazioni sul monitor seriale per cui non trasmetti il carattere che il codice si aspetta? Ad esempio, controlla nel monitor seriale dall'apposito menu a tendina il carattere di fine riga.

Fai un altro test veloce. Prova con lo sketch Blink.

Utilizzi transistor ed alimentazione esterna per i LED... ma per Arduino?
Confermi che utilizzi un alimentatore esterno anche per Arduino?

Altrimenti alimentalo con uno da 9 V.

P.S. hai messo i resistori di pull-down nei transistor?

Sul monitor seriale in entrambi i casi adotto l'opzione "Nessun fine riga"

Arduino lo alimento con la porta seriale, ma ho provato anche con un hub USB, collegato al portatile ed alimentato

Utilizzo normali resistenze da 2K all'uscita dei pin, prima dei transistor

Ma il "malfunzionamento" sul led 13 lo hai con il tuo circuito oppure anche il semplice Blink? Era la prova che ti avevo chiesto di fare. Se staccando tutto e facendo girare il solo sketch Blink il led 13 ti funziona correttamente, è un problema del tuo circuito.

Ho inserito lo sketch "blick" identica situazione:
Attacco il cavo usb al pc fisso il circuito funziona e il led lampeggia
Attacco il cavo usb al portatile il led situato sull'arduino (arancione) lampeggia correttamente, nella situazione esterna cio è il led fisico nulla.. non si accende

GioJoker:
Arduino lo alimento con la porta seriale, ma ho provato anche con un hub USB, collegato al portatile ed alimentato

Utilizzo normali resistenze da 2K all'uscita dei pin, prima dei transistor

Prova ad alimentarlo dal suo spinotto, con un alimentatore da 9 V (o da 12 va bene anche, personalmente preferisco 9).

Intendevo resistori fra la base del transistor e GND, solitamente da 20 k ma bisognerebbe conoscere il circuito. Servono a dare un LOW fisso alla base (presumo siano transistor NPN) quando l'uscita del pin corrispondente è "indefinita".

Purtroppo non ho a disposizione uno spinotto da 9V

Tra transistor e massa ho la serie di led più le resistenze adatte ad abbassare la tensione dei 12 V a seconda di quanti e quali led ho inserito

GioJoker:
Ho inserito lo sketch "blick" identica situazione:
Attacco il cavo usb al pc fisso il circuito funziona e il led lampeggia

Scusa, GioJoker, ti ho detto di fare un test SENZA circuito, altrimenti non capiamo se è la tua scheda che ha dei problemi oppure se è il tuo circuito.. Devi far lampeggiare il led integrato sull'Arduino.

Senza circuito il led lampeggia correttamente, ne ho aggiunto uno sopra il pin 13 per sicurezza, nel caso è la porta che non andava.. ma funziona

Ho fatto altre prove con lo sketch "blink" e con il circuito attaccato
da fisso funziona, dal portatile no.. attaccando l'arduino al hub USB collegato a sua volta alla presa di corrente (nessun pc collegato) il led si accende in piccola intensità e brevi attimi

Ce l'hai uno schema del tuo circuito? Così capiamo meglio.
Anche se, per come poni la cosa, sembra proprio un problema di assorbimento di corrente.