....
Ipotizzo: non hai messo le resistenze in serie ai led e dopo 4 secondi ti si è bruciato il pin di Arduino.
La corrente massima erogabile da un pin è di 40mA (ma MASSSIMA!!), si consiglia di solito di non superare i 20mA.
Inoltre per singola porta, ovvero un gruppo di pin, non puoi erogare più di 200mA, meglio non superare i 150.
Per collegare i motori invece ti consiglio di usare dei transistor con diodo di ricircolo. Necessitano di molta più corrente che non un led e Arduino non la può fornire.
Tra l'altro... che tipo di motori sono?
void loop() {
char ch;
if (Serial.available() > 0)
ch=Serial.read();
{ //LETTURA CARATTERI
if (ch=='A')
...
A me sembra che ci sia un errore.
La parentesi graffa di apertura gruppo istruzioni dopo il Serial.available va inserita prima del ch=Serial.read();
Bravo Cyb, in effeti c'è ua graffa messa male. XD
const byte A = 2;
const byte B = 3;
const byte S = 4;
const byte D = 5;
// char x=0;
void setup(){
pinMode(A,OUTPUT); //ALTO;
pinMode(B,OUTPUT); //BASSO;
pinMode(S,OUTPUT); //SINISTRA;
pinMode(D,OUTPUT); //DESTRA;
// pinMode(FC,INPUT);
digitalWrite(A,LOW);
digitalWrite(B,LOW);
digitalWrite(S,LOW);
digitalWrite(D,LOW);
Serial.begin(9600);
}
void loop() {
if (Serial.available() > 0)
{
char ch = Serial.read(); //LETTURA CARATTERI
if (ch=='A') //carico verso l'alto
digitalWrite(A,HIGH);
if (ch=='B') //carico verso il basso
digitalWrite(B,HIGH);
if (ch=='S') //rotazione a sinistra della gru
digitalWrite(S,HIGH);
if (ch=='D') //rotazione a destra della gru
digitalWrite(D,HIGH);
if (ch=='F') //arresto motori
{
digitalWrite(A,LOW);
digitalWrite(B,LOW);
digitalWrite(S,LOW);
digitalWrite(D,LOW);
}
}
}
@arduino_solari:
per favore, quando includi del codice, fallo usando gli appositi tag.
Fai l'eco dei caratteri ricevuti (=rispedisci indietro il carattere letto) e guarda un po' se per caso sulla seriale arriva qualche cosa che non deve.
arduino_solari:
E come si fa?
Metti un Serial.print dopo il Seria.read e rispedisci indietro quello che l'Arduino ha letto (istruendo il dispositivo/programma che stai usando per spedire i dati di leggere le cose che tornano indietro).
a parte questo, ci sono altre soluzioni per risolvere il problema?
La mia non è una soluzione al problema ma un metodo di diagnostica.
Ti suggerito un qualcosa con cui fare debugging e verificare intanto che i dati arrivino corretti. Il tuo codice è semplice, mi pare funzionante. Se si spengono i led può darsi che arrivino caratteri spuri tra cui la "F". Vediamo intanto di escludere questo problema.
Che cosa usi per spedire i dati?
Un terminale o un programma?
Perciò modifica il programma in modo che possa anche stampare ciò che riceve. Fai lo stesso su Arduino e guarda un po' se transitano caratteri non voluti
Però continua a fartelo, giusto?
Potresti pubblicare l'ultima versione del programma che stai usando?