LED Arrow Sign for Arduino
Hi,
I'm a middle school student who likes to build electrical circuits consisting Arduinos, and other IC chips.
Intro:
Arrows have always been a great way to universally communicate and inform a passer-by of information that lies ahead. LED construction signs are commonly used to notify the driver which way he/she should pass around a construction site or vehicle. These signs are also great in every day projects with the Arduino, but small scale versions can be hard to come across and when you do find one, they can be quite expensive! This instructable will show you how to make your own arrow sign for cheap, with very few, basic components!
Supplies
You will need a power supply or Arduino, depending on how you want to build this. You will also need the following components to build the sign:
Supplies:
- Transistors: BC547 or 2N2222 (3)
- LEDs: Any color LEDs will do. (20+)
- Resistors: 680Ω (3), 470Ω (3)
- Some perf board to solder on (1)
- Male header connectors (5 pins)
Tools: (Optional)
- Multimeter (for debugging)
- Oscilloscope (for debugging)
- Soldering iron (and solder)
Misc: (Optional)
- Small labeler to label pinout for sign
Arrange All of the LEDs
Arrange all of the LEDs on the perf board. Lay it out however you want. You can make the arrow long, or short.
If you use more than 20 LEDs, you should calculate how much current they will draw, to make sure that your transistor can handle the current.
Formula:
I = x * 20
(x = Number of LEDs, I = Current in mA)
If I were to use 20 LEDs, 20 * 20 = 400, meaning that if all the arrow were on all at once, it should draw 400 mA.
(Note: This does not account for the resistors used, meaning that the current will most likely be lower than 400 mA when finished with the circuit)
The Arduino 5V pin can supply 800 mA (0.8 A)
Each I/O pin can supply about 10 mA
Once you have arranged the LEDs, you should bend the NEGATIVE (-) lead on the LED over, to prevent the LED from falling out. The shorter leg is the negative one.
Start Soldering!
Yes, this part can be quite tedious, and it can get boring quickly. But trust me, the final product is totally worth it!
Instead of trying to explain all of this, I just made a schematic. You can download the PDF with the full schematic
Thanks to Tinkercad for the awesome online circuit designer!
Downloads
Check It Over
Its always wise to check over your soldering job once you have finished, so I dedicated this step just to make sure that it is properly wired so we don't ruin any of your electronics. In the images attached, you can see the soldering job I did. Yes, I will be the first to admit, I'm not the best at soldering but I keep practicing!
Testing Time!
Now, if your sure that the circuit is properly inspected, and checked over, we can test it! In order to do that, you can use an Arduino or an ordinary power supply. Here, I will show you how to hook it up to an Arduino.
According to the diagram I posted above, the wiring should be simple. And no, you don't have to use an Arduino UNO. You can use any Arduino that is capable of supplying 5V. I'm going to use an Arduino Nano, because I have lots of them kicking around. Once you have it wired up, you can upload the code to the Arduino. I will provide the code here:
// C++ code // void setup() { //Put the code her to run once pinMode(2, OUTPUT); //Connect the CENTER arrow wire here pinMode(3, OUTPUT); //Connect the LEFT arrow wire here pinMode(4, OUTPUT); //Connect the RIGHT arrow wire here } void loop() { //Put the code here to run forever /*Blink LEFT*/ digitalWrite(3, HIGH); digitalWrite(2, HIGH); delay(500); digitalWrite(3, LOW); digitalWrite(2, LOW); delay(500); digitalWrite(3, HIGH); digitalWrite(2, HIGH); delay(500); digitalWrite(3, LOW); digitalWrite(2, LOW); delay(500); /*Blink RIGHT*/ digitalWrite(4, HIGH); digitalWrite(2, HIGH); delay(500); digitalWrite(4, LOW); digitalWrite(2, LOW); delay(500); digitalWrite(4, HIGH); digitalWrite(2, HIGH); delay(500); digitalWrite(4, LOW); digitalWrite(2, LOW); delay(500); /*Blink CENTER*/ digitalWrite(2, HIGH); delay(500); digitalWrite(2, LOW); delay(500); digitalWrite(2, HIGH); delay(500); digitalWrite(2, LOW); delay(500); }
You can also download the script here:
Downloads
Done!!!
You finished it! Great, now you can put it wherever you want to inform people of a specific direction! Thanks for reading this instructable!
Don't forget to share this Instructable with your friends!