Lab 16/ HW 16
Lab 16 (H-Bridge + Dual Motors):
const int MC1 = 9; //Motor Control 1
const int MC2 = 10; //Motor Control 2
int incr_velocity = 150;
int velocity = 0;
int speed = 0;
int mid_val = 512;
void setup()
{
pinMode(MC1, OUTPUT);
pinMode(MC2, OUTPUT);
Serial.begin(9600);
Serial.println("Enter number for control option:");
Serial.println("1. STOP");
Serial.println("2. FORWARD");
Serial.println("3. REVERSE");
Serial.println("4. READ CURRENT");
Serial.println("+. INCREASE SPEED");
Serial.println("-. DECREASE SPEED");
}
void loop()
{
//Serial.println(mid_val);
if (mid_val > 1023)
{
mid_val = 1023;
}
if (mid_val < 0)
{
mid_val = 0;
}
if (mid_val >= 512)
{
velocity = map(mid_val, 512, 1023, 20, 255);
constrain(velocity, 0, 255);
forward(velocity);
}
else if (mid_val <= 512)
{
velocity = map(mid_val, 512, 0, 20, 255);
constrain(velocity, 0, 255);
reverse(velocity);
}
while (Serial.available() > 0)
{
char val = Serial.read();
if (val == '1')
{
mid_val = 512;
}
if (val == '2')
{
mid_val = 1023;
}
else if (val == '3')
{
mid_val = 0;
}
else if (val == '4')
{
Serial.println(velocity);
}
else if (val == '+')
{
mid_val += incr_velocity;
}
else if (val == '-')
{
mid_val -= incr_velocity;
}
}
}
void forward (int rate)
{
digitalWrite(MC2, LOW);
analogWrite(MC1, rate);
}
void reverse (int rate)
{
digitalWrite(MC1, LOW);
analogWrite(MC2, rate);
}
HW 16 ():
const int MC1 = 9; //Motor Control 1
const int MC2 = 10; //Motor Control 2
int incr_velocity = 150;
int velocity = 0;
int speed = 0;
int mid_val = 512;
void setup()
{
pinMode(MC1, OUTPUT);
pinMode(MC2, OUTPUT);
Serial.begin(9600);
Serial.println("Enter number for control option:");
Serial.println("1. STOP");
Serial.println("2. FORWARD");
Serial.println("3. REVERSE");
Serial.println("4. READ CURRENT");
Serial.println("+. INCREASE SPEED");
Serial.println("-. DECREASE SPEED");
}
void loop()
{
//Serial.println(mid_val);
if (mid_val > 1023)
{
mid_val = 1023;
}
if (mid_val < 0)
{
mid_val = 0;
}
if (mid_val >= 512)
{
velocity = map(mid_val, 512, 1023, 20, 255);
constrain(velocity, 0, 255);
forward(velocity);
}
else if (mid_val <= 512)
{
velocity = map(mid_val, 512, 0, 20, 255);
constrain(velocity, 0, 255);
reverse(velocity);
}
while (Serial.available() > 0)
{
char val = Serial.read();
if (val == '1')
{
mid_val = 512;
}
if (val == '2')
{
mid_val = 1023;
}
else if (val == '3')
{
mid_val = 0;
}
else if (val == '4')
{
Serial.println(velocity);
}
else if (val == '+')
{
mid_val += incr_velocity;
}
else if (val == '-')
{
mid_val -= incr_velocity;
}
}
}
void forward (int rate)
{
digitalWrite(MC2, LOW);
analogWrite(MC1, rate);
}
void reverse (int rate)
{
digitalWrite(MC1, LOW);
analogWrite(MC2, rate);
}
HW 16 ():
Comments
Post a Comment