¿como cambiar la dirección de motor dc con un botón (SOLUCIONADO)
hola hola
les cuento me encontre con este código que controla un dc motor con un potenciometro, va muy bien con mi proyecto
1 potenciometro
1 boton
1 dc motor
1 l298n
1 12v bateria
hace que el motor funcione como un servo controlado por un potenciometro (en el centro del potenciometro = el motor se detiene. hacia la derecha = el motor gira la derecha y viceversa) lo unico que le tengo que agregar es un botón que invierta la dirección del potenciometro una vez que sea pulsado ya intente de varias formas agregando un código como este:
pero no me va y no encuentro un buen ejemplo, ¿alguna idea como le puede hacer?
aqui esta mi pobre intento
de antemano, gracias por su tiempo!
les cuento me encontre con este código que controla un dc motor con un potenciometro, va muy bien con mi proyecto
1 potenciometro
1 boton
1 dc motor
1 l298n
1 12v bateria
code: [select]
int ledpin = 13; // led connected digital pin 13
int pwmpin = 11; // pwm motor driver (/d2 pin pin on mc338870 motor board)
int motorpin1 = 7; // motor pin 1 (in1 on mc338870 motor board)
int motorpin2 = 8; // motor pin 2 (in2 on mc338870 motor board)
int pot = 0; // potentiometer pin on analog input 0
//leave d1 , /fs , /fb unconnceted
//connect en +5v on arduino board
int val;
// setup() method runs once, when sketch starts
void setup() {
pinmode(reversapin, output);
pinmode(buttonr, input);
digitalwrite(reversapin,low);
pinmode(ledpin, output); // initialize digital pin output:
pinmode(pwmpin, output); // initialize digital pin output:
pinmode(motorpin1, output); // initialize digital pin output:
pinmode(motorpin2, output); // initialize digital pin output:
serial.begin(9600);
}
// loop() method runs on , on again,
// long arduino has power
void loop()
{
//read serial port
val = analogread(pot);
val = map(val,0,1023,-255,255);
serial.println(val);
if (val >= 0)
{
digitalwrite(ledpin,high);
digitalwrite(motorpin1,low);
digitalwrite(motorpin2,high);
analogwrite(pwmpin,val);
}
else
{
val *= -1;
digitalwrite(ledpin,low);
digitalwrite(motorpin1,high);
digitalwrite(motorpin2,low);
analogwrite(pwmpin,val);
}
delay(100);
}
hace que el motor funcione como un servo controlado por un potenciometro (en el centro del potenciometro = el motor se detiene. hacia la derecha = el motor gira la derecha y viceversa) lo unico que le tengo que agregar es un botón que invierta la dirección del potenciometro una vez que sea pulsado ya intente de varias formas agregando un código como este:
code: [select]
int buttonr = 4;
int reversapin = 5;
int buttonstate = low;
void setup() {
pinmode(reversapin, output);
pinmode(buttonr, input);
digitalwrite(reversapin,low);
}
void loop() {
while(digitalread(buttonr) == low);
buttonstate = digitalread (reversapin);
digitalwrite(reversapin,!buttonstate);
while(digitalread(buttonr) == high);
}
pero no me va y no encuentro un buen ejemplo, ¿alguna idea como le puede hacer?
aqui esta mi pobre intento
code: [select]
int revers =5;
int ledpin = 13; // led connected digital pin 13
int pwmpin = 11; // pwm motor driver (/d2 pin pin on mc338870 motor board)
int motorpin1 = 7; // motor pin 1 (in1 on mc338870 motor board)
int motorpin2 = 8; // motor pin 2 (in2 on mc338870 motor board)
int pot = 0; // potentiometer pin on analog input 0
//leave d1 , /fs , /fb unconnceted
//connect en +5v on arduino board
int val;
// setup() method runs once, when sketch starts
void setup() {
pinmode(revers, input);
pinmode(ledpin, output); // initialize digital pin output:
pinmode(pwmpin, output); // initialize digital pin output:
pinmode(motorpin1, output); // initialize digital pin output:
pinmode(motorpin2, output); // initialize digital pin output:
digitalwrite(revers,high);
serial.begin(9600);
}
// loop() method runs on , on again,
// long arduino has power
void loop()
{
//read serial port
val = analogread(pot);
val = map(val,0,1023,-255,255);
serial.println(val);
if (val >= 0)
if (digitalread (revers)== high)
{
digitalwrite(ledpin,high);
digitalwrite(motorpin1,low);
digitalwrite(motorpin2,high);
analogwrite(pwmpin,val);
}
else
{
val *= -1;
digitalwrite(ledpin,low);
digitalwrite(motorpin1,high);
digitalwrite(motorpin2,low);
analogwrite(pwmpin,val);
}
delay(100);
}
de antemano, gracias por su tiempo!
disculpen por las molestias ya lo logre
code: [select]
/*
motor driver board mc338870
changes speed , direction of rotation of dc motor based on the
input potentiometer.
for schematics , info refer here :https://chalmersphyscomp10.wordpress.com/2010/08/26/arduino-driving-a-motor-with-pololu-mc33887-motor-driver/
http://chalmersphyscomp10.wordpress.com/2010/08/26/arduino-driving-a-motor-with-pololu-mc33887-motor-driver/
the code written farshid jafari harandi,
(c) spekel, spekel.se
*/
int revers =5;
int ledpin = 13; // led connected digital pin 13
int pwmpin = 11; // pwm motor driver (/d2 pin pin on mc338870 motor board)
int motorpin1 = 7; // motor pin 1 (in1 on mc338870 motor board)
int motorpin2 = 8; // motor pin 2 (in2 on mc338870 motor board)
int pot = 0; // potentiometer pin on analog input 0
//leave d1 , /fs , /fb unconnceted
//connect en +5v on arduino board
int val;
// setup() method runs once, when sketch starts
void setup() {
pinmode(revers, input);
pinmode(ledpin, output); // initialize digital pin output:
pinmode(pwmpin, output); // initialize digital pin output:
pinmode(motorpin1, output); // initialize digital pin output:
pinmode(motorpin2, output); // initialize digital pin output:
digitalwrite(revers,high);
serial.begin(9600);
}
// loop() method runs on , on again,
// long arduino has power
void loop()
{
//read serial port
val = analogread(pot);
val = map(val,0,1023,-255,255);
serial.println(val);
if (digitalread (revers)== high){
if (val >= 0)
{
digitalwrite(ledpin,high);
digitalwrite(motorpin1,low);
digitalwrite(motorpin2,high);
analogwrite(pwmpin,val);
}
else
{
val *= -1;
digitalwrite(ledpin,low);
digitalwrite(motorpin1,high);
digitalwrite(motorpin2,low);
analogwrite(pwmpin,val);
}
}
if (digitalread (revers)== low)
{
if (val >= 0)
{
digitalwrite(ledpin,high);
digitalwrite(motorpin1,high);
digitalwrite(motorpin2,low);
analogwrite(pwmpin,val);
}
else
{
val *= -1;
digitalwrite(ledpin,low);
digitalwrite(motorpin1,low);
digitalwrite(motorpin2,high);
analogwrite(pwmpin,val);
}
}
delay(100);
}
Arduino Forum > International > Español > Software (Moderators: surbyte, Hector_A) > ¿como cambiar la dirección de motor dc con un botón (SOLUCIONADO)
arduino
Comments
Post a Comment