Hi all.
im using an accelerometer (memsic 2125) connected to the arduino and connected to a dc motor by a syren motor driver.
heres my code:
#include <Servo.h>
#define OUTPUT_PIN 9
#define PULSE_MIN 1000
#define PULSE_MAX 2000
Servo m_controller;
int xaccPin = 2;
int yaccPin = 3;
void setup()
{
Serial.begin(9600);
pinMode (xaccPin, INPUT);
pinMode (yaccPin, INPUT);
m_controller.attach(OUTPUT_PIN, PULSE_MIN, PULSE_MAX);
}
void loop()
{
int pulseX, pulseY;
int accelerationX, accelerationY;
pulseX = pulseIn(xaccPin, HIGH);
pulseY = pulseIn(yaccPin, HIGH);
accelerationX = ((pulseX/10)-500)*8;
accelerationY = ((pulseY/10)-500)*8;
Serial.print(accelerationX);
Serial.print("\t");
Serial.print(accelerationY);
Serial.println();
delay(100);
if(accelerationY > -700 && accelerationY < 0){
while (accelerationY < 10){
m_controller.write(180);
int pulseY;
int accelerationY;
pulseY = pulseIn(yaccPin, HIGH);
accelerationY = ((pulseY/10)-500)*8;
Serial.print(accelerationY);
Serial.println();
delay(500);
if(accelerationY >= 0){
m_controller.write (90);}
}
if(accelerationY >= 0 && accelerationY < 200){
while (accelerationY < 200){
m_controller.write(90);
int pulseX, pulseY;
int accelerationX, accelerationY;
pulseX = pulseIn(xaccPin, HIGH);
pulseY = pulseIn(yaccPin, HIGH);
accelerationX = ((pulseX/10)-500)*8;
accelerationY = ((pulseY/10)-500)*8;
Serial.print(accelerationX);
Serial.print("\t");
Serial.print(accelerationY);
Serial.println();
delay(500);}
while (accelerationY < 500){
m_controller.write(180);
int pulseX, pulseY;
int accelerationX, accelerationY;
pulseX = pulseIn(xaccPin, HIGH);
pulseY = pulseIn(yaccPin, HIGH);
accelerationX = ((pulseX/10)-500)*8;
accelerationY = ((pulseY/10)-500)*8;
Serial.print(accelerationX);
Serial.print("\t");
Serial.print(accelerationY);
Serial.println();
delay(500);}
if(accelerationY > 400){
while (accelerationY > - 700){
m_controller.write(0);
int pulseX, pulseY;
int accelerationX, accelerationY;
pulseX = pulseIn(xaccPin, HIGH);
pulseY = pulseIn(yaccPin, HIGH);
accelerationX = ((pulseX/10)-500)*8;
accelerationY = ((pulseY/10)-500)*8;
Serial.print(accelerationX);
Serial.print("\t");
Serial.print(accelerationY);
Serial.println();
delay(500);}
}
}
}
}
it results in the motor running in the forward direction forever until i off the battery.
i want the motor to stop at a certain point. (when accelerationY >= 0)
help!
sorry its a bit messy and redundant, but i need all the help i can get…