all | audio | badgelife | breakout | clocks | displays | experiments | feather | handhelds | home automation | howto | LED art | misc | props | robots | sewing | software | tools | no_category

LED displays on Arduinos - a collection

for building clocks and bring them anywhere you want, even integrated a temperature sensor, if you're into that kind of stuff

I never came around to do something with the bubble displays I bought in awe and also have some spare trinket pros. So I stripped down the eagle design files for the trinket pro (thanks adafruit for that) to get a shield.

LED displays on Arduinos - a collection | Arduino Pro Mini - 8x8 DIY matrix - Version 2

2016-10-14 11:44:30

I used some sanding paper to diffuse the displays but stripped of the grey stuff as well. still looks nice though. It's possible to daisy them with I2C and put them next to each other to get an even bigger matrix. Works as a micro badge.

Here's the pinout of those tiny matrices. Had to google the name on the PCB to find stuff. Funky trap when checking the pinouts, it's not like an IC where the first row - first col LED is on the top left, it's on the bottom.

Here's some code to start:

// columns are anodes (positive) in my case
int col_pins[8] = {
  // 13,3,4,10,6,11,15,16
  5, A1, A0, 8, 12, 7, 3, 2
};

int row_pins[8] = {
  // 9,14,8,12,1,7,2,5
  9, 4, 10, 6, A3, 11, A2, 13
};

byte img[8] =
{
  B11000011,
  B11000011,
  B00111100,
  B00111100,
  B00111100,
  B00111100,
  B11000011,
  B11000011
};

void setup() {
  // put your setup code here, to run once:
  for (int i=0; i<8; i++)
  {
    pinMode(col_pins[i], OUTPUT);
    pinMode(row_pins[i], OUTPUT);
  }
  for (int i=0; i<8; i++)
  {
    digitalWrite(col_pins[i], HIGH);
    digitalWrite(row_pins[i], LOW);
  }
}

void loop() 
{
  for (int j=0; j<8; j++)
  {
    digitalWrite(col_pins[j], LOW);

    int i = 0;
    for (byte mask = B00000001; mask>0; mask <<= 1) 
    {
      if (img[j] & mask)
      {
        digitalWrite(row_pins[i], HIGH);
        delayMicroseconds(15);
        digitalWrite(row_pins[i], LOW);
        delayMicroseconds(5);
      }
      else
      {
        digitalWrite(row_pins[i], LOW);
        delayMicroseconds(20);
      }
      i++;
    }
    digitalWrite(col_pins[j], HIGH);
  }
}

https://cdn.hackaday.io/images/3990331476437873048.png
https://cdn.hackaday.io/images/2189991476437733925.jpg

LED displays on Arduinos - a collection | Arduino Pro Mini - 8x8 DIY matrix - Version 2

2016-10-14 11:44:30

I used some sanding paper to diffuse the displays but stripped of the grey stuff as well. still looks nice though. It's possible to daisy them with I2C and put them next to each other to get an even bigger matrix. Works as a micro badge.

Here's the pinout of those tiny matrices. Had to google the name on the PCB to find stuff. Funky trap when checking the pinouts, it's not like an IC where the first row - first col LED is on the top left, it's on the bottom.

Here's some code to start:

// columns are anodes (positive) in my case
int col_pins[8] = {
  // 13,3,4,10,6,11,15,16
  5, A1, A0, 8, 12, 7, 3, 2
};

int row_pins[8] = {
  // 9,14,8,12,1,7,2,5
  9, 4, 10, 6, A3, 11, A2, 13
};

byte img[8] =
{
  B11000011,
  B11000011,
  B00111100,
  B00111100,
  B00111100,
  B00111100,
  B11000011,
  B11000011
};

void setup() {
  // put your setup code here, to run once:
  for (int i=0; i<8; i++)
  {
    pinMode(col_pins[i], OUTPUT);
    pinMode(row_pins[i], OUTPUT);
  }
  for (int i=0; i<8; i++)
  {
    digitalWrite(col_pins[i], HIGH);
    digitalWrite(row_pins[i], LOW);
  }
}

void loop() 
{
  for (int j=0; j<8; j++)
  {
    digitalWrite(col_pins[j], LOW);

    int i = 0;
    for (byte mask = B00000001; mask>0; mask <<= 1) 
    {
      if (img[j] & mask)
      {
        digitalWrite(row_pins[i], HIGH);
        delayMicroseconds(15);
        digitalWrite(row_pins[i], LOW);
        delayMicroseconds(5);
      }
      else
      {
        digitalWrite(row_pins[i], LOW);
        delayMicroseconds(20);
      }
      i++;
    }
    digitalWrite(col_pins[j], HIGH);
  }
}

