So uhhh… I bought… A desk lamp… For a hundred dirhams. A hundred. A hundred as in 1-0-0.
Impulsive purchases got the best of me again.
Anyways, I decided I would use this lamp for something other than playing around with its colors. So I made this kind of proximity/light sensor thing. Basically when I hold the lamp close to the the circuit, the red LED turns off and as I back up the lamp, the red LED blinks slower and slower until it stops blinking. As long as the red LED blinks/is on, the green LED can be turned on using a digital switch. Initially while making this circuit, I ran into some very silly difficulties – I attached the components on a single row which meant the circuit was never complete and I couldn’t figure out the problem the entire night for the life of me. Here is the bad circuit:
But one debugging session later here is my creation, the good circuit:
It works in a very fun way and the lamp works in an even fun-er way. Check out the video I’ve attached of the LEDs in action:
https://drive.google.com/drive/folders/1uOQwTJqiPt6b5cQ-L8GTVn3CXHp50x17?usp=sharing
Here is the code:
int green = 10; int red = 11; // the setup routine runs once when you press reset: void setup() { // initialize serial communication at 9600 bits per second: Serial.begin(9600); pinMode(green, OUTPUT); pinMode(red, OUTPUT); } // the loop routine runs over and over again forever: void loop() { // read the input on analog pin 0: int sensorValue = analogRead(A0); // print out the value you read: Serial.println(sensorValue); delay(1); // delay in between reads for stability if (sensorValue > 40) { // when far, turn on but don't blink digitalWrite(green, LOW); digitalWrite(red, LOW); } if (sensorValue > 15 && sensorValue <= 40) { // when slightly close, blink slow digitalWrite(green, HIGH); digitalWrite(red, HIGH); delay(100); digitalWrite(red, LOW); delay(100); } if (sensorValue <= 15 && sensorValue > 10) { // when closer, blink fast digitalWrite(green, HIGH); digitalWrite(red, HIGH); delay(250); digitalWrite(red, LOW); delay(250); } if (sensorValue <= 10) { // when very close, turn off digitalWrite(green, HIGH); digitalWrite(red, HIGH); } }