/*ChunHo LAW
#300373802*/
#include <Servo.h>
Servo wiggly;
void setup() {
//output pin
pinMode(5, OUTPUT);//orange LED
pinMode(6, OUTPUT);//blue LED
pinMode(9, OUTPUT);//red LED
pinMode(10, OUTPUT);//green LED
//input pin
pinMode(2, INPUT);//Button A
pinMode(12, INPUT);//Button B
pinMode(8, INPUT);//Button C
pinMode(7, INPUT);//Button D
//designate pin 11 as the servo PWN pin
wiggly.attach(11);
Serial.begin(9600);
//start from blink all the LEDs
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
digitalWrite(9, HIGH);
digitalWrite(10, HIGH);
delay(100);}
//set a int for task 4 so it can alternate between 3 states
int j = 0;
//set a int for task 4 so it can alternate blink orange and red
int k = 0;
void loop() {
//Task 1 while button A was pressed all the LED will blink twice in (green>red>blue>orange)
//and it will reverse twice(orange>blue>red>green)
if(digitalRead(2) == HIGH)
{
//turn on all LED in 150ms
digitalWrite(10, LOW);
delay(150);
digitalWrite(9, LOW);
delay(150);
digitalWrite(6, LOW);
delay(150);
digitalWrite(5, LOW);
delay(150);
//turn off all LED in 150ms
digitalWrite(10, HIGH);
delay(150);
digitalWrite(9, HIGH);
delay(150);
digitalWrite(6, HIGH);
delay(150);
digitalWrite(5, HIGH);
delay(150);
//turn on all LED in 150ms
digitalWrite(10, LOW);
delay(150);
digitalWrite(9, LOW);
delay(150);
digitalWrite(6, LOW);
delay(150);
digitalWrite(5, LOW);
delay(150);
//turn off all LED in 150ms
digitalWrite(10, HIGH);
delay(150);
digitalWrite(9, HIGH);
delay(150);
digitalWrite(6, HIGH);
delay(150);
digitalWrite(5, HIGH);
delay(150);
//turn on all LED in 150ms
digitalWrite(5, LOW);
delay(150);
digitalWrite(6, LOW);
delay(150);
digitalWrite(9, LOW);
delay(150);
digitalWrite(10, LOW);
delay(150);
//turn off all LED in 150ms
digitalWrite(5, HIGH);
delay(150);
digitalWrite(6, HIGH);
delay(150);
digitalWrite(9, HIGH);
delay(150);
digitalWrite(10, HIGH);
delay(150);
//turn on all LED in 150ms
digitalWrite(5, LOW);
delay(150);
digitalWrite(6, LOW);
delay(150);
digitalWrite(9, LOW);
delay(150);
digitalWrite(10, LOW);
delay(150);
//turn off all LED in 150ms
digitalWrite(5, HIGH);
delay(150);
digitalWrite(6, HIGH);
delay(150);
digitalWrite(9, HIGH);
delay(150);
digitalWrite(10, HIGH);
delay(150);
}
//Task2 while button B was pressed it will choose a random LED and blink twice
if(digitalRead(12) == HIGH)
{
int randNumber;
// print a random number from 4 to 11
randNumber = random(4, 11);
//if the number is 4 add 1 to 5 and blink orange
if(randNumber == 4)
{
randNumber++;
}
//if the number is 7 minus 1 to 6 and blink blue
if(randNumber == 7)
{
randNumber--;
}
//if the number is 8 add 1 to 9 and blink red
if(randNumber == 8)
{
randNumber++;
}
//if the number is 11 minus 1 to 10 and blink green
if(randNumber == 11)
{
randNumber--;
}
//blink the random LED twice
digitalWrite(randNumber, LOW);
delay(150);
digitalWrite(randNumber, HIGH);
delay(150);
digitalWrite(randNumber, LOW);
delay(150);
digitalWrite(randNumber, HIGH);
delay(150);
}
//Task 3 while button was pressed the servo will back and dorth between 20 and 120
if(digitalRead(8) == HIGH)
{
//make the angle between 20 and 120
for(int i = 20; i < 120; i++)
{
//start add the angle
wiggly.write(i);
//8 ms delay
delay(8);
}
}
//Task4 while button D was press there will be three states
if(digitalRead(7) == HIGH)
{
//add 1 to j to determine different states
++j;
//state 1, when it press first time the servo move to 30 and blue LED blink twice
if(j == 1)
{
// the servo move to 30
wiggly.write(30);
//blink the blue LED twice
digitalWrite(6, LOW);
delay(150);
digitalWrite(6, HIGH);
delay(150);
digitalWrite(6, LOW);
delay(150);
digitalWrite(6, HIGH);
delay(150);
}
//state 2, when it press second time the servo move to 90 and green LED blink three time
if(j == 2)
{
// the servo move to 90
wiggly.write(90);
//blink the green LED three time
digitalWrite(10, LOW);
delay(150);
digitalWrite(10, HIGH);
delay(150);
digitalWrite(10, LOW);
delay(150);
digitalWrite(10, HIGH);
delay(150);
digitalWrite(10, LOW);
delay(150);
digitalWrite(10, HIGH);
delay(150);
}
//state 3, when it press third time the servo move to 120 and the LED will
//alternately blink orange and red LED
if(j == 3)
{
// the servo move to 120
wiggly.write(120);
//add 1 to k to determine different states
++k;
//state for blinking the orange LED
if(k%2==1)
{
//blink the orange LED twice
digitalWrite(5, LOW);
delay(150);
digitalWrite(5, HIGH);
delay(150);
digitalWrite(5, LOW);
delay(150);
digitalWrite(5, HIGH);
delay(150);
}
//state for blinking the red LED
else if(k%2==0)
{
//blink the red LED twice
digitalWrite(9, LOW);
delay(150);
digitalWrite(9, HIGH);
delay(150);
digitalWrite(9, LOW);
delay(150);
digitalWrite(9, HIGH);
delay(150);
}
//if the int j is not 1,2,3 it will back to 0 and make the states loop again
if(j != 1 || j != 2 || j != 3 )
{
j =0;
}
}
}
}