Lichtkrant Surtronic FDS-132

Hardware die niet past in bovenstaande onderwerpen
Berichten: 33
Geregistreerd: 22 Dec 2012, 19:07

Lichtkrant Surtronic FDS-132

Berichtdoor muffin » 29 Mrt 2013, 22:20

Enkele dagen geleden bij Baco.nl (http://www.baco-army-goods.nl/component ... ds132.html) enkele van die lichtkrant modules gekocht, slechts 7,5eur per stuk, de prijs dus van twee 5x7 dotmatrix modules. En er zitten er 3 rijen van 18 modules op, compleet met drivers, shiftregisters ... Wat wil je nog meer? Juist ja, dat spul aan de praat krijgen en daarvoor had ik graag deze topic gestart. Qua hardware aanpassingen ben ik al een eind op weg maar software blijkt nog niet goed te lukken.
Ik zou er graag een lichtkrant, klok met uur en datum of zo willen van maken, test- en leer object dus. Zijn er hier nog geïnteresseerden die zoiets gekocht hebben of van plan zijn te kopen?

Advertisement

Gebruikers-avatar
Berichten: 700
Geregistreerd: 05 Mrt 2012, 21:56
Woonplaats: Appingedam

Re: Lichtkrant Surtronic FDS-132

Berichtdoor pjh » 30 Mrt 2013, 01:15

Er is een vergelijkbaar bord met 10 x 6 van die 8x8 LED matrixen. Hierover is een topic geweest op circuits online. (http://www.circuitsonline.net/forum/view/111430)
Je gaat die borden niet zomaar op een arduino aansluiten.
De aansturing is geheim. De firma die ze maakt zegt het niet eens tegen de mensen die de borden moeten installeren.
Ze zijn dus eigenlijk bedoeld voor de onderdelen. Lees het daar zelf. :D
Maar er zijn er die er leven in hebben gekregen. Hoor graag van je als je het voor elkaar krijgt. ;)

Berichten: 33
Geregistreerd: 22 Dec 2012, 19:07

Re: Lichtkrant Surtronic FDS-132

Berichtdoor muffin » 30 Mrt 2013, 18:11

He Paul,
Na heel wat gezoek en gezweet (!) heb ik er leven in gekregen. Qua hardware is het eigenlijk vrij simpel: je moet er eerst die cpld (dat vierkante IC) afbakken en ook U1.
Dan kan je data, clock, strobe en resred (OE) aankoppelen. Tot zover de kolommen. Voor de rijen zit er nog een IC op (U4) die 7 lijnen naar 3 omzet (a,b,en c).
Ik had daar ook een demo programma gevonden van iemand die dat gepost had, maar daar geraak ik (door onkunde) niet goed wijs uit. :oops:
Even hieronder de code (zoals ik die kreeg), die normaal 33 keer de letter P zou moeten weergeven:
Code: Alles selecteren
#include <SPI.h>
 
//De aangesloten pinnen
const int resred    = 2;//OE
const int clock     = 3;//CP
const int dr        = 4;//D
const int str       = 5;//STROBE
 
//Pins voor rows(74HC238)
 
const int a         = 8;
const int b         = 9;
const int c         = 10;
 
//Array om in te laden(34 shiftregisters * 7 lijnen)
char dispArr[34][7] = {{B00001111,
                        B00010001,
                        B00010001,
                        B00001111,
                        B00000001,
                        B00000001,
                        B00000001}};
 
int previousMillis = 0;//rommel
long interval = 35;
int i;
 
void setup()
{
  pinMode(clock, OUTPUT);
  pinMode(dr , OUTPUT);
  pinMode(resred, OUTPUT);
  pinMode(str, OUTPUT);
  //shiftOut(dr, clock, LSBFIRST, B00111100);
  SPI.begin();
}
 
void setDisp(int disp){
  int i;
  for(i = 33;i>-1;i--){
    //shiftOut(dr, clock, LSBFIRST, disp);
    SPI.transfer(dispArr[i][disp]);//zetop 0 om alles letter p te maken
  }
}
 
void initIO(){
  pinMode(a, OUTPUT);
  pinMode(b, OUTPUT);
  pinMode(c, OUTPUT);
  digitalWrite(resred,HIGH);
  digitalWrite(str,HIGH);
}
 
void SetCol(int ColData)
{
    digitalWrite(a,ColData & 1);
    digitalWrite(b,ColData & 2);
    digitalWrite(c,ColData & 4);
}
 
void loop(){
  initIO();
  setDisp(B11111111);
  int p;
  int i = 0;
  while(1){
    //Scan
    for(p = 0;p<7;p++){
      digitalWrite(resred,LOW); //Alle leds uit voor betere verversing
      SetCol(p);    //Rij 0 t/m 7
        setDisp(p); //Display Rij p
      digitalWrite(resred,HIGH);
      delayMicroseconds(2600); //Gaf beste verversing bij mij
    }
  }
}


Hieronder nog enkele foto's:

[img]
https://www.dropbox.com/s/pbe8yxf2s4w8lvn/display.jpg
https://www.dropbox.com/s/ap25wgkehcilju7/display-2.jpg
[/img]
Hoe zou jij dit aanpakken?

Gebruikers-avatar
Berichten: 700
Geregistreerd: 05 Mrt 2012, 21:56
Woonplaats: Appingedam

Re: Lichtkrant Surtronic FDS-132

Berichtdoor pjh » 30 Mrt 2013, 22:56

Ik ga ook maar eens zo een bordje bestellen.
Ben toevallig vandaag met een van de grote borden bezig geweest.
Daar was een condensator afgebroken, waardoor ik hem gebruikt heb als test.
Test om te kijken of ik een 8x8 los krijg.
Lukte prima.
Daarbij ook de TPIC6B595 IC vrij eenvoudig losgekregen.
Om te kijken of hij het nog deed, heb ik hem op een break-out boardje gezet.
Werkte prima. Zijn fijne IC's. Sparkfun heeft ze ook (https://www.sparkfun.com/products/734)
Hier ultra kort filmpje van test, waarbij ik maar twee rode LEDjes heb aangesloen. : http://youtu.be/jr2_R0un6fM
Het zijn dus sinkers, geen sourcers.
Maar jij hebt een ander bord. Ga ze bestellen...
Afbeelding

Berichten: 33
Geregistreerd: 22 Dec 2012, 19:07

Re: Lichtkrant Surtronic FDS-132

Berichtdoor muffin » 03 Apr 2013, 19:56

Mijn FDS132 display werkt! kan er probleemloos teksten op zetten, aansturing met SPI op zowel een UNO als een MEGA 2560 :D :D :D
Nu project ontwikkelen! :roll: .................. :idea: ...

Gebruikers-avatar
Berichten: 270
Geregistreerd: 30 Dec 2012, 11:42

Re: Lichtkrant Surtronic FDS-132

Berichtdoor Rudi » 03 Apr 2013, 20:15

Prachtig. Ik lees en zie dat men de display met de FDS-184 nu ook correct kan aansturen, ik verwacht het mijne spoedig (pjh?).
Arduinows!
Why do computer programmers confuse Halloween with Christmas? Because Oct 31 = Dec 25
I got 01100011 problems but a bit ain't 00000001

Berichten: 33
Geregistreerd: 22 Dec 2012, 19:07

Re: Lichtkrant Surtronic FDS-132: de eerste resultaten

Berichtdoor muffin » 04 Apr 2013, 19:55

Hier de eerste resultaten: eerst de gebruikte code: Idee ontleend aan CircuitsOnline.nl, met dank aan al diegenen die me op weg geholpen hebben!
Code: Alles selecteren
[size=85][/size]
[color=#00BF40]/* NOODZAKELIJKE PINNEN TE VERBINDEN MET EEN ARDUINO UNO OF EEN MEGA: We maken gebruik van SPI, dus speciale pinnen!!!
1 = Clock (CLK) (Arduino pin uno 13 of mega 52 = SPI Clock)
2 = Data (DR) (Arduino pin uno 11 of mega 51 = SPI MOSI)
3 = Strobe (Arduino pin 10)
4 = Massa (Arduino GND pin)
5 = A (= ROW A) (Arduino pin 7)
6 = B (= ROW B) (Arduino pin 6)
7 = C (= ROW C) (Arduino pin 5)
8 = RESRED (OE) (Arduino pin 9)
*/

#include <delay.h>
#include <SPI.h>

const int strobe = 10;
const int resred = 9;
const int row_a  = 5;
const int row_b  = 6;
const int row_c  = 7;
 
unsigned char character_map[10][7] = {
    0x10,0x10,0x10,0x10,0x10,0x11,0x0E, // 'J' = Character map 0
    0x04,0x0A,0x11,0x11,0x1F,0x11,0x11, // 'A' = Character map 1
    0x0E,0x11,0x01,0x01,0x01,0x11,0x0E, // 'C' = Character map 2
    0x0E,0x11,0x11,0x11,0x11,0x09,0x16, // 'Q' = Character map 3
    0x11,0x11,0x11,0x11,0x11,0x11,0x0E, // 'U' = Character map 4
    0x1F,0x01,0x01,0x0F,0x01,0x01,0x1F, // 'E' = Character map 5
    0x0E,0x11,0x01,0x0E,0x10,0x11,0x0E, // 'S' = Character map 6
};
 
void zeroDisp() // alles wissen op display
{
  int i;
  for(i=0; i<34; i++)
  {
    SPI.transfer(0x00);
  }
}
 
void setDisp(int row) // te plaatsen text
{
  SPI.transfer(character_map[6][row]<<1);  // 'S'
  SPI.transfer(character_map[5][row]<<1);  // 'E'
  SPI.transfer(character_map[4][row]<<1);  // 'U'
  SPI.transfer(character_map[3][row]<<1);  // 'Q'
  SPI.transfer(character_map[2][row]<<1);  // 'C'
  SPI.transfer(character_map[1][row]<<1);  // 'A'
  SPI.transfer(character_map[0][row]<<1);  // 'J'
 
}
 
void setRow (int row)
{
  digitalWrite (row_a, row & 1);
  digitalWrite (row_b, row & 2);
  digitalWrite (row_c, row & 4);
}
 
void setup()
{
  pinMode (strobe, OUTPUT);
  pinMode (resred, OUTPUT);
  pinMode (row_c,  OUTPUT);
  pinMode (row_b,  OUTPUT);
  pinMode (row_a,  OUTPUT);
 
  digitalWrite (strobe, HIGH);
  digitalWrite (resred, HIGH);
 
  SPI.setBitOrder(MSBFIRST); // LSBFIRST geeft spiegelbeeld
  SPI.begin();
};
 
void loop()
{
  int p;
  int i = 0;
  while (1)
  {
    for (p=0; p<7; p++)
    {
      digitalWrite (resred, LOW);
      digitalWrite (strobe, LOW);
      setRow(p);
      zeroDisp();
      setDisp(p);
      digitalWrite (resred, HIGH);
      digitalWrite (strobe, HIGH);
      delayMicroseconds (1500); // hoe kleiner, hoe meer gedimd, normaal = 1500
    }
  }
}[/color]


En nu het resultaat:
Afbeelding https://www.dropbox.com/s/merxf9clx3l1nbc/HPIM3418.JPG
De letters zijn zelf geconfigureerd met het gratis programma Binhex, te downloaden op http://www.compsys1.com/workbench/Bench ... nhex2.html
Daarmee kan je gelijk welk karakter maken, waarvan de code dan ingevoerd wordt onder "unsigned char character_map[10][7] = {"
Zoals je ziet zijn de karakters allemaal gemaakt in een 5x7 matrix, maar wat me wel opvalt, is de vrij grote tussenafstand van 3 pixels. Mogelijks moet ik werken met een 7x7 matrix? Dat moet ik nog uitzoeken.
Het ware natuurlijk mooi moest er ergens een library bestaan waar we kunnen uit putten in de lijn van "dispprint (abcdefg...gewoon uw tekst dus) of de waarde van een variabele (tijd, temperatuur)

Gebruikers-avatar
Berichten: 700
Geregistreerd: 05 Mrt 2012, 21:56
Woonplaats: Appingedam

Re: Lichtkrant Surtronic FDS-132

Berichtdoor pjh » 04 Apr 2013, 21:37

Super. Heb 4 van die dingen besteld en gisteren is de eerste binnen gekomen. Snap niet waarom ze niet tegelijk komen....
Dank voor de code, scheelt weer een boel uitzoekerij.

Gebruikers-avatar
Berichten: 270
Geregistreerd: 30 Dec 2012, 11:42

Re: Lichtkrant Surtronic FDS-132

Berichtdoor Rudi » 05 Apr 2013, 11:25

Het is sterker dan mezelf, heb er ook enkele besteld :geek:
Arduinows!
Why do computer programmers confuse Halloween with Christmas? Because Oct 31 = Dec 25
I got 01100011 problems but a bit ain't 00000001

Berichten: 33
Geregistreerd: 22 Dec 2012, 19:07

Re: Lichtkrant Surtronic FDS-132

Berichtdoor muffin » 05 Apr 2013, 19:19

Voor de prijs hoef je het zeker niet te laten :-) Dit project wordt een knaller!

Volgende

Terug naar Overige hardware

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 7 gasten