buonasera a tutti
Mi chiamo Marco(-DATA-) ho 16 anni e sono alle prime armi con questo tipo di scheda, ho acquistato una arduino uno R3 per il progetto di un mano animatronica pilotata da un guanto sul quale sono applicati dei sensori di flessione ho creato un circuito su una millefori, un circuito molto seplice, posto , la foto,
il mio problema è che collegado il tutto allarduino e alimetando l'arduino stessa con un alimentatore a tensione variabile dai 3V ai 12V e collegando l'arduino al pc, la mano non risponde correttamente ai comandi: i servo montati sono gli HXT900 , ora non capisco perchè questi servo abbiano come degli spasmi omeglio come se la tensione mancasse e poi tornasse con un continuo movimento anche se minimo di questi servo e quindi delle dita che sono collegate. Non credo che l'errore sia dovuto ad hardware e quindi posto qui in mio script così che qualcuno possa autarmi a trovare magari una stringa che generi questo effetto molto fastidioso sui servo, noto anche che l'arduino mi si sconnette automaticamnete dal pc una volta che chiuduo tutte le dita o che compio dei movimenti continui, in piu vorrei anche mi fosse chiarita un po' la funzione map, come bisogna regolarla?? grazie mille a tutti
-IL MIO CODICE-
#include <Servo.h>
// Dichiarazione servo
Servo servo1;
Servo servo2;
Servo servo3;
Servo servo4;
Servo servo5;
int flex1 = 5; // ingresso analogico per sensori di flessione
int flex2 = 4;
int flex3 = 3;
int flex4 = 2;
int flex5 = 1;
int val; // lettura valori sensori
void setup()
{
Serial.begin(9600); //connessione pc e arduino
servo1.attach(6); // pollice
servo2.attach(5); // indice
servo3.attach(3); //medio
servo4.attach(4); //anulare
servo5.attach(2); //mignolo
}
void loop()
{
val = analogRead(flex1); // valore sensore letto e appreso POLLICE
Serial.println(val); // elaorazione valore sensore
val = map(val, 50, 600, -150, 600); // scala parametri sensori servo
servo1.write(val); // lettura parametri
delay(15);
val = analogRead(flex2);
Serial.println(val);
val = map(val, 50, 200, -300, 200); //INDICE
servo2.write(val);
delay(15);
val = analogRead(flex3);
Serial.println(val);
val = map(val, 50, 600, -100, 600); //................................................. MEDIO
servo3.write(val);
delay(15);
val = analogRead(flex4);
Serial.println(val);
val = map(val, 50, 500, -250, 600); //ANULARE
servo4.write(val);
delay(15);
val = analogRead(flex5);
Serial.println(val);
val = map(val, 30, 300, -150, 200); //................................................. MIGNOLO
servo5.write(val);
delay(15);
}