// LAB 1 ; ADRIANA SARAH 52224123439
int redLight = 13;
int orangeLight = 12;
int yellowLight = 11;
int greenLight = 10;
int babyblueLight = 2;
int blueLight = 3;
int purpleLight = 4;
int magentaLight = 5;
int whiteLight = 9;
int otherRed = 8;
const int ledPins[] = {2, 3, 4, 5};
int currentTask = 0;
unsigned long previousMillis = 0;
const long interval = 5000; // 5 seconds to demonstrate each task
void setup() {
Serial.begin(9600); // initialize serial communication
pinMode(redLight, OUTPUT);
pinMode(orangeLight, OUTPUT);
pinMode(yellowLight, OUTPUT);
pinMode(greenLight, OUTPUT);
pinMode(babyblueLight, OUTPUT);
pinMode(blueLight, OUTPUT);
pinMode(purpleLight, OUTPUT);
pinMode(magentaLight, OUTPUT);
pinMode(whiteLight, OUTPUT);
pinMode(otherRed, OUTPUT);
}
void loop() {
unsigned long currentMillis = millis();
if (currentMillis - previousMillis >= interval) {
previousMillis = currentMillis;
turnOffAllLeds(); // ensure all LEDs are turned off before switching tasks
currentTask = (currentTask + 1) % 6; // cycle through tasks
}
switch (currentTask) {
case 0:
Serial.println("Task 0: Blink 200ms");
blink200ms();
break;
case 1:
Serial.println("Task 1: Mimic Heartbeat");
mimicHeartbeat();
break;
case 2:
Serial.println("Task 2: Fastest Blink A Human Can See");
fastestBlink();
break;
case 3:
Serial.println("Task 3: Blink Multiple LEDs");
blinkMultipleLeds();
break;
case 4:
Serial.println("Task 4: SOS Morse Code");
morseCode();
break;
case 5:
Serial.println("Task 5: Ambulance Siren Lights");
ambulanceLights();
break;
}
}
// function to turn off all LEDs
void turnOffAllLeds() {
digitalWrite(redLight, LOW);
digitalWrite(orangeLight, LOW);
digitalWrite(yellowLight, LOW);
digitalWrite(greenLight, LOW);
digitalWrite(babyblueLight, LOW);
digitalWrite(blueLight, LOW);
digitalWrite(purpleLight, LOW);
digitalWrite(magentaLight, LOW);
digitalWrite(whiteLight, LOW);
digitalWrite(otherRed, LOW);
}
// task a (200ms second interval)
void blink200ms() {
digitalWrite(redLight, HIGH);
delay(200);
digitalWrite(redLight, LOW);
delay(200);
}
// task b (mimic heartbeat)
void mimicHeartbeat() {
digitalWrite(orangeLight, HIGH);
delay(100);
digitalWrite(orangeLight, LOW);
delay(100);
digitalWrite(orangeLight, HIGH);
delay(100);
digitalWrite(orangeLight, LOW);
delay(300);
}
// task c (fastest blink the human eye can see)
void fastestBlink() {
digitalWrite(yellowLight, HIGH);
delay(3); // can adjust to 1ms, 2ms, or 3ms
digitalWrite(yellowLight, LOW);
delay(3);
}
// task d (blink 2, 3, or 4 LEDs at once)
void blinkMultipleLeds() {
// light 2 LEDs
for (int i = 0; i < 2; i++) {
digitalWrite(ledPins[i], HIGH);
}
delay(500);
for (int i = 0; i < 2; i++) {
digitalWrite(ledPins[i], LOW);
}
delay(500);
// light 3 LEDs
for (int i = 0; i < 3; i++) {
digitalWrite(ledPins[i], HIGH);
}
delay(500);
for (int i = 0; i < 3; i++) {
digitalWrite(ledPins[i], LOW);
}
delay(500);
// light 4 LEDs
for (int i = 0; i < 4; i++) {
digitalWrite(ledPins[i], HIGH);
}
delay(500);
for (int i = 0; i < 4; i++) {
digitalWrite(ledPins[i], LOW);
}
delay(500);
}
// task e (morse code)
void morseCode() {
for (int i = 0; i < 3; i++) {
digitalWrite(greenLight, HIGH);
delay(200); // dot duration
digitalWrite(greenLight, LOW);
delay(200); // space between dots
}
delay(600); // space between letters
for (int i = 0; i < 3; i++) {
digitalWrite(greenLight, HIGH);
delay(600); // dash duration
digitalWrite(greenLight, LOW);
delay(200); // space between dashes
}
delay(600); // space between letters
for (int i = 0; i < 3; i++) {
digitalWrite(greenLight, HIGH);
delay(200); // dot duration
digitalWrite(greenLight, LOW);
delay(200); // space between dots
}
delay(2000); // pause before repeating
}
// task f (any sort of LED flashing combo)
void ambulanceLights() {
digitalWrite(whiteLight, HIGH);
delay(100);
digitalWrite(whiteLight, LOW);
delay(100);
digitalWrite(otherRed, HIGH);
delay(100);
digitalWrite(otherRed, LOW);
delay(100);
for (int i = 0; i < 10; i++) {
digitalWrite(whiteLight, HIGH);
digitalWrite(otherRed, LOW);
delay(50);
digitalWrite(whiteLight, LOW);
digitalWrite(otherRed, HIGH);
delay(50);
}
}