https://cdn.hackaday.io/images/3990331476437873048.png
https://cdn.hackaday.io/images/2189991476437733925.jpg

LED displays on Arduinos - a collection | Arduino Pro Mini - 8x8 DIY matrix

2016-10-04 17:07:44

[Update] hand soldered board

This one is almost as big as the small 20mm x 20mm, inspired by @al1 's visit at my place, showing of his colourful and tiny RGB displays. I plan on putting this on arduinos and just run and hope for the best with blue or white LEDs.

don't be cheap, use fresh solder paste :D first heatgun station (858D) clone test.

I needed something to calm down my nerves - the annoying colleague was annoying - so I hand soldered the board with the today arrived UV LEDs. I wanted purple leds on a purple board...

https://cdn.hackaday.io/images/4761181475593431718.png
https://cdn.hackaday.io/images/7614731475593443140.png
https://cdn.hackaday.io/images/9268151477224343773.jpg
https://cdn.hackaday.io/images/6771531477408611744.png

LED displays on Arduinos - a collection | Arduino Pro Mini - 8x8 DIY matrix

2016-10-04 17:07:44

[Update] hand soldered board

This one is almost as big as the small 20mm x 20mm, inspired by @al1 's visit at my place, showing of his colourful and tiny RGB displays. I plan on putting this on arduinos and just run and hope for the best with blue or white LEDs.

don't be cheap, use fresh solder paste :D first heatgun station (858D) clone test.

I needed something to calm down my nerves - the annoying colleague was annoying - so I hand soldered the board with the today arrived UV LEDs. I wanted purple leds on a purple board...

https://cdn.hackaday.io/images/4761181475593431718.png
https://cdn.hackaday.io/images/7614731475593443140.png
https://cdn.hackaday.io/images/9268151477224343773.jpg
https://cdn.hackaday.io/images/6771531477408611744.png

LED displays on Arduinos - a collection | arduino pro mini shield for 2 5x7 LED displays

2016-10-03 10:37:54

I have those 0.7" knockoffs for the longest time now and never made something with them. The cheapest mcu board I could think of (as always) was an arduino pro mini and I have an idea how I could connect them a bit differently so that I might be able to make it a watch.

https://cdn.hackaday.io/images/3039121475482660983.png
https://cdn.hackaday.io/images/2864921475482684840.png
https://cdn.hackaday.io/images/4295261475483856915.jpg

LED displays on Arduinos - a collection | arduino pro mini shield for 2 5x7 LED displays

2016-10-03 10:37:54

I have those 0.7" knockoffs for the longest time now and never made something with them. The cheapest mcu board I could think of (as always) was an arduino pro mini and I have an idea how I could connect them a bit differently so that I might be able to make it a watch.

https://cdn.hackaday.io/images/3039121475482660983.png
https://cdn.hackaday.io/images/2864921475482684840.png
https://cdn.hackaday.io/images/4295261475483856915.jpg

LED displays on Arduinos - a collection | display stuff

2015-10-07 15:09:57

this slowly turns into a "look what display I've bought this time" project...

I bought 2 5x7 old school vintage LED matrices, called MAN-2A. They are hopefully pin compatible to TIL305 from Texas Instruments. The plan is to make a little time piece with 3x5 digits, so that I would only need two of these displays to get hours and minutes displayed.

http://www.ti.com/lit/ds/sods002/sods002.pdf

LED displays on Arduinos - a collection | display stuff

2015-10-07 15:09:57

this slowly turns into a "look what display I've bought this time" project...

I bought 2 5x7 old school vintage LED matrices, called MAN-2A. They are hopefully pin compatible to TIL305 from Texas Instruments. The plan is to make a little time piece with 3x5 digits, so that I would only need two of these displays to get hours and minutes displayed.

http://www.ti.com/lit/ds/sods002/sods002.pdf

LED displays on Arduinos - a collection | first version boards are in

2015-10-02 00:56:43

and here is the code for the LM75 on board the trinket shield, which finally works.

/*
 March 6, 2014
 Spark Fun Electronics
 Nathan Seidle
 Updates by Joel Bartlett
 
 This code is originally based Dean Reading's Library deanreading@hotmail.com
 http://arduino.cc/playground/Main/SevenSegmentLibrary
 He didn't have a license on it so I hope he doesn't mind me making it public domain: 
 This code is public domain but you buy me a beer if you use this and we meet someday (Beerware license).
 
 This sketch provides a simple counter example for the HP Bubble display from SparkFun.
 https://www.sparkfun.com/products/12710
 
 Pinout for HP Bubble Display:
 1:  Cathode 1
 2:  Anode E
 3:  Anode C
 4:  Cathode 3
 5:  Anode dp
 6:  Cathode 4
 7:  Anode G
 8:  Anode D
 9:  Anode F
 10: Cathode 2
 11: Anode B
 12: Anode A
 */
