Вы находитесь на странице: 1из 3

17/7/2017 Arduino: Motor DC con potenciómetro y conmutadores

Hiparco Alojado en http://guimi.net

Recetas y trucos de GNU/Linux e informática en general

BTControl Licencias CC-BY-SA y GPL Publicaciones Tutoriales

Arduino: Motor DC con potenciómetro y conmutadores Búsqueda

Search
El circuito (realizado con Fritzing):

Páginas

BTControl
BTControl

Licencias CC-BY-SA y GPL

Publicaciones

Tutoriales
Guía rápida de subversión (svn)

Post-instalación Debian GNU/Linux

Post-instalación Debian GNU/Linux


Squeeze

Post-instalación Debian GNU/Linux


Wheezy

SQL

/* Un robot con Arduino


* Este programa mueve un motor de corriente continua usando un H-Bridge.
* Con dos pulsadores se controla encendido/apagado y sentido de giro.
* Con un potenciometro se controla la velocidad de giro.
* Categorías
* 2014 - Guimi (http://guimi.net)
*/ Select Category

// VARIABLES
//----------
const byte pin1Motor1=5; // Variable que indica el pin 1 del motor 1 Archivo
const byte pin2Motor1=9; // Variable que indica el pin 2 del motor 1
Select
const byte pinVelocidadMotor1=10; // Variable que indica el pin de la señal de Month
velocidad del motor 1
const byte pinSwitchEncendido=11; // Variable que indica el pin del boton de encendido/apagado
const byte pinSwitchSentido=12; // Variable que indica el pin del boton de sentido de giro
const byte pinLed=13; //Variable que indica el pin del LED
const byte pinPotenciometro=A0; // Variable que indica el pin del potenciometro

byte valorSwitchEncendido=0; // Variable para leer el switch


byte valorSwitchSentido=0; // Variable para leer el switch
byte valorSwitchEncendidoAnterior=0; // Como entre bucles el periodo es muy corto, cada pulsacin podra leerse muchas
byte valorSwitchSentidoAnterior=0; // ...por ello guardamos un estado anterior
int valorPotenciometro=0; // Variable para guardar el valor del potenciometro [0-1023]

byte estaEncendido=0; // Variable para guardar el estado encendido/apagado


byte sentidoGiro=0; // Variable para guardar el sentido de giro
byte motorVelocidad=0; // Variable para guardar la velocidad segn el potenciometro

// FUNCION SETUP
//--------------
void setup(){
// Definimos cada pin como entrada o salida
pinMode(pin1Motor1,OUTPUT);
pinMode(pin2Motor1,OUTPUT);
pinMode(pinVelocidadMotor1,OUTPUT);
pinMode(pinSwitchEncendido,INPUT);
pinMode(pinSwitchSentido,INPUT);
pinMode(pinLed,OUTPUT);

// Paramos el motor 1
digitalWrite(pinVelocidadMotor1, 0);

// Indicamos con el LED si estaEncendido


http://guimi.net/blogs/hiparco/arduino-motor-dc-con-potenciometro-y-conmutadores/ 1/3
17/7/2017 Arduino: Motor DC con potenciómetro y conmutadores
// Indicamos con el LED si estaEncendido
digitalWrite(pinLed, estaEncendido);

// Preparamos la comunicacion mediante el puerto serie


//Serial.begin(9600);
}

// FUNCION LOOP
//-------------
void loop(){
// Leemos el switch de encendido/apagado
valorSwitchEncendido=digitalRead(pinSwitchEncendido);
delay(1);

// Leemos el switch de sentido de giro


valorSwitchSentido=digitalRead(pinSwitchSentido);
delay(1);

// Leemos el valor del potenciometro [0-1023]


valorPotenciometro=analogRead(pinPotenciometro);
motorVelocidad = valorPotenciometro/4;

// Si se pulsa el boton de encendido/apagado se cambia el estado


if ((valorSwitchEncendido == HIGH) && (valorSwitchEncendidoAnterior == LOW)) {
estaEncendido = !estaEncendido;

// Indicamos con el LED si estaEncendido


digitalWrite(pinLed, estaEncendido);
}
// Obligamos a pasar por una fase LOW antes de volver a leer un HIGH
// para no leer una sola pulsacion varias veces
valorSwitchEncendidoAnterior = valorSwitchEncendido;

// Si se pulsa el boton de sentido de giro se cambia el sentido


if ((valorSwitchSentido == HIGH) && (valorSwitchSentidoAnterior == LOW)) {
// Para evitar dañar el motor, solo permitimos cambiar el sentido de giro con el motor parado
if (!estaEncendido) sentidoGiro = !sentidoGiro;
}
// Obligamos a pasar por una fase LOW antes de volver a leer un HIGH
// para no leer una sola pulsacion varias veces
valorSwitchSentidoAnterior = valorSwitchSentido;

/*
// Mostramos informacion por el puerto serie
//Serial.print(valorSwitchEncendido);
//Serial.print(" - ");
//Serial.print(valorSwitchEncendidoAnterior);
//Serial.print(" - ");
Serial.print(estaEncendido);
Serial.print(" | ");
//Serial.print(valorSwitchSentido);
//Serial.print(" , ");
//Serial.print(valorSwitchSentidoAnterior);
//Serial.print(" , ");
Serial.print(sentidoGiro);
Serial.print(" | ");
Serial.print(valorPotenciometro);
Serial.print(" | ");
Serial.println();
*/

if (sentidoGiro == 1) {
digitalWrite(pin1Motor1, LOW);
digitalWrite(pin2Motor1, HIGH);
} else {
digitalWrite(pin1Motor1, HIGH);
digitalWrite(pin2Motor1, LOW);
}

if (estaEncendido == 1) {
analogWrite(pinVelocidadMotor1, motorVelocidad);
} else {
analogWrite(pinVelocidadMotor1, 0);
}

// Esperamos un tiempo de reaccion para los componentes


//delay(5);
}

Categoría: Arduino, Electrónica, Hardware, Programación

19 May 2014 at 18:16 No comments Güimi

http://guimi.net/blogs/hiparco/arduino-motor-dc-con-potenciometro-y-conmutadores/ 2/3
17/7/2017 Arduino: Motor DC con potenciómetro y conmutadores

¿Algo que añadir?

Debes estar registrado para dejar un comentario.


Gestionado con WordPress. Design by wplook

http://guimi.net/blogs/hiparco/arduino-motor-dc-con-potenciometro-y-conmutadores/ 3/3

Вам также может понравиться