Ciao a tutti...io ho appena cominciato con arduino e volevo sapere se era possibile comandare contemporaneamente 2 motori DC solo con un potenziometro.
La mia idea è quella che quando il potenziometro ( in questo caso un potenziometro lineare) è posizionato a metà il motore sta fermo, poi più spingo in basso il motore più gira veloce in senso orario e quando lo spingo più in alto gira in senso anti orario cambiano la velocità in base al cursore del potenziometro
Ti sei chiesto come mai il tuo messaggio era l'unico scritto in italiano in mezzo ad una pletora di messaggi tutti in inglese? Non è che forse avevi sbagliato sezione?
I messaggi in lingua italiana si possono postare solo in questa sezione.
1966:
Ciao a tutti...io ho appena cominciato con arduino e volevo sapere se era possibile comandare contemporaneamente 2 motori DC solo con un potenziometro.
La mia idea è quella che quando il potenziometro ( in questo caso un potenziometro lineare) è posizionato a metà il motore sta fermo, poi più spingo in basso il motore più gira veloce in senso orario e quando lo spingo più in alto gira in senso anti orario cambiano la velocità in base al cursore del potenziometro
Mica ho capito!!! Parli di due motori pilotati con un potenziometro. Ma poi dici che il potenziometro lo usi per uno dei motori.
Che vuoi fare?
Inoltre sarebbe utile sapere se hai già provato a collegare uno o due motori ad Arduino. Poi aggingere il potenziometro si può sempre fare dopo.
Qui una serie di schemi utili (scheda 5 per il motorino): http://forum.arduino.cc/index.php?topic=146152.msg1098046#msg1098046
... sempre se ho capito la domanda...
puoi rimappare la lettura del potenziometro il base al valore:
/*con un potenziometro accendo 2 led in pwm
a seconda della posizione di un potenziometro.
*/
const int pinAvanti = 5; // pin comando motore avanti
const int pinIndietro = 6; // pin comando motore indietro
const int potenziometro = A0; //ingresso potenziometro
int limiteindietro = 500; // sotto questo valore va indietro
int limiteavanti = 524; // sopra questo valore va avanti
int sensorValue = 0; // value read from the pot
int caso = 0;
void setup() {
pinMode(pinAvanti, OUTPUT);
pinMode(pinIndietro, OUTPUT);
}
void loop() {
sensorValue = analogRead(potenziometro); // leggo ingresso
caso = 0;
if (sensorValue < limiteindietro) caso = 1;// motore indietro
if (sensorValue > limiteavanti) caso = 2;// motore avanti
switch (caso){
case 0: // motore fermo
digitalWrite(pinAvanti,LOW);
digitalWrite(pinIndietro,LOW);
break;
case 1: //motore indietro
digitalWrite(pinAvanti,LOW);
analogWrite(pinIndietro, map(sensorValue, 0, limiteindietro, 255, 0));
break;
case 2: //motore avanti
digitalWrite(pinIndietro,LOW);
analogWrite(pinAvanti, map(sensorValue,limiteavanti,1023,0,255));
}
delay(2);
}
certo, ma i compiti li devi fare tu :).
Se lo hai provato controlla come si comporta quando il potenziometro è al limite della posizione centrale.
C'è un comportamento un po' strano da risolvere.
Buon studio...