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 ():

Comments

Popular posts from this blog

Lab 13/ HW 13

Lab 21/ HW 21