Inspiration:
For this assignment, I was mainly inspired by the UV shoe sanitizer that is used to help fight bacteria in hospitals.
Process:
For the circuit, I have used 5 LEDs ( 4 red, 1 green), 8 wires, and one 320Ω resistor. The basic idea is that the individual waits for the green light to put his shoe on the platform, then the disinfection starts and takes 5 seconds to complete, when the green light goes on again, the individual can then remove his shoe.
Platform:
Setup:
I have used a for() loop and pinMode to avoid unnecessary repetition. I also have an array to store all the LEDs.
void setup() { pinMode(7, OUTPUT); for (int i=0; i<4; i++){ pinMode(Led[i], OUTPUT); } }
LEDs:
To tell the user that the disinfection is still going on, I have added an animation to the red LEDs, in which the light bounces between the two edges of the strip. To do that, I used the Delay function as well as two for() loops (for each direction), and digitalWrite() to control the LEDs.
// Check when the shoe is sanitized if (DONE){ for (int i=0; i<4; i++){ digitalWrite(Led[i], LOW); digitalWrite(7, HIGH); } } // If not sanitized if (DONE==false){ digitalWrite(7, LOW); // One way, left to right for (int i=0; i<4; i++){ // 2 Leds at the same time digitalWrite(Led[i], HIGH); digitalWrite(Led[i+1], HIGH); // Delay of 120 delay(120); digitalWrite(Led[i], LOW); digitalWrite(Led[i+1], LOW);} // The other way , right to left for (int i=3; i>=0; i--){ digitalWrite(Led[i], HIGH); digitalWrite(Led[i-1], HIGH); delay(120); digitalWrite(Led[i], LOW); digitalWrite(Led[i-1], LOW); } }
Timer:
For the timer, I have used millis() to change a boolean variable every 5 seconds.
// Timer for the sanitization unsigned long curr = millis(); if (curr-prev>=5000){ prev=curr; DONE=!DONE; }
One of the challenges I faced was setting up a good connection between wires as the tape was not ideal.
Demo:
Code:
int Led[]= {9, 10, 11, 12}; // list of Leds boolean DONE= false; // check when the sanitization is done unsigned long prev=0; // for the timer void setup() { pinMode(7, OUTPUT); for (int i=0; i<4; i++){ pinMode(Led[i], OUTPUT); } } void loop() { // Timer for the sanitization unsigned long curr = millis(); if (curr-prev>=5000){ prev=curr; DONE=!DONE; } // Check when the shoe is sanitized if (DONE){ for (int i=0; i<4; i++){ digitalWrite(Led[i], LOW); digitalWrite(7, HIGH); } } // If not sanitized if (DONE==false){ digitalWrite(7, LOW); // One way, left to right for (int i=0; i<4; i++){ // 2 Leds at the same time digitalWrite(Led[i], HIGH); digitalWrite(Led[i+1], HIGH); // Delay of 120 delay(120); digitalWrite(Led[i], LOW); digitalWrite(Led[i+1], LOW);} // The other way , right to left for (int i=3; i>=0; i--){ digitalWrite(Led[i], HIGH); digitalWrite(Led[i-1], HIGH); delay(120); digitalWrite(Led[i], LOW); digitalWrite(Led[i-1], LOW); } } }