provato i consigli di MauroTec e va alla grande ......... Arduino riceve e invia e anche il programma in visual basic6
ma ....... 
mi si accende i primi 3 led e dopo 3 secondi (3000) dovrebbe accendersi i 5 azzurri e non lo fa.
allego il codice dello sketch e poi quello di vb6 ma credo sia un problema dello sketch perche ho invertito le uscite e si accendono prima i 5 azzurri e dopo 3 secondi restono spenti i 3 gialli.
sketch
/*
accensione di 3 led e successivamente di 5 connesso sulla porta 12 e 11
da un comando inviato da VB6 sulla porta seriale (com4).
Grazie MarioTec
http://arduino.cc/forum/index.php/topic,59472.0.html
*/
#define led 12 // led connesso al pin n°12
#define led2 11 // led connesso al pin n°11
byte carattere = 0; // variabile per contenere il carattere ricevuto
void setup()
{
Serial.begin(9600); // imposto la UART per lavorare a 9600
pinMode(led, OUTPUT); // imposto il pin sul quale è collegato il led come uscita
pinMode(led2, OUTPUT); // imposto il secondo pin sul quale è collegato il led come uscita
Serial.flush(); // svuoto il buffer di ricezione seriale
}
void loop()
{
if (Serial.available() >0) // Controllo se il buffer di ricezione contiene qualcosa
{
carattere = Serial.read(); // leggo il carattere ricevuto e lo memorizzo in carattere
Serial.flush(); // svuoto il buffer di ricezione seriale
}
if (carattere=='A' || carattere=='a') // ho ricevuto la A maiuscola o minuscola?
{ digitalWrite(led,HIGH); // accendo 3 led gialli collegati alla porta 12
Serial.print("Hai premuto: ");
Serial.print(carattere,BYTE);
Serial.println();
delay(3000);
digitalWrite(led2,HIGH); // accendo 5 led azzurri collegati alla porta 11
}
if (carattere=='C' || carattere=='c') // ho ricevuto la C maiuscola o minuscola
{ digitalWrite(led2,LOW); // spengo 5 led azzurri collegati alla porta 11
Serial.print("Led spenti");
Serial.println();
delay(3000);
digitalWrite(led,LOW); // spengo 3 led gialli collegati alla porta 12
} else { // qui ho deciso che in tutte le altre possibilita' resti spento
digitalWrite(led,LOW); // spengo i 3 led gialli collegati alla
digitalWrite(led2,LOW); // spengo i 5 led azzurri collegati alla
}
}
codice vb6
```
[u]**Private Sub cmdesci_Click()
MSComm1.Output = "68"
MSComm1.PortOpen = False
End
End Sub
Private Sub cmdfine_Click()
MSComm1.Output = "c"
txttx.Text = ""
Dim datirx
datirx = MSComm1.Input ' Leggo il contenuto del buffer di ricezione (e svuoto .Input)
If Len(datirx) Then ' Se ho ricevuto qualcosa lo scrivo nella TextBox
txtrx.Text = txtrx.Text & datirx
End If
End Sub
Private Sub cmdinvio_Click()
MSComm1.Output = "a"
txttx.Text = ""
Dim datitx
datitx = MSComm1.Input ' Leggo il contenuto del buffer di ricezione (e svuoto .Input)
If Len(datitx) Then ' Se ho ricevuto qualcosa lo scrivo nella TextBox
txttx.Text = txttx.Text & datitx
End If
End Sub
Private Sub Form_Load()
MSComm1.CommPort = 4 'porta com4
MSComm1.Settings = "9600,n,8,1" 'setto la porta
MSComm1.RThreshold = 1 ' voglio essere informato della ricezione di ogni singolo carattere
On Error Resume Next 'Impostiamo anche PortOpen a True come rilevazioni di errori
MSComm1.PortOpen = True 'apro la porta
If Err Then
MsgBox "impossibile aprire la porta: Com" & MSComm1.CommPort & ", controllare collegamenti." & vbCrLf & Error$
End If
End Sub
Private Sub MSComm1_OnComm()
Dim Rx$
Rx$ = MSComm1.Input ' Leggo il contenuto del buffer di ricezione (e svuoto .Input)
If Len(Rx$) Then ' Se ho ricevuto qualcosa lo scrivo nella TextBox
txttx.Text = txttx.Text & Rx$
End If
End Sub
Private Sub txttx_KeyPress(KeyAscii As Integer)
MSComm1.Output = Chr$(KeyAscii)
End Sub**[/u]
```
se qualche anima gentile vuole avventurarsi ...