#include <Wire.h>
#include "SevSeg.h"

//Create an instance of the object.
SevSeg myDisplay;

//Create global variables
unsigned long timer;
int deciSecond = 0;
int f;
void setup()
{
  Wire.begin();
  Serial.begin(9600);
  int displayType = COMMON_CATHODE; //Your display is either common cathode or common anode


  //This pinout is for a bubble dispaly
  //Declare what pins are connected to the GND pins (cathodes)
  int digit1 = 3; //Pin 1
  int digit2 = 4; //Pin 10
  int digit3 = 5; //Pin 4
  int digit4 = 6; //Pin 6

    //Declare what pins are connected to the segments (anodes)
  int segA = 8; //Pin 12
  int segB = 9; //Pin 11
  int segC = 10; //Pin 3
  int segD = 11; //Pin 8
  int segE = 12; //Pin 2
  int segF = 13; //Pin 9
  int segG = 14; //Pin 7
  int segDP= 15; //Pin 5

    int numberOfDigits = 4; //Do you have a 1, 2 or 4 digit display?

  myDisplay.Begin(displayType, numberOfDigits, digit1, digit2, digit3, digit4, segA, segB, segC, segD, segE, segF, segG, segDP);

  myDisplay.SetBrightness(100); //Set the display to 100% brightness level

  // timer = millis();
}

void loop()
{


    char tempString[10]; //Used for sprintf
    sprintf(tempString, "%4d", f); //Convert deciSecond into a string that is right adjusted
    myDisplay.DisplayString(tempString, 4); //(numberToDisplay, decimal point location in binary number [4 means the third digit])

if (millis() - timer >= 1000)
  {
  Wire.write(0x00);  
  Wire.requestFrom(72, 2);  
  
  while(Wire.available()) 
  {
    int8_t msb = Wire.read();
    int8_t lsb = Wire.read();

    // strip one bit of the lsb
    lsb = (lsb & 0x80 ) >> 7; // now lsb = 0 or 1
    f = msb * 10 + 5 * lsb;    
    // add to to form an float
    Serial.println(f,1);
  }
timer = millis();

  }

}

LED displays on Arduinos - a collection | first version boards are in

2015-10-02 00:56:43

and here is the code for the LM75 on board the trinket shield, which finally works.

/*
 March 6, 2014
 Spark Fun Electronics
 Nathan Seidle
 Updates by Joel Bartlett
 
 This code is originally based Dean Reading's Library deanreading@hotmail.com
 http://arduino.cc/playground/Main/SevenSegmentLibrary
 He didn't have a license on it so I hope he doesn't mind me making it public domain: 
 This code is public domain but you buy me a beer if you use this and we meet someday (Beerware license).
 
 This sketch provides a simple counter example for the HP Bubble display from SparkFun.
 https://www.sparkfun.com/products/12710
 
 Pinout for HP Bubble Display:
 1:  Cathode 1
 2:  Anode E
 3:  Anode C
 4:  Cathode 3
 5:  Anode dp
 6:  Cathode 4
 7:  Anode G
 8:  Anode D
 9:  Anode F
 10: Cathode 2
 11: Anode B
 12: Anode A
 */
#include <Wire.h>
#include "SevSeg.h"

//Create an instance of the object.
SevSeg myDisplay;

//Create global variables
unsigned long timer;
int deciSecond = 0;
int f;
void setup()
{
  Wire.begin();
  Serial.begin(9600);
  int displayType = COMMON_CATHODE; //Your display is either common cathode or common anode


  //This pinout is for a bubble dispaly
  //Declare what pins are connected to the GND pins (cathodes)
  int digit1 = 3; //Pin 1
  int digit2 = 4; //Pin 10
  int digit3 = 5; //Pin 4
  int digit4 = 6; //Pin 6

    //Declare what pins are connected to the segments (anodes)
  int segA = 8; //Pin 12
  int segB = 9; //Pin 11
  int segC = 10; //Pin 3
  int segD = 11; //Pin 8
  int segE = 12; //Pin 2
  int segF = 13; //Pin 9
  int segG = 14; //Pin 7
  int segDP= 15; //Pin 5

    int numberOfDigits = 4; //Do you have a 1, 2 or 4 digit display?

  myDisplay.Begin(displayType, numberOfDigits, digit1, digit2, digit3, digit4, segA, segB, segC, segD, segE, segF, segG, segDP);

  myDisplay.SetBrightness(100); //Set the display to 100% brightness level

  // timer = millis();
}

