Automated Single Motor Control:
//Simple Motor Speed Control Program
const int MOTOR=9; //Motor on Digital Pin 9
const int LED=6;
const int POT=A0;
void setup()
{
Serial.begin (9600);
pinMode (MOTOR, OUTPUT);
pinMode (LED, OUTPUT);
pinMode (POT, INPUT);
}
void loop()
{
for (int i=0; i<256; i++)
{
Serial.println(i);
analogWrite(MOTOR, i);
analogWrite(LED, i);
delay(10);
}
delay(2000);
for (int i=255; i>=0; i--)
{
Serial.println(i);
analogWrite(MOTOR, i);
analogWrite(LED, i);
delay(10);
}
delay(2000);
}
Motor Control with Serial IO
//Motor Control with Serial IO
int velocity = 255;
char data; //Holds incoming character
int M1_Left = 12; //Motor Input 1
int M1_Right = 11; //Motor Input 2
int M2_Left = 10; //Motor Input 1
int M2_Right = 9; //Motor Input 2
void setup()
{
Serial.begin(9600); //Serial Port at 9600 baud
Serial.println("Begin Motor Control:");
Serial.println("");
Serial.println("Enter number for control options:");
Serial.println("1. Stop");
Serial.println("2. Forward");
Serial.println("3. Reverse");
Serial.println("4. Read Current Speed");
Serial.println("5. Increase Speed");
Serial.println("6. Decrease Speed");
Serial.println("7. Reset Speed");
}
void loop()
{
//Only act when data is available in the buffer
if (Serial.available() > 0)
{
data = Serial.read(); //Read byte of data
//Turn LED on
if (data == '1')
{
stop();
Serial.println("Stop");
// Serial.println("LED ON");
}
//Turn LED off
if (data == '2')
{
forward(velocity);
Serial.println("Forward");
boolean inputState = HIGH;
}
else if (data == '3')
{
reverse(velocity);
Serial.println("Reverse");
boolean inputState = LOW;
}
else if (data == '4')
{
Serial.println("Velocity=");
Serial.println(velocity);
}
else if (data == '5')
{
if(velocity<0)
{
velocity=1;
}
if(velocity>255)
{
velocity=255;
}
else {
velocity++;
}
}
else if (data == '6')
{
if(velocity<0)
{
velocity=1;
}
if(velocity>255)
{
velocity=255;
}
else {
velocity--;
}
}
else if(data=='7')
{
Serial.println("Velocity Reset");
velocity=255;
}
else
{
stop();
}
}
}
void forward (int rate)
{
//val_left=map(val,0,512,255,0);
// boolean inPin1 = LOW;
// boolean inPin2 = rate;
int inPin1 = LOW;
int inPin2 = rate;
analogWrite(M1_Left, inPin1);
analogWrite(M1_Right , inPin2);
analogWrite(M2_Left, inPin1);
analogWrite(M2_Right , inPin2);
// Serial.print("Inpin1: ");
// Serial.print(inPin1);
// Serial.print(" ");
// Serial.print("Inpin2: ");
// Serial.print(inPin2);
// Serial.print(" ");
//
// Serial.print("Rate: ");
// Serial.println(rate);
}
void reverse (int rate)
{
//val_left=map(val,0,512,255,0);
// boolean inPin1 = rate;
// boolean inPin2 = LOW;
int inPin1 = rate;
int inPin2 = LOW;
analogWrite(M1_Left, inPin1);
analogWrite(M1_Right , inPin2);
analogWrite(M2_Left, inPin1);
analogWrite(M2_Right , inPin2);
// Serial.print("Inpin1: ");
// Serial.print(inPin1);
// Serial.print(" ");
// Serial.print("Inpin2: ");
// Serial.print(inPin2);
// Serial.print(" ");
//
// Serial.print("Rate: ");
// Serial.println(rate);
}
void stop()
{
// boolean inPin1 = LOW;
// boolean inPin2 = LOW;
int inPin1 = LOW;
int inPin2 = LOW;
digitalWrite(M1_Left, LOW);
digitalWrite(M1_Right , LOW);
digitalWrite(M2_Left, LOW);
digitalWrite(M2_Right , LOW);
// Serial.print("Inpin1: ");
// Serial.print(inPin1);
// Serial.print(" ");
// Serial.print("Inpin2: ");
// Serial.println(inPin2);
}
No comments:
Post a Comment