Go Down

Topic: Programar motores por botonera (Read 757 times) previous topic - next topic

sergioaiki07

Aug 12, 2013, 01:58 am Last Edit: Aug 12, 2013, 04:24 am by sergioaiki07 Reason: 1
hola a todos

e estado hace tiempo aprendiendo arduino y ahora me a salido una duda que espero que me puedan ayudar, ya que no e pillado documentación sobre esto,

quiero hacer que cualquier persona programe un movimiento de un motor , ose alguien que accione un interruptor y con un boton haga que vaya hacia adelante o atrás y que arduino lo reproduzca ciclicamente. mi duda como o que comando se puede guardar esa información (que sera movimiento y segundos)

saludos

pd: trabajo con arduino nano

Sergegsx

Lees las entradas de comando con digitalread o analogread. Luego las puedes guardar en variables si el arduino no va a apagarse, o las guardas en la memoria eemprom.

sergioaiki07

Muchas gracias bueno explico mas el proyecto es un motor sobre un riel que vaya de lado a lado, estoy haciendo las pruebas de programación por ahora solo con led... ahora el problema que me surge es que anda muy lento (ocupo arduino nano), el cambio de ronda demora como 2 segundos y eso no me gusta... entonces quiero pedirles como optimizar mas mi codigo o consejos generales sobre eso

Code: [Select]

int adelante = 2;
int atras = 3;
int parada1= 4;
int parada2 = 5;
int manual = 6;
int boton1 = 7;
int boton2 =8;


void setup()
{
pinMode(adelante, OUTPUT);
pinMode(atras, OUTPUT);
pinMode(parada1, INPUT);
pinMode(parada2, INPUT);
pinMode(manual, INPUT);
pinMode(boton1, INPUT);
pinMode(boton2, INPUT);
}

void loop()
{
 
if( digitalRead(parada1)==HIGH && digitalRead(manual)==LOW){  //esta seccion es para el movimiento automatico donde evalia si los finales de
  digitalWrite(atras, HIGH);                                                      //carreras que estan al final del rial no esten activados
  digitalWrite(adelante, LOW);
 
}

if( digitalRead(parada2)==HIGH && digitalRead(manual)==LOW){
    digitalWrite(adelante, HIGH);
    digitalWrite(atras,LOW);
}
/*---------------------------------------------
esta parte es el control manual donde habra un interruptor que se accionara y se detendra el desplazamiento automatico*/
if(digitalRead(manual)==HIGH){
   if(digitalRead(boton1)==HIGH){
     digitalWrite(adelante, HIGH);
     
      }else{
        digitalWrite(adelante, LOW);
      }
     
      if(digitalRead(boton2)==HIGH){
        digitalWrite(atras, HIGH);
      }else{
        digitalWrite(atras, LOW);
      }
 
}


}



espero sus respuestas

saludos

R0BERT0

Estas usando resistencias pull up en las entradas?

Arduino es muy sensible a todo tipo de ruidos y muchas veces las entradas se activan "sin motivo aparente"
Puede que eso te de algun problema
Ademas de colocar estas entradas deberias hacer un control antirrebote de los pulsadores para mejorar esto...

Go Up