Pages: [1]   Go Down
Author Topic: Alguna idea para formular esto?  (Read 385 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 4
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hola, necesito ayuda con el código de arduino que controlara un motor dc a través de pulsadores. Me explico, la configuración es la siguiente: Motor – puente H – arduino – pulsadores. Los pulsadores estan colocados en una rueda que mueve el motor y marcan la posición de 0, 90, -90 y 180 grados. La primera tarea fue hacer que el motor recorriera de los 90 hasta los – 90 y viceversa. Modificando este codigo funciona: http://arduino.cc/en/Tutorial/ButtonStateChange

Esta es la modificacion:
const int  buttonPin = 4;    // the pin that the pushbutton is attached to
const int ledPin = 13;       // the pin that the LED is attached to
int M1 = 7;
int M2 = 8;
// Variables will change:
int buttonPushCounter = 0;   // counter for the number of button presses
int buttonState = 0;         // current state of the button
int lastButtonState = 0;     // previous state of the button
void setup() {
  // initialize the button pin as a input:
  pinMode(buttonPin, INPUT);
  // initialize the LED as an output:
  pinMode(ledPin, OUTPUT);
  pinMode( M1, OUTPUT);
  pinMode( M2, OUTPUT);
  // initialize serial communication:
  Serial.begin(9600);
}
void loop() {
  // read the pushbutton input pin:
  buttonState = digitalRead(buttonPin);

  // compare the buttonState to its previous state
  if (buttonState != lastButtonState) {
    // if the state has changed, increment the counter
    if (buttonState == HIGH) {
      // if the current state is HIGH then the button
      // wend from off to on:
      buttonPushCounter++;
      Serial.println("on");
      Serial.print("number of button pushes:  ");
      Serial.println(buttonPushCounter, DEC);
    }
    else {
      // if the current state is LOW then the button
      // wend from on to off:
      Serial.println("off");
    }
  }
  // save the current state as the last state,
  //for next time through the loop
  lastButtonState = buttonState;

  if (buttonPushCounter % 2 == 0) {
    digitalWrite(ledPin, HIGH);
    digitalWrite(M1, HIGH);
    digitalWrite(M2, LOW);
  } else {
   digitalWrite(ledPin, LOW);
   digitalWrite( M1, LOW);
   digitalWrite( M2, HIGH);
  }
 
}

Ahora necesito decirle que a través de la lectura de un sensor (de proximidad) en la entrada analógica siga girando, y al hacer switch en el pulsador que se encuentra en los 180 grados pare (hard-stop), Sin tomar en cuenta el buttonPin = 4, que controla 90 y -90 grados, y permaneciendo en esa posición según la lectura del sensor.
Se que se puede hacer, pero no logro escribirlo.
Alguna idea para formular esto?

Se que todo seria mas facil con un servo motor, pero por otras razones necesito que sea un  simple motor dc.

 Muchas gracias
Logged

Pages: [1]   Go Up
Jump to: