Arduino, I2C och Ledmatrix
Arduino, I2C och Ledmatrix
Till alla Er som är bättre på detta än vad jag är.
Jag har tänkt att bygga en "STOR" ledmatrix med 2 rader och 20 tecken per rad. Varje matrix kommer att bli ca 15*20 cm. Varje punkt kommer att bestå av 6 ljusstarka led.
Det jag vill ha är en Atmega-processor per kort som ska ta emot i2c koder, eller på annat sätt, från en Arduino och sedan visa det tecken som kommer via bussen på en egen ledmatrix med 5*7.
Varje kort ska ha sitt eget id så att jag kan uppdatera enbart ett sigment i displayen om jag vill.
Nu undrar jag om det är någon som har gjort något liknande och kan tänka sig att dela med sig av koder, schema med mera.
Jag har precis börjat leka med Arduino och har köpt på mig lite saker för att se om jag kan lyckas med detta lilla projekt.
Jag har tittat på en del exempel men de gör inte riktigt vad jag önskar så jag behöver lite hjälp för att komma igång.
Jag hoppas att det finns någon vänlig själ som kan tänka sig att ställa upp för en nybörjare.
Programmet i pc:n som sedan ska styra detta fixar jag själv då jag hanterar Visual Basic rätt så bra.
Jag har tänkt att bygga en "STOR" ledmatrix med 2 rader och 20 tecken per rad. Varje matrix kommer att bli ca 15*20 cm. Varje punkt kommer att bestå av 6 ljusstarka led.
Det jag vill ha är en Atmega-processor per kort som ska ta emot i2c koder, eller på annat sätt, från en Arduino och sedan visa det tecken som kommer via bussen på en egen ledmatrix med 5*7.
Varje kort ska ha sitt eget id så att jag kan uppdatera enbart ett sigment i displayen om jag vill.
Nu undrar jag om det är någon som har gjort något liknande och kan tänka sig att dela med sig av koder, schema med mera.
Jag har precis börjat leka med Arduino och har köpt på mig lite saker för att se om jag kan lyckas med detta lilla projekt.
Jag har tittat på en del exempel men de gör inte riktigt vad jag önskar så jag behöver lite hjälp för att komma igång.
Jag hoppas att det finns någon vänlig själ som kan tänka sig att ställa upp för en nybörjare.
Programmet i pc:n som sedan ska styra detta fixar jag själv då jag hanterar Visual Basic rätt så bra.
Senast redigerad av RadioDJ 30 juli 2013, 10:39:11, redigerad totalt 1 gång.
Re: Arduino, I2C och Ledmatrix
I2C är inte det första valet jag hade gjort.
Varför inte köra hårdvaruuarten direkt istället.
Du skulle kunna få koden likadan i alla atmega som driver ledmatriser. Addresseringen fungerar att den är beroende på vad den sitter.
ledmatris är 5*7=> 35 bitar ,behövs 5byte för varje segment.
Du kan t.ex. köra med uart break för återställa tillståndet för noderna, alla noder återsänder break till nästa nod.
Sedan skickar du x*5 bytes, varje nod tar emot de första 5st (skickar ej vidare) och vidaresänder resterande de tar emot, alternativ kan du sända en byte om du bara ska ha ascii på displayen och ha tabeller i arduinon.
Vad är det för arduino kort du ska köra?
För få ut tecknen så kan du använda usb anslutningen i den första arduinon.
Edit: Varje 5x7 behöver inte en arduino heller, en attiny2313 per nod hade räckt, vet ej om du kan programmera dessa med arduino programvaran, men ett c program borde inte vara helt omöjligt.
Edit2: dunkar du på några 74HC595 så kan varje nod driva några 5x7 matriser med multiplexing. Typ som bilden.
Varför inte köra hårdvaruuarten direkt istället.
Du skulle kunna få koden likadan i alla atmega som driver ledmatriser. Addresseringen fungerar att den är beroende på vad den sitter.
ledmatris är 5*7=> 35 bitar ,behövs 5byte för varje segment.
Du kan t.ex. köra med uart break för återställa tillståndet för noderna, alla noder återsänder break till nästa nod.
Sedan skickar du x*5 bytes, varje nod tar emot de första 5st (skickar ej vidare) och vidaresänder resterande de tar emot, alternativ kan du sända en byte om du bara ska ha ascii på displayen och ha tabeller i arduinon.
Vad är det för arduino kort du ska köra?
För få ut tecknen så kan du använda usb anslutningen i den första arduinon.
Edit: Varje 5x7 behöver inte en arduino heller, en attiny2313 per nod hade räckt, vet ej om du kan programmera dessa med arduino programvaran, men ett c program borde inte vara helt omöjligt.
Edit2: dunkar du på några 74HC595 så kan varje nod driva några 5x7 matriser med multiplexing. Typ som bilden.
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Re: Arduino, I2C och Ledmatrix
Nu är vi på gång.
Kretsen som ska sitta på varje displaymodul behöver inte vara en 328, det går bra med vilken atmega som helst. Jag har tagit hem en 328 på prov bara.
Det med att använda uarten är ett bra förslag. Dock behöver jag ha kodexempel på detta då jag aldrig har provat med detta. Har du det??
Det är ju utmärkt att det är samma kod i alla matrixerna för då kan de sättas ihop displayen precis som man vill.
Jag kommer troligen att använda en Arduino Uno med RS-485 gränssnitt då det kommer att vara långt till displayen. Hade det gått att adressera flera Arduino med olika id, så skulle jag kunna använda flera stora displayer på olika ställen och visa olika information på de olika displayerna.
Displayerna ska bara visa ascii-tecken. Blir det enklare då??
Kretsen som ska sitta på varje displaymodul behöver inte vara en 328, det går bra med vilken atmega som helst. Jag har tagit hem en 328 på prov bara.
Det med att använda uarten är ett bra förslag. Dock behöver jag ha kodexempel på detta då jag aldrig har provat med detta. Har du det??
Det är ju utmärkt att det är samma kod i alla matrixerna för då kan de sättas ihop displayen precis som man vill.
Jag kommer troligen att använda en Arduino Uno med RS-485 gränssnitt då det kommer att vara långt till displayen. Hade det gått att adressera flera Arduino med olika id, så skulle jag kunna använda flera stora displayer på olika ställen och visa olika information på de olika displayerna.
Displayerna ska bara visa ascii-tecken. Blir det enklare då??
Re: Arduino, I2C och Ledmatrix
Ascii tecken blir mindre data i alla fall.
Använder inte arduino själv, programmerar mest i c och lite assembly ibland.
Har kört addresserbar uart bus på en attiny10 med mjukvaruuart på 1200bps. Då var det förvisso bara 1-led på mcu, men principen var detsamma.
RS485 gör ingen skillnad här, processorn ser uart i sin ända i alla fall. Dessutom är det enkelriktat, blir lite klurigare om du har dubbelriktat kommunikation.
Det man skulle kunna göra är att alla noder klarar två olika protokoll. Ena är addresserbart och det andra är släppa data igenom.
Får de ett addresserbart så behandlar det första tecknet själv och sänder alla andra tecken genom uart:en till nästa nod.
T.ex. så skulle protokollet kunna vara väldigt simpelt, du kör ascii så vissa tecken kommer aldrig skickas i vanliga fall. STX nodeid + text ETX. Alternativt att du sänder tecken och avslutar med newline eller linknande. NodeID kan skickas som ascii också.
Exempel, noden här är 42:
STX och ETX är asciisymbol 0x02 och 0x03. När ett helt paket är mottaget så verifierar man nodid och om det stämmer så skickar den break + alla tecken förutom det första, det första behandlar den själv.
Varje nod kan t.ex. ha en dip switch som ställer in ID.
Edit: Hur många 5x7 matriser tänkte du dig på varje nod? Med ULN2003 + 74HC595 går det driva rätt så många...
Använder inte arduino själv, programmerar mest i c och lite assembly ibland.
Har kört addresserbar uart bus på en attiny10 med mjukvaruuart på 1200bps. Då var det förvisso bara 1-led på mcu, men principen var detsamma.
RS485 gör ingen skillnad här, processorn ser uart i sin ända i alla fall. Dessutom är det enkelriktat, blir lite klurigare om du har dubbelriktat kommunikation.
Det man skulle kunna göra är att alla noder klarar två olika protokoll. Ena är addresserbart och det andra är släppa data igenom.
Får de ett addresserbart så behandlar det första tecknet själv och sänder alla andra tecken genom uart:en till nästa nod.
T.ex. så skulle protokollet kunna vara väldigt simpelt, du kör ascii så vissa tecken kommer aldrig skickas i vanliga fall. STX nodeid + text ETX. Alternativt att du sänder tecken och avslutar med newline eller linknande. NodeID kan skickas som ascii också.
Exempel, noden här är 42:
Kod: Markera allt
42:En textsträng\n
Varje nod kan t.ex. ha en dip switch som ställer in ID.
Edit: Hur många 5x7 matriser tänkte du dig på varje nod? Med ULN2003 + 74HC595 går det driva rätt så många...
Re: Arduino, I2C och Ledmatrix
Det är tänkt 2*20 tecken (matrixer) på vare plats.
Varje matrix blir ett separat kort med tillhörande elektronik.
Trevligt schema, måste dock hänga på någon extra transistor då det kommer att gå en del ström i leden.
Kommer du på mer så berätta det gärna.
Kodexempel finns väl på sidan som schemat kom från?
Varje matrix blir ett separat kort med tillhörande elektronik.
Trevligt schema, måste dock hänga på någon extra transistor då det kommer att gå en del ström i leden.
Kommer du på mer så berätta det gärna.
Kodexempel finns väl på sidan som schemat kom från?
Re: Arduino, I2C och Ledmatrix
fler ULN2003 så löser det sig...
74HC595 driver bara en led på varje i/o, så det är lungt.
74HC595 driver bara en led på varje i/o, så det är lungt.
Re: Arduino, I2C och Ledmatrix
> ledmatrix med 2 rader och 20 tecken per rad. Varje matrix kommer att bli ca 15*20 cm.
Talar vi alltså om en LED-matris med ca 7,5 x 1.0 cm för varje tecken !?
Det blir väldigt "smala" tecken. Något måste vara galet, kan du beskriva
hur det ska se ut lite bättre?
Eller är det kanske varje enskilt tecken (5x7, 8x8 eller vad ska det vara?)
som är tänkta att vara 15x20 cm stora?
Talar vi alltså om en LED-matris med ca 7,5 x 1.0 cm för varje tecken !?
Det blir väldigt "smala" tecken. Något måste vara galet, kan du beskriva
hur det ska se ut lite bättre?
Eller är det kanske varje enskilt tecken (5x7, 8x8 eller vad ska det vara?)
som är tänkta att vara 15x20 cm stora?
Re: Arduino, I2C och Ledmatrix
Nu jobbar jag med just LED-matris skärmar bestående av moduler, jag har även en hög med moduler hemma som ska lagas.
Men approachen är ganska fel i mitt tycke.
De moduler vi använder har kretsar av samma typ som t.ex. TLC5921. Det används en 1-vägs SPI kommunikation och fler kretsar kan kaskadkopplas. Det behövs data, klocka och en latch-signal, sedan är saken biff. Med ett PWM-signal kan man styra intensiteten.
Men om det måste vara en matris finns det kretsar hos Maxim som kan lösa detta, t.ex. MAX6952.
Men approachen är ganska fel i mitt tycke.
De moduler vi använder har kretsar av samma typ som t.ex. TLC5921. Det används en 1-vägs SPI kommunikation och fler kretsar kan kaskadkopplas. Det behövs data, klocka och en latch-signal, sedan är saken biff. Med ett PWM-signal kan man styra intensiteten.
Men om det måste vara en matris finns det kretsar hos Maxim som kan lösa detta, t.ex. MAX6952.
Re: Arduino, I2C och Ledmatrix
Varje tecken (5*7) kommer att bli ca 15*20 cm.
Det innebär att en rad på 20 tecken (matrixer) blir ca 20cm hög och 3 meter lång.
Jag har kollat lite på Maxim-kretsen men blev inte riktigt nöjd med den.
Får kolla runt lite på TLC5921 också.
Fungerar det bra annars med 74HC595?
Hur många 74HC595 kan man ha i serie utan att det flimrar?
Klarar man 40 stycken?
Icecap: Hur stor är varje modul som du använder?
Det innebär att en rad på 20 tecken (matrixer) blir ca 20cm hög och 3 meter lång.
Jag har kollat lite på Maxim-kretsen men blev inte riktigt nöjd med den.
Får kolla runt lite på TLC5921 också.
Fungerar det bra annars med 74HC595?
Hur många 74HC595 kan man ha i serie utan att det flimrar?
Klarar man 40 stycken?
Icecap: Hur stor är varje modul som du använder?
Senast redigerad av RadioDJ 30 juli 2013, 17:24:19, redigerad totalt 1 gång.
Re: Arduino, I2C och Ledmatrix
RadioDJ: finns i olika pitch, skärmen vi hyrde till ESC i Malmö var P10 (10mm punkt till punkt), samma ska vi till Arvika o sätta upp imorgon.
Den "normala" stora skärmen är P16 (torget i Göteborg nyss) och de moduler jag lekar med är P25.
De finns i grunden från 7,62mm (RGB) till 50mm, jag är lite osäker på vilken storlek jag har på dom hemma men de är ganska stora, det är ett antal olika så det varierar lite. Jag vet om att jag har ett antal 8*4 monokroma med 35mm pitch och jag har numera drivkretsar för reparation av dom. Varje pixel består av 5 st LED och de har gummipackning osv för att montera dom på en skiva och få utomhus skylt.
Med två sådana moduler på varandra får du 8 pixlar och 280mm, sedan behöver du totalt 22 moduler för att få 3m. Med 20 st blir det ju "bara" 2,8m. Modulerna är sådana som sitter på dessa "billiga" infartsskyltar som bara har text.
Men jag har inte nog till en 3m lång skylt - men det kan kanske ordnas på annat sätt.
74HC595 fungerar i grunden som dessa LED-drivkretsar - fast utan kraften att driva LED'na med lagom med ström.
Den "normala" stora skärmen är P16 (torget i Göteborg nyss) och de moduler jag lekar med är P25.
De finns i grunden från 7,62mm (RGB) till 50mm, jag är lite osäker på vilken storlek jag har på dom hemma men de är ganska stora, det är ett antal olika så det varierar lite. Jag vet om att jag har ett antal 8*4 monokroma med 35mm pitch och jag har numera drivkretsar för reparation av dom. Varje pixel består av 5 st LED och de har gummipackning osv för att montera dom på en skiva och få utomhus skylt.
Med två sådana moduler på varandra får du 8 pixlar och 280mm, sedan behöver du totalt 22 moduler för att få 3m. Med 20 st blir det ju "bara" 2,8m. Modulerna är sådana som sitter på dessa "billiga" infartsskyltar som bara har text.
Men jag har inte nog till en 3m lång skylt - men det kan kanske ordnas på annat sätt.
74HC595 fungerar i grunden som dessa LED-drivkretsar - fast utan kraften att driva LED'na med lagom med ström.
Re: Arduino, I2C och Ledmatrix
Icecap: Vad är det för pris på dessa moduler?
För min del räcker det med 2*20 tecken.
För min del räcker det med 2*20 tecken.
Re: Arduino, I2C och Ledmatrix
Micke_s:
Din variant 1 med en attiny på varje kort. Du har inte något exempel på kod och schema på detta?
Jag skulle vilja ha en enkel kommunikation med få kablar emellan och med all styrning på varje kort. Kanske med max 6 trådar inklusive spänningsmatningen.
Den med 74595 tar betydligt fler trådar och vad händer med min matrix som sitter 3 meter bort.
Din variant 1 med en attiny på varje kort. Du har inte något exempel på kod och schema på detta?
Jag skulle vilja ha en enkel kommunikation med få kablar emellan och med all styrning på varje kort. Kanske med max 6 trådar inklusive spänningsmatningen.
Den med 74595 tar betydligt fler trådar och vad händer med min matrix som sitter 3 meter bort.
Re: Arduino, I2C och Ledmatrix
Ett utkast på schema, kombinerade ihop rs485 och addressswitch i samma.
lite flöde:
* Ställa in pinnar som är ansluten till DIL-switchen, som ingång med pull-up.
* Läsa av addressen,
* Ställa om alla pinnar till 74HC595 till utgång.
* Ställa in andra pinnar.
* Slå på USI modulen, funkar som spi i princip
* Konfigurera uarten.
* Vänta på tecken från uarten
*....osv...
För göra det enkelt så hade jag kört varje rad på en enskild address. Enkelt att bygga 1-32 radig display. Vilka som hör ihop hanterar du i pc appen.
RS485 klarar 32 receiver i standarden tror jag.
Interfacet till pc:n blir rätt så enkelt http://www.ebay.com/itm/USB-to-RS485-48 ... 4610b4bffb
Finns en hel bunt på ebay.com
Sedan kan nog ESD skydd mm vara bra. Har du långa kablar fram till displayer:na så kanske man vill sätta en 7805 på noderna och mata med 12v eller så.
Mellan noderna så kan du köra 3pin Dupont kabel, ex http://www.ebay.com/itm/10pcs-3pin-10cm ... 3a81f60b29
kablarna fram till noderna kan du köra antingen ethernetkabel(är twistad) eller om det inte är för långt, vanlig 4polig telefonkabel
Edit: för bara köra en 5x7 på varje kort så ta bara en 74HC595.
Edit2: Räcker inte flash:en till så finns attiny4313, du behöver inte implementera hela ascii tabellen heller, implementerar man hela så tar det 1k flash eller så(50% på attiny2313).
Edit3: man kanske vill ha strömbegränsningsmotstånd mellan 74HC595 och displayen också.
lite flöde:
* Ställa in pinnar som är ansluten till DIL-switchen, som ingång med pull-up.
* Läsa av addressen,
* Ställa om alla pinnar till 74HC595 till utgång.
* Ställa in andra pinnar.
* Slå på USI modulen, funkar som spi i princip
* Konfigurera uarten.
* Vänta på tecken från uarten
*....osv...
För göra det enkelt så hade jag kört varje rad på en enskild address. Enkelt att bygga 1-32 radig display. Vilka som hör ihop hanterar du i pc appen.
RS485 klarar 32 receiver i standarden tror jag.
Interfacet till pc:n blir rätt så enkelt http://www.ebay.com/itm/USB-to-RS485-48 ... 4610b4bffb
Finns en hel bunt på ebay.com
Sedan kan nog ESD skydd mm vara bra. Har du långa kablar fram till displayer:na så kanske man vill sätta en 7805 på noderna och mata med 12v eller så.
Mellan noderna så kan du köra 3pin Dupont kabel, ex http://www.ebay.com/itm/10pcs-3pin-10cm ... 3a81f60b29
kablarna fram till noderna kan du köra antingen ethernetkabel(är twistad) eller om det inte är för långt, vanlig 4polig telefonkabel
Edit: för bara köra en 5x7 på varje kort så ta bara en 74HC595.
Edit2: Räcker inte flash:en till så finns attiny4313, du behöver inte implementera hela ascii tabellen heller, implementerar man hela så tar det 1k flash eller så(50% på attiny2313).
Edit3: man kanske vill ha strömbegränsningsmotstånd mellan 74HC595 och displayen också.
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Re: Arduino, I2C och Ledmatrix
Någon kod har jag ej, tar mycket längre tid att skriva än kasta ihop ett schema. En anna fördel med dessa komponenter är att du kan göra hela kortet hålmonterat om du vill.
Kör du bara en 5x7 så går det driva den från attiny2313 genom serieresistorer direkt (max 20mA per led). Då blir det attiny2313+uln2003 på varje kort + eventuellt 7805.
Kör du bara en 5x7 så går det driva den från attiny2313 genom serieresistorer direkt (max 20mA per led). Då blir det attiny2313+uln2003 på varje kort + eventuellt 7805.