void loop()
{


    char tempString[10]; //Used for sprintf
    sprintf(tempString, "%4d", f); //Convert deciSecond into a string that is right adjusted
    myDisplay.DisplayString(tempString, 4); //(numberToDisplay, decimal point location in binary number [4 means the third digit])

if (millis() - timer >= 1000)
  {
  Wire.write(0x00);  
  Wire.requestFrom(72, 2);  
  
  while(Wire.available()) 
  {
    int8_t msb = Wire.read();
    int8_t lsb = Wire.read();

    // strip one bit of the lsb
    lsb = (lsb & 0x80 ) >> 7; // now lsb = 0 or 1
    f = msb * 10 + 5 * lsb;    
    // add to to form an float
    Serial.println(f,1);
  }
timer = millis();

  }

}

LED displays on Arduinos - a collection | Arduino Pro Mini - DL1414

2015-09-26 13:10:32

[UPDATE] changed the picture showing the display put on the wrong way to the correct one

So I had this little fellow in my drawers and wasn't really using it because it was so special and also a bit pricey. But yesterday I wanted to check if it still works and I have way to many dev kits and arduinos and stuff, so I just tried it. I looked up the datasheet and checked the pinout - I was so lucky that the arduino pro mini is an excellent candidate for this display, since the power supply pins happened to be on the same position and the rest was IO. Unfortunately I soldered it the other way around. The black, marked with G pin was not pin 7 GND but pin 1. I was able to cross over the supply pins and rotate the data pins for the display. Luckily the highest databits where set in a way that I was able to access the alphabet characters. I have to de- and re-solder it to get numbers too. It's a really smart little device, you have 2 address pins and 7 data pins for ascii code and one write WR pin.

There are at least two versions as it seems, one Siemems DL-1414T and a HP DL-1414.

As always, if anyone knows a better way for getting bits out of bytes to set pins (in an arduino scope) please tell me, this is what I did:

void set_char(byte digit, byte ascii)
{
  digitalWrite(LED_WR, HIGH);  
  digitalWrite(LED_A0, 1 & digit);
  digitalWrite(LED_A1, 1 & digit>>1);
  digitalWrite(LED_D0, 1 & ascii>>0);
  digitalWrite(LED_D1, 1 & ascii>>1);
  digitalWrite(LED_D2, 1 & ascii>>2);
  digitalWrite(LED_D3, 1 & ascii>>3);
  digitalWrite(LED_D4, 1 & ascii>>4);
  digitalWrite(LED_D5, 1 & ascii>>5);
  digitalWrite(LED_D6, 1 & ascii>>6);
  digitalWrite(LED_WR, LOW);
  delay(5);  
  digitalWrite(LED_WR, HIGH);
  delay(5);
}
https://cdn.hackaday.io/images/5406051475503730142.png

LED displays on Arduinos - a collection | Arduino Pro Mini - DL1414

2015-09-26 13:10:32

[UPDATE] changed the picture showing the display put on the wrong way to the correct one

So I had this little fellow in my drawers and wasn't really using it because it was so special and also a bit pricey. But yesterday I wanted to check if it still works and I have way to many dev kits and arduinos and stuff, so I just tried it. I looked up the datasheet and checked the pinout - I was so lucky that the arduino pro mini is an excellent candidate for this display, since the power supply pins happened to be on the same position and the rest was IO. Unfortunately I soldered it the other way around. The black, marked with G pin was not pin 7 GND but pin 1. I was able to cross over the supply pins and rotate the data pins for the display. Luckily the highest databits where set in a way that I was able to access the alphabet characters. I have to de- and re-solder it to get numbers too. It's a really smart little device, you have 2 address pins and 7 data pins for ascii code and one write WR pin.

There are at least two versions as it seems, one Siemems DL-1414T and a HP DL-1414.

As always, if anyone knows a better way for getting bits out of bytes to set pins (in an arduino scope) please tell me, this is what I did:

void set_char(byte digit, byte ascii)
{
  digitalWrite(LED_WR, HIGH);  
  digitalWrite(LED_A0, 1 & digit);
  digitalWrite(LED_A1, 1 & digit>>1);
  digitalWrite(LED_D0, 1 & ascii>>0);
  digitalWrite(LED_D1, 1 & ascii>>1);
  digitalWrite(LED_D2, 1 & ascii>>2);
  digitalWrite(LED_D3, 1 & ascii>>3);
  digitalWrite(LED_D4, 1 & ascii>>4);
  digitalWrite(LED_D5, 1 & ascii>>5);
  digitalWrite(LED_D6, 1 & ascii>>6);
  digitalWrite(LED_WR, LOW);
  delay(5);  
  digitalWrite(LED_WR, HIGH);
  delay(5);
}
https://cdn.hackaday.io/images/5406051475503730142.png

LED displays on Arduinos - a collection | Arduino Trinket - dual display board

2015-09-21 10:34:16

so I started this wiring mess, and I think for doing this I should reassign the pins first for better connecting. So whenever I remember to print this, I'll update and upload the designs. Just looking at it, I could remove the A6 and A7 pins out of that messy area. This setup would leave me with two analog inputs and a serial connection. I also ordered some IC sockets for the displays, 12pins where hard (read: not) to find, 24 where to special for my taste - so I ordered 8pin IC sockets that are chainable.

After some awesome iterations and mouse clicks of other persons (see comments for credit) - we got this result:

https://cdn.hackaday.io/images/1792131475502622602.png
https://cdn.hackaday.io/images/4129031475503097299.png
https://cdn.hackaday.io/images/3417111475503037053.png
https://cdn.hackaday.io/images/9115681475503017213.png

LED displays on Arduinos - a collection | Arduino Trinket - dual display board

2015-09-21 10:34:16

so I started this wiring mess, and I think for doing this I should reassign the pins first for better connecting. So whenever I remember to print this, I'll update and upload the designs. Just looking at it, I could remove the A6 and A7 pins out of that messy area. This setup would leave me with two analog inputs and a serial connection. I also ordered some IC sockets for the displays, 12pins where hard (read: not) to find, 24 where to special for my taste - so I ordered 8pin IC sockets that are chainable.

After some awesome iterations and mouse clicks of other persons (see comments for credit) - we got this result:

https://cdn.hackaday.io/images/1792131475502622602.png
https://cdn.hackaday.io/images/4129031475503097299.png
https://cdn.hackaday.io/images/3417111475503037053.png
https://cdn.hackaday.io/images/9115681475503017213.png

LED displays on Arduinos - a collection | Arduino Pro Trinket - bubble display

2015-09-17 11:32:25

With 4 of HP QDSP-6064 bubble displays in a drawer I felt ready to do something with them and the "Clocks for Social Good" - call on hackaday.com finally got me going. It took me 2 hours to design this little shield, nice practice! It also costs me only about 5USD, since I have all the other parts around. Sorry for mixing 1206 and 0603 parts, but that was what I had - feel free to change it, if you want to use this.

Since this project was created around the whole "Ahmed takes a clock apart, brings it to school and get's arrested" - incident, there's the obligatory hashtag for that period of time on it.


Revision Notes

[UPDATE - 1] And of course, I forgot to connect the IIC lines from the LM75 to the arduino. It is now fixed in the github files.

[UPDATE - 2] you didn't actually think I took the right pins on the pro trinket for that, did you? it's now connected to A4 and A5, not A6 and A7 - sorry for that.


https://cdn.hackaday.io/images/7551951475502128886.png
https://cdn.hackaday.io/images/6636731475501729038.png
https://cdn.hackaday.io/images/7532071475501763001.png

LED displays on Arduinos - a collection | Arduino Pro Trinket - bubble display

2015-09-17 11:32:25

With 4 of HP QDSP-6064 bubble displays in a drawer I felt ready to do something with them and the "Clocks for Social Good" - call on hackaday.com finally got me going. It took me 2 hours to design this little shield, nice practice! It also costs me only about 5USD, since I have all the other parts around. Sorry for mixing 1206 and 0603 parts, but that was what I had - feel free to change it, if you want to use this.

Since this project was created around the whole "Ahmed takes a clock apart, brings it to school and get's arrested" - incident, there's the obligatory hashtag for that period of time on it.


Revision Notes

[UPDATE - 1] And of course, I forgot to connect the IIC lines from the LM75 to the arduino. It is now fixed in the github files.

[UPDATE - 2] you didn't actually think I took the right pins on the pro trinket for that, did you? it's now connected to A4 and A5, not A6 and A7 - sorry for that.


https://cdn.hackaday.io/images/7551951475502128886.png
https://cdn.hackaday.io/images/6636731475501729038.png
https://cdn.hackaday.io/images/7532071475501763001.png