Reading 12-byte number to control LEDs

Today I tried to send a 12-bit number to my Arduino board, in which each bit controls a digital output connected to a LED.

Test completed. Mission accomplished! Once I have my MAX7219 IC, I will try to control 64 LEDs… which will be useful for my annunciator panel later on.

   Test reading 12-character input from serial port.

   Reads 12 characters from the serial port to control a series of leds that represent annunciator status fields of the KA350i.
   The final implementation will use a MAX7219ENG (DIP) serially interfaced 8-digit LED display driver to control a 8x8 LED matrix, but the idea will be more or less the same.
   Each character represents the status of LED: 0=OFF, 1=ON.
   This test will only light up 2 LEDS (see circuit).
   111111111111 lights up all LEDs
   010100000000 lights up the 2nd and the 4th LED
   000000000000 shut off all LEDs
   The circuit:
   - LED 1 (RED) to digital pin 2, with 220 Ohm resistor
   - LED 2 (GREEN) to digital pin 4, with 220 Ohm resistor

   Created 2016/01/29
   By Maarten Van Damme
   By Maarten Van Damme

char buffer[13];//One character bigger than the intended number of characters.
int received;

int redLed = 2;
int greenLed = 4;

void setup() {

  received = 0;
  buffer[received] = '\0';

  pinMode(redLed, OUTPUT);
  pinMode(greenLed, OUTPUT);

void loop() {

  if (Serial.available())
    buffer[received++] =;
    buffer[received] = '\0';
    if (received >= (sizeof(buffer) - 1))
      int myInt = atoi(buffer);
      received = 0;

      for (int i = 0; i < sizeof(buffer) - 1; i++)
        Serial.print("LED: ");
        Serial.print(": ");
        (buffer[i]=='1' ? Serial.println(" --> ON") : Serial.println(" --> OFF"));
        digitalWrite(i+1, (buffer[i] == '1' ? HIGH : LOW));

And just for fun, the wiring scheme below:

1 comment

Leave a Reply

Your email address will not be published.