/* MeharJohal student # 300371701
midterm arduino coding exercise complete all 4 tasks
1. Back And forth led tracer: While button A (red) is pressed each led must blink two
times in the sequence green,red,blue,orange and then each led must
blink twice in orange,blue,red,green.
2. random led blinker: While button B (green) is pressed Randomly select and led and
blink it twice. Note you will need to research the arduino random() funcion.
3.Servo Oscillator : while button C (blue) is pressed oscillate the servo back and
forth between 9 degrees and 100 degrees.
4. Synchronized dance : while button D (yellow) is pressed move the servo to 25 degrees
and blink the blue led twice then move the servo to 81 degrees
and blink the green led three times. FInally move the servo to 144 degrees
and alternately blink the red and orange leds twice.
Pushbutton circuts
2- button A(Red)
12- button B(Green)
8- button C(Blue)
7- button D(Yellow)
*/
// Include the servo library:
#include <Servo.h>
// Create a new servo object:
Servo myservo;
// Define the servo pin:
#define servoPin 11
// Create a variable to store the servo position:
int angle = 0;
//this variable will hold a random number generated by the random() function
long randomNumber;
void setup() {
// put your setup code here, to run once:
// setup all digital input pins to the pushbutton
pinMode(2, INPUT); // Button A or red pushbutton input
pinMode(12, INPUT);//Button B or green pushbutton input
pinMode(8, INPUT);//Button C or blue pushbutton input
pinMode(7, INPUT);//Button D or yellow pushbutton input
// setup all the digital output pins to the led
pinMode(5, OUTPUT); // Orange led output
pinMode(6, OUTPUT); // Blue led output
pinMode(9, OUTPUT); // Red led output
pinMode(10, OUTPUT); // Green led output
// setup servo pin to input
pinMode(11, OUTPUT); // Servo motor output
myservo.attach(servoPin); // attaches the servo on pin 11 to the servo object
//setup serial communications through the USB
Serial.begin(9600);
// makes the seed random
randomSeed(42);
}
void loop() {
// put your main code here, to run repeatedly:
// turn off all leds
digitalWrite(5, HIGH);// turns off orange led
digitalWrite(6, HIGH);// turns off blue led
digitalWrite(9, HIGH);// turns off red led
digitalWrite(10, HIGH);// turns off green led
//While button A (red) is pressed each led must blink two
//times in the sequence green,red,blue,orange and then each led must
//blink twice in orange,blue,red,green.
while(digitalRead(2) == HIGH){ // when button A is pressed
// start of sequence 1 green,red,blue,orange
//for loop blinks green led twice
for(int i = 0; i < 2; i++)
{
digitalWrite(10,LOW); // green led turned on for 200 ms
delay(200);
digitalWrite(10,HIGH); // green led turned off for 150 ms
delay(150);
}
//for loop blinks red led twice
for(int i = 0; i < 2; i++)
{
digitalWrite(9,LOW); // red led turned on for 200 ms
delay(200);
digitalWrite(9,HIGH); // red led turned off for 150 ms
delay(150);
}
//for loop blinks blue led twice
for(int i = 0; i < 2; i++)
{
digitalWrite(6,LOW); // blue led turned on for 200 ms
delay(200);
digitalWrite(6,HIGH); // blue led turned off for 150 ms
delay(150);
}
//for loop blinks orange led twice
for(int i = 0; i < 2; i++)
{
digitalWrite(5,LOW); // orange led turned on for 200 ms
delay(200);
digitalWrite(5,HIGH); // orange led turned off for 150 ms
delay(150);
}
// end of sequence 1
// start of reverse sequence
//for loop blinks orange led twice
for(int i = 0; i < 2; i++)
{
digitalWrite(5,LOW); // orange led turned on for 200 ms
delay(200);
digitalWrite(5,HIGH); // orange led turned off for 150 ms
delay(150);
}
//for loop blinks blue led twice
for(int i = 0; i < 2; i++)
{
digitalWrite(6,LOW); // blue led turned on for 200 ms
delay(200);
digitalWrite(6,HIGH); // blue led turned off for 150 ms
delay(150);
}
//for loop blinks red led twice
for(int i = 0; i < 2; i++)
{
digitalWrite(9,LOW); // red led turned on for 200 ms
delay(200);
digitalWrite(9,HIGH); // red led turned off for 150 ms
delay(150);
}
//for loop blinks green led twice
for(int i = 0; i < 2; i++)
{
digitalWrite(10,LOW); // green led turned on for 200 ms
delay(200);
digitalWrite(10,HIGH); // green led turned off for 150 ms
delay(150);
}
// end of reverse sequence
}
//While button B (green) is pressed Randomly select any led and
//blink it twice. Note you will need to research the arduino random() funcion.
while(digitalRead(12) == HIGH){ // when button b is pressed
//generate a random number between 2 and 5
randomNumber = random(2,6);
//display the random number on the serial monitor
Serial.print("The Random Number is = ");
Serial.println(randomNumber);
// if the number is 2 then blink green led twice
if(randomNumber == 2){
//for loop blinks green led twice
for(int i = 0; i < 2; i++)
{
digitalWrite(10,LOW); // green led turned on for 200 ms
delay(200);
digitalWrite(10,HIGH); // green led turned off for 150 ms
delay(150);
}
}
// if the random number is 3 then blink red twice
else if (randomNumber == 3){
//for loop blinks red led twice
for(int i = 0; i < 2; i++)
{
digitalWrite(9,LOW); // red led turned on for 200 ms
delay(200);
digitalWrite(9,HIGH); // red led turned off for 150 ms
delay(150);
}
}
// if random number is 4 then blink blue leds twice
else if(randomNumber == 4){
//for loop blinks blue led twice
for(int i = 0; i < 2; i++)
{
digitalWrite(6,LOW); // blue led turned on for 200 ms
delay(200);
digitalWrite(6,HIGH); // blue led turned off for 150 ms
delay(150);
}
}
// if its anything else blink orange twice
else if (randomNumber == 5){
//for loop blinks orange led twice
for(int i = 0; i < 2; i++)
{
digitalWrite(5,LOW); //orange led turned on for 200 ms
delay(200);
digitalWrite(5,HIGH); // orange led turned off for 150 ms
delay(150);
}
}
}
//while button C (blue) is pressed oscillate the servo back and
//forth between 9 degrees and 100 degrees.
while(digitalRead(8) == HIGH){ // when button C is pressed
myservo.write(9); // sets servo to 9 degrees
delay(200); // waits 200 ms
myservo.write(100); // sets servo to 9 degrees
delay(200); // waits 200 ms
}
//while button D (yellow) is pressed move the servo to 25 degrees
//and blink the blue led twice then move the servo to 81 degrees
//and blink the green led three times. FInally move the servo to 144 degrees
//and alternately blink the red and orange leds twice.
while(digitalRead(7) == HIGH){ // when button D is pressed
myservo.write(25); // sets servo to 25 degrees
// blink blue led twice
//for loop blinks blue led twice
for(int i = 0; i < 2; i++)
{
digitalWrite(6,LOW); // blue led turned on for 200 ms
delay(200);
digitalWrite(6,HIGH); // blue led turned off for 150 ms
delay(150);
}
// end of blue blinks
myservo.write(81); // sets servo to 81 degrees
//blink green led three times
//for loop blinks green led three times
for(int i = 0; i < 3; i++)
{
digitalWrite(10,LOW); // green led turned on for 200 ms
delay(200);
digitalWrite(10,HIGH); // green led turned off for 150 ms
delay(150);
}
myservo.write(144); // sets servo to 144 degrees
// blink red and orange leds alternately twice
for(int i = 0; i < 2; i++)
{
digitalWrite(9,LOW); // red led turned on for 200 ms
delay(200);
digitalWrite(9,HIGH); // red led turned off for 150 ms
delay(150);
digitalWrite(5,LOW); // orange led turned on for 200 ms
delay(200);
digitalWrite(5,HIGH); // orange led turned off for 150 ms
delay(150);
}
}
}