Salve amici,
sapreste indicarmi un semplice sketch che permetta di controllare un motore DC con ponte H. Come hardware ci sarebbero 2 bottoni che dovrebbero gestire il senso di rotazione (destra, sinistra).
Grazie
Salve amici,
sapreste indicarmi un semplice sketch che permetta di controllare un motore DC con ponte H. Come hardware ci sarebbero 2 bottoni che dovrebbero gestire il senso di rotazione (destra, sinistra).
Grazie
Quale ponte H o schield stai usando?
Se non hai ancora scelto il ponte H dacci la corrente nominale del motore.
Ciao Uwe
Ciao uwe,
il ponte H è il L2930NE. il motore è alimentato con una batteria a 9v.
Intendi il L293 o veramente il L2930 ?
sul cip c'è scritto L2930NE, sulla book di arduino invece viene identificato come L293D
ferdard:
sul cip c'è scritto L2930NE, sulla book di arduino invece viene identificato come L293D
La sigla deve essere "L293DNE" ove "L293D" è il componente e "NE" il tipo di package, controlla bene perché sicuramente hai scambiato la D per una O.
hai ragione!
Hai l' integrato nudo o su una schedina o shield?
Ciao Uwe
nudo da posizionare sulla basetta di prototizzazione. Per la parte dei collegamento ho già lo schema.
lo scketch potrebbe andare bene, perchè permette di invertire il senso di rotazione del motore. In che modo posso modificare il codice in modo da avere due pulsanti uno per ogni senso di marcia. così come è scritto adesso, tiene il motore sempre in rotazione.
const int switchPin = 2;
const int motor1Pin = 3;
const int motor2Pin = 4;
const int enablePin = 9;
const int ledPin = 13;
void setup() {
pinMode(switchPin, INPUT);
pinMode(motor1Pin, OUTPUT);
pinMode(motor2Pin, OUTPUT);
pinMode(enablePin, OUTPUT);
pinMode(ledPin, OUTPUT);
digitalWrite(enablePin, HIGH);
blink(ledPin, 3, 100);
}
void loop(){
if (digitalRead(switchPin) == HIGH) {
digitalWrite(motor1Pin, LOW);
digitalWrite(motor2Pin, HIGH);
}
else {
digitalWrite(motor1Pin, HIGH);
digitalWrite(motor2Pin, LOW);
}
}
void blink(int whatPin, int howManyTimes, int milliSecs) {
int i = 0;
for ( i = 0; i < howManyTimes; i++) {
digitalWrite(whatPin, HIGH);
delay(milliSecs/2);
digitalWrite(whatPin, LOW);
delay(milliSecs/2);
}
}
ho trovato la soluzione, posto schema e sketch.
const int switchPin = 2;
const int switchPin2 = 5;
const int motor1Pin = 3;
const int motor2Pin = 4;
const int enablePin = 9;
void setup() {
pinMode(switchPin, INPUT);
pinMode(switchPin2, INPUT);
pinMode(motor1Pin, OUTPUT);
pinMode(motor2Pin, OUTPUT);
pinMode(enablePin, OUTPUT);
digitalWrite(enablePin, HIGH);
}
void loop(){
if (digitalRead(switchPin) == HIGH) {
digitalWrite(motor1Pin, LOW);
digitalWrite(motor2Pin, HIGH);
}
else if (digitalRead(switchPin2) == HIGH) {
digitalWrite(motor1Pin, HIGH);
digitalWrite(motor2Pin, LOW);
}
else {
digitalWrite(motor1Pin, LOW);
digitalWrite(motor2Pin, LOW);
}
}