Automated Motor Control w/ For Loop
//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);
}
HOMEWORK:
Single Motor Control with Potentiometer
//Simple Motor Speed Control Program
const int MOTOR=9; //Motor on Digital Pin 9
const int LED=6;
const int POT=A2;
int val = 0;
void setup()
{
Serial.begin (9600);
pinMode (MOTOR, OUTPUT);
pinMode (LED, OUTPUT);
//pinMode (POT, INPUT);
}
void loop()
{
val = analogRead(POT);
val = map(val, 0, 1023, 0, 255);
Serial.println(val);
delay(100);
analogWrite(MOTOR, val);
analogWrite(LED, val);
}
Dual Motor Control with Potentiometer
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
int pot=A0;
int val=0;
int velocity=0;
void setup()
{
Serial.begin(9600);
pinMode(pot, INPUT);
pinMode(M1_Left, OUTPUT);
pinMode(M1_Right , OUTPUT);
pinMode(M2_Left, OUTPUT);
pinMode(M2_Right , OUTPUT);
}
void loop(){
val=analogRead(pot);
//val=map(val,0,1023,0,256);
//val_left=map(val,0,512,255,0);
//go forward
if (val > 562){
velocity = map(val, 563, 1023, 0, 255);
forward(velocity);
delay(500); //1 sg
}
else if (val < 462) {
velocity = map(val, 461, 0, 0, 255);
reverse(velocity);
delay(500); //1 sg
//delay(1000); //1 sg
//stop();
//delay(250); //250ms
}
else {
velocity = 0;
stop();
delay(500);
}
Serial.print("POT val: ");
Serial.print(val);
Serial.print(" ");
Serial.print("Velocity: ");
Serial.print(velocity);
Serial.print(" ");
// Serial.print("Inpin1: ");
// Serial.print(inPin1);
// Serial.print(" ");
// Serial.print("Inpin2: ");
// Serial.println(inPin2);
delay(200);
}
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);
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);
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);
Serial.print("Inpin1: ");
Serial.print(inPin1);
Serial.print(" ");
Serial.print("Inpin2: ");
Serial.println(inPin2);
}
No comments:
Post a Comment