Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save faddah/02c75ac4d51e2700dc0eac1e6aa4284c to your computer and use it in GitHub Desktop.
Save faddah/02c75ac4d51e2700dc0eac1e6aa4284c to your computer and use it in GitHub Desktop.
Arduino Hero (Uno) project for craftingtable.com Lost In Space Adventure Kit Day 5 - Creative Experiment B
#include "Arduino.h"
const byte leds[6] = {13, 12, 11, 10, 9, 8}; // Red, Green, Blue LEDs
const byte dips[3] = {4, 3, 2}; // Corresponding DIP switches
void setup() {
// Set up LED pins as outputs
for (byte i = 0; i < 6; i++) {
pinMode(leds[i], OUTPUT);
// Ensure LEDs start OFF
digitalWrite(leds[i], LOW);
}
// Set up DIP switch pins as inputs
for (byte i = 0; i < 3; i++) {
pinMode(dips[i], INPUT);
}
// You might want to start Serial communication for debugging, but it's optional.
// Serial.begin(9600);
}
void loop() {
// 1. Read the state of all DIP switches and count how many are ON
int activeDipSwitches = 0;
for (byte i = 0; i < 3; i++) {
if (digitalRead(dips[i]) == HIGH) { // Check if the current DIP switch is ON
activeDipSwitches++; // Increment the counter if it's ON
}
}
// 2. Decide what to do based on the count of active DIP switches
if (activeDipSwitches == 1) {
// If exactly one DIP switch is ON, find which one it is and turn on its corresponding LED
if (digitalRead(dips[0]) == HIGH) {
digitalWrite(leds[0], HIGH); // Turn ON the LED corresponding to the active DIP switch
digitalWrite(leds[2], HIGH);
digitalWrite(leds[4], HIGH);
delay(500);
digitalWrite(leds[0], LOW);
digitalWrite(leds[2], LOW);
digitalWrite(leds[4], LOW);
delay(250);
digitalWrite(leds[0], HIGH);
digitalWrite(leds[2], HIGH);
digitalWrite(leds[4], HIGH);
delay(500);
digitalWrite(leds[0], LOW);
digitalWrite(leds[2], LOW);
digitalWrite(leds[4], LOW);
delay(250);
digitalWrite(leds[0], HIGH);
digitalWrite(leds[2], HIGH);
digitalWrite(leds[4], HIGH);
delay(1500);
digitalWrite(leds[0], LOW);
digitalWrite(leds[2], LOW);
digitalWrite(leds[4], LOW);
delay(1000);
} else {
digitalWrite(leds[1], LOW); // Ensure other LEDs are OFF
digitalWrite(leds[3], LOW);
digitalWrite(leds[5], LOW);
}
if (digitalRead(dips[1]) == HIGH) {
digitalWrite(leds[1], HIGH); // Turn ON the LED corresponding to the active DIP switch
digitalWrite(leds[3], HIGH);
digitalWrite(leds[5], HIGH);
delay(500);
digitalWrite(leds[1], LOW);
digitalWrite(leds[3], LOW);
digitalWrite(leds[5], LOW);
delay(250);
digitalWrite(leds[1], HIGH);
digitalWrite(leds[3], HIGH);
digitalWrite(leds[5], HIGH);
delay(500);
digitalWrite(leds[1], LOW);
digitalWrite(leds[3], LOW);
digitalWrite(leds[5], LOW);
delay(250);
digitalWrite(leds[1], HIGH);
digitalWrite(leds[3], HIGH);
digitalWrite(leds[5], HIGH);
delay(1500);
digitalWrite(leds[1], LOW);
digitalWrite(leds[3], LOW);
digitalWrite(leds[5], LOW);
delay(1000);
} else {
digitalWrite(leds[1], LOW); // Ensure other LEDs are OFF
digitalWrite(leds[3], LOW);
digitalWrite(leds[5], LOW);
}
if (digitalRead(dips[2]) == HIGH) {
digitalWrite(leds[0], HIGH);
delay(250);
digitalWrite(leds[0], LOW);
digitalWrite(leds[1], HIGH);
delay(250);
digitalWrite(leds[1], LOW);
digitalWrite(leds[2], HIGH);
delay(250);
digitalWrite(leds[2], LOW);
digitalWrite(leds[3], HIGH);
delay(250);
digitalWrite(leds[3], LOW);
digitalWrite(leds[4], HIGH);
delay(250);
digitalWrite(leds[4], LOW);
digitalWrite(leds[5], HIGH);
delay(250);
digitalWrite(leds[5], LOW);
delay(250);
digitalWrite(leds[5], HIGH);
delay(250);
digitalWrite(leds[5], LOW);
digitalWrite(leds[4], HIGH);
delay(250);
digitalWrite(leds[4], LOW);
digitalWrite(leds[3], HIGH);
delay(250);
digitalWrite(leds[3], LOW);
digitalWrite(leds[2], HIGH);
delay(250);
digitalWrite(leds[2], LOW);
digitalWrite(leds[1], HIGH);
delay(250);
digitalWrite(leds[1], LOW);
digitalWrite(leds[0], HIGH);
delay(250);
digitalWrite(leds[0], LOW);
delay(250);
digitalWrite(leds[0], HIGH);
digitalWrite(leds[1], HIGH);
digitalWrite(leds[2], HIGH);
digitalWrite(leds[3], HIGH);
digitalWrite(leds[4], HIGH);
digitalWrite(leds[5], HIGH);
delay(500);
digitalWrite(leds[0], LOW);
digitalWrite(leds[1], LOW);
digitalWrite(leds[2], LOW);
digitalWrite(leds[3], LOW);
digitalWrite(leds[4], LOW);
digitalWrite(leds[5], LOW);
delay(250);
digitalWrite(leds[0], HIGH);
digitalWrite(leds[1], HIGH);
digitalWrite(leds[2], HIGH);
digitalWrite(leds[3], HIGH);
digitalWrite(leds[4], HIGH);
digitalWrite(leds[5], HIGH);
delay(500);
digitalWrite(leds[0], LOW);
digitalWrite(leds[1], LOW);
digitalWrite(leds[2], LOW);
digitalWrite(leds[3], LOW);
digitalWrite(leds[4], LOW);
digitalWrite(leds[5], LOW);
delay(250);
digitalWrite(leds[0], HIGH);
digitalWrite(leds[1], HIGH);
digitalWrite(leds[2], HIGH);
digitalWrite(leds[3], HIGH);
digitalWrite(leds[4], HIGH);
digitalWrite(leds[5], HIGH);
delay(1500);
digitalWrite(leds[0], LOW);
digitalWrite(leds[1], LOW);
digitalWrite(leds[2], LOW);
digitalWrite(leds[3], LOW);
digitalWrite(leds[4], LOW);
digitalWrite(leds[5], LOW);
delay(1000);
}
} else {
// If zero, two, or three DIP switches are ON, turn ALL LEDs OFF
for (byte i = 0; i < 3; i++) {
digitalWrite(leds[i], LOW); // Turn OFF all LEDs
}
}
// Optional: A small delay can help stabilize readings, though often not strictly necessary for simple switch reads.
delay(50);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment