Friday, November 3, 2017

Lab 15 - Using Transistors and Driving Motors

CLASSWORK:
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