//Prabhleen Grewal 300377973
//Engr 1190 Midterm
#include <Servo.h>
Servo wiggle; //Name of servo
void setup() {
// put your setup code here, to run once:
// Designate pushbuttons as INPUTS
pinMode(2, INPUT); // Red pushbutton
pinMode(12, INPUT); // Green pushbutton
pinMode(8, INPUT); // Blue pushbutton
pinMode(7, INPUT); // Orange pushbutton
// Designate LEDs as OUTPUTS
pinMode(5, OUTPUT); // Orange LED
pinMode(6, OUTPUT); // Blue LED
pinMode(9, OUTPUT); // Red LED
pinMode(10, OUTPUT); // Green LED
wiggle.attach(11); // Designate Pin 11 as servo PWM pin
}
void loop()
{
//Setting all LEDs to OFF
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
digitalWrite(9, HIGH);
digitalWrite(10, HIGH);
//Task 1: Back and Forth LED Tracer
while(digitalRead(2)==HIGH) //Pushbutton A is connected to Pin 2 so this code is when it is pressed
{
//Blinking the Green LED twice
digitalWrite(10, LOW);
delay(150);
digitalWrite(10, HIGH);
delay(150);
digitalWrite(10, LOW);
delay(150);
digitalWrite(10, HIGH);
//Blinking the Red LED twice
digitalWrite(9, LOW);
delay(150);
digitalWrite(9, HIGH);
delay(150);
digitalWrite(9, LOW);
delay(150);
digitalWrite(9, HIGH);
//Blinking the Blue LED twice
digitalWrite(6, LOW);
delay(150);
digitalWrite(6, HIGH);
delay(150);
digitalWrite(6, LOW);
delay(150);
digitalWrite(6, HIGH);
//Blinking the Orange LED twice
digitalWrite(5, LOW);
delay(150);
digitalWrite(5, HIGH);
delay(150);
digitalWrite(5, LOW);
delay(150);
digitalWrite(5, HIGH);
//Same code as above in reverse order to blink LEDs in the reverse sequence
//Blinking the Orange LED twice
digitalWrite(5, LOW);
delay(150);
digitalWrite(5, HIGH);
delay(150);
digitalWrite(5, LOW);
delay(150);
digitalWrite(5, HIGH);
//Blinking the Blue LED twice
digitalWrite(6, LOW);
delay(150);
digitalWrite(6, HIGH);
delay(150);
digitalWrite(6, LOW);
delay(150);
digitalWrite(6, HIGH);
//Blinking the Red LED twice
digitalWrite(9, LOW);
delay(150);
digitalWrite(9, HIGH);
delay(150);
digitalWrite(9, LOW);
delay(150);
digitalWrite(9, HIGH);
//Blinking the Green LED twice
digitalWrite(10, LOW);
delay(150);
digitalWrite(10, HIGH);
delay(150);
digitalWrite(10, LOW);
delay(150);
digitalWrite(10, HIGH);
}
//Task 2: Random LED Blinker
while(digitalRead(12)==HIGH)//Pushbutton B is connected to Pin 12 so this is when it is pressed
{
digitalWrite(12, HIGH);
int r = random(1,10); //Designates 'r' as a random number between 1 and 10 to randomly blink LEDs
digitalWrite(r, LOW);
delay(150);
digitalWrite(r, HIGH);
delay(150);
digitalWrite(r, LOW);
delay(150);
digitalWrite(r, HIGH);
}
//Task 3: Servo Oscillator
while(digitalRead(8)==HIGH) //Pushbutton C is connected to Pin 8 so this is when it is pressed
{
pinMode(8, HIGH); //This is to keep Pushbutton C on after it is pressed
int t=1;//Creating a variable called 't'
{
int d=20; //Creating a variable called 'd' that is the rotating degrees starting at 20 degrees
while(d!=120) //To rotate servo 1 degree incrementally until it rotates the full 120 degrees
{
wiggle.write(d);//This is to turn the servo 20 degrees from the starting point of 20 degrees
delay(80);//This is to momentarily stop servo at every single intermediate position for 8 milliseconds
d=d+1; //This is to add 1 after each rotation until the servo rotates the full 120 degrees
}
}
}
//Task 4: Synchronized Dance
while(digitalRead(7)==HIGH) //Pushbutton D is connected to Pin 7 so this is when it is pressed
{
pinMode(7, HIGH);// keeps the button on
int t=1;//Creating a variable called 't'
{
wiggle.write(30); //This code moves the servo to 30 degrees
//Blinking the BLue LED twice
digitalWrite(6, LOW);
delay(150);
digitalWrite(6, HIGH);
delay(150);
digitalWrite(6, LOW);
delay(150);
digitalWrite(6, HIGH);
delay(150);
wiggle.write(90); //This code moves the servo 90 degrees
//Blinking the Green LED twice
digitalWrite(10, LOW);
delay(150);
digitalWrite(10, HIGH);
delay(150);
digitalWrite(10, LOW);
delay(150);
digitalWrite(10, HIGH);
delay(150);
wiggle.write(120); //This code moves the servo to 120 degrees
//Blinking the Orange and Red LEDs twice
digitalWrite(5, LOW);
delay(150);
digitalWrite(5, HIGH);
delay(150);
digitalWrite(9, LOW);
delay(150);
digitalWrite(9, HIGH);
delay(150);
digitalWrite(5, LOW);
delay(150);
digitalWrite(5, HIGH);
delay(150);
digitalWrite(9, LOW);
delay(150);
digitalWrite(9, HIGH);
delay(150);
}
}
}