Need suggestions for 30ish LED spread out over a room

Hello, fairly new to all this and I just need a suggestion for the last part of a project.

I am a high school teacher and I am working on a project to randomly pick a student in my class whenever needed. The idea is I hit a button and it randomly picks a student but appears like it is a spinner or roulette wheel. The desks are setup around the outside of the room so it is already similar to a wheel. So I'd like to have a larger light at each desk that lights up sequentially going around the room a few times really quickly and then slows down and stops at the selected student.

I've figured out the code and hardware part using an UNO, a few 74H595's, and a buzzer. Each desk would have a pin on the 74H595 and the buzzer for sound effects

Here is what I'm looking for some suggestions on:

  • For each student workstation I need a way to mount some sort of LED/light and connect it to the board. It needs to be fairly durable and it would be nice if it was a little bigger that just a standard LED, something kind of flashy but won't be in the way when not in use.
  • There is already cabling to the computers so adding more would be possible but doesn't seem that efficient. I know there might be some sort of way to use the PC but I haven't gotten into any of that yet and I would prefer something that didn't need the student to do something. Although it would be great if there was a not too hard way to have the computer in the pool automatically if somebody was logged into windows. So if there was something that could just autorun on login that may work.

TIA

1 Like

Using TPIC6B595s might be more versatile, allowing you to use brighter LEDs and series chains to a higher voltage, say 12 V.

Either you wire it, which will require a few tricks in sending data over distances, or you use WiFi modules such as the ESP-01 to locate a "node" at each lighting point.

That will be a wiring nightmare. Consider a large display that displays 1 to n randomly and put numbers on each desk. The match gets the question.

Exactly, call it the big board or some other gameshowesque name.
Alternatively you could take something like a mini road cone or something equally difficult to lose and build a wireless setup into them with ESP8266s and ESP-NOW. Cheap and easy.

Fun idea, you sound like a cool teacher :apple:

Quite complicated wiring. If you have a larger budget, it may be better to have an Arduino Nano with an NRF24L01 module on every computer. When a student logs in to Win10, a serial connection program can be started automatically or you can write something on Processing. He will then make a USB connection to Arduino that the student is logged in and Arduino will report via NRF24L01 that he is ready for the exam and light up green LED (or in the other case that the student is not there and light up red LED). When the Arduino receives a command via NRF24L01, the blue LED will light locally and will emit a sound signal from a piezo buzzer. Just idea.

A simpler idea. Modern 5/8/10mm LEDs are pretty efficient, even 20~30mA current is surprisingly bright. You just need to put them inside something to make them look more impressive, diffusing the light into something larger. Use a single cat5 cable to wire from desk to desk in a chain. At each desk, the led is wired across 2 of the conductors in the cable, a different pair at each desk. Cat5 has 8 conductors, so that will allow up to 56 desks. At the front of the class, the 8 conductors connect to 8 Arduino digital outputs via 8 current limiting resistors. Add a button to trigger the sequence and you're done.

Thanks for the tip on the higher voltage, I didn't know there were different boards like that I thought something like a relay was the only way

This sounds like what would be great for a long term solution but a bit of a learning curve. Would it be possible to have that program start completely on it's own? I know how to start a program after a Windows login but would the student have to do anything else? Where can I find more information on how to do that?

I'm not sure I understand how you can get 56 out of the 8 conductors. Does that mean that you assign positive and negative to the appropriate wires for the LED you want? If that is the case then sometimes say the "blue/white" wire would be positive and sometimes negative right? How would you do that on a pin? or is "down" really the same as ground? or am I not getting how it would work?

Arduino IDE is based on Processing.
https://processing.org/
In it you can write a simple program for communication with Arduino over USB. Then you export the code with the JAVA option and get an EXE executable file. You can make this file start automatically when the student logs in to Win10 and that's it. The student doesn't have to do anything else and the program connects to Arduino and the rest as I suggested in my previous post. You can use bright LED with 3 colors, which you can put in a white ping pong ball, for example, for better light scattering.

That's right. And sometimes neither positive or negative! The technique is called "Charlieplexing" after the engineer who invented it. It makes use of the fact that an Arduino pin can be an output or an input. When an output, it can be HIGH (5V) and can source current, or LOW (0V) and can sink current. When an input, it will neither source nor sink current. And it also makes use of the fact that LEDs are of course diodes, and will only pass current (and light up) when the current flows in one direction.

So with 8 conductors in the cat5 cable, imagine your LEDs are grouped into 8 groups of 7, so 56 LEDs in total. In any given group, all the anodes of the LEDs are commoned together and connected to the same wire. But their cathodes are individually connected to the other 7 wires. Each group had its anodes connected to a different wire. If one wire is 5V and another is 0V and the remaining 6 wires are "disconnected" (the Arduino pins they are connected to have been set as inputs) then only 1 led out of 56 will light.

Clever, eh?

This is referred to as "Charlieplexing". For each wire (there are eight) you can feed current through a LED to any of the other seven wires. Eight times seven is 56.

The resistors are each half of the value for driving a single LED as there will be one in each of the two active wires at any one time.

Note that the LEDs must all be of the same type. Between any two wires there will be two LEDs, which one lights depends on which wire is positive. This trick only works with diodes and only when all diodes have approximately the same threshold voltage. Only one light can be illuminated at any one time unlike other forms of multiplexing but you can certainly move the current one in rapid succession "like a roulette wheel".

Thanks for the compliment. I was not a school teacher however I spent a lot of years as factory and applications engineering in the semiconductor industry. Sort of like a Science teacher in one field.

1 Like

Now i am thinking the least complex wiring might be to use a daisy-chain lighting protocol like DMX, be it maybe with a lower BAUD rate, or DALI. And have a small receiver on every node, using just an AtTiny13.
That way you can just use a UTP-cable, but rather than going outwards towards every desk, you can go to the first desk and go from desk to desk from there.
The actual format used to communicate, might be closer to DALI, where you send commands to specific nodes (as opposed to DMX which sends a frame with all information repeatedly) And can let those nodes send data back upon request. Depending on the distance to be covered you may use 5v logic levels (rather than the 12v that DALI uses) and omit the opto-coupler that is included for DALI. Since an AtTiny13 doesn't have a UART, swSerial can be used, and for that a BAUD-rate of 1200kbps of DALI is just fine, though you can probably up it a bit (and doesn't have to be Manchester, but just 8N1 Serial) Maybe it's a bit late as a thought.