• Arduino Pro Mini - 8x8 DIY matrix - Version 2

    davedarko10/14/2016 at 09:44 2 comments

    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);
      }
    }
    

  • Arduino Pro Mini - 8x8 DIY matrix

    davedarko10/04/2016 at 15:07 9 comments

    [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...

  • arduino pro mini shield for 2 5x7 LED displays

    davedarko10/03/2016 at 08:37 0 comments

    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.

  • display stuff

    davedarko10/07/2015 at 13:09 0 comments

    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

  • first version boards are in

    davedarko10/01/2015 at 22:56 0 comments

    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();
    
      }
    
    }
    

  • Arduino Pro Mini - DL1414

    davedarko09/26/2015 at 11:10 3 comments

    [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);
    }
    

  • Arduino Trinket - dual display board

    davedarko09/21/2015 at 08:34 12 comments

    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:

  • Arduino Pro Trinket - bubble display

    davedarko09/17/2015 at 09:32 0 comments

    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.