Hilfe bei der Programmierung

Hi,

ich bin leider nicht das Programmier Genie und komme mit der Sprache die der Arduino spricht nicht ganz klar.

Ich habe aus dem Playground die 8x8 Led Martix mit direkter ansteuerung nach gelötet und das kurze Script auf den Arduino geladen, hat alles wunder bar funktioniert. :sunglasses:

Nun möchte ich aber gerne Muster und/oder einfache Grafiken darstellen und da steh’ ich auf dem Schlauch.

könnte mir jemand helfen wie das zu Programieren ist?

Das wäre echt klasse von euch.

Gruß Andreas

1) Du kannst mit sogenannten Pattern arbeiten.

2) Du kannst die Helligkeitswerte der Leds mit speziellen Routinen innerhalb eines Arrays verändern.

Sind die Leds ein, zwei oder dreifarbig ?

Benutzt Du spezielle Bauteile wie den TLC5940 oder ähnlich ?

Welchen Arduino benutzt Du ?

Das hier ist gemeint, die Leute denen geholfen werden soll, machen es immer möglichst schwer ihnen zu helfen, geben nie Links oder sonstwas an, daran hab ich mich mittlerweile hier gewöhnt.

http://www.arduino.cc/playground/Main/DirectDriveLEDMatrix

@fini: Du kannst doch einfach den Code der in #define variable { \ erzeugt wird und deine eigene Grafik machen.

define E { \

{0, 1, 1, 1, 1, 1, 1, 0}, \ {0, 1, 0, 0, 0, 0, 0, 0}, \ {0, 1, 0, 0, 0, 0, 0, 0}, \ {0, 1, 1, 1, 1, 1, 1, 0}, \ {0, 1, 0, 0, 0, 0, 0, 0}, \ {0, 1, 0, 0, 0, 0, 0, 0}, \ {0, 1, 0, 0, 0, 0, 0, 0}, \ {0, 1, 1, 1, 1, 1, 1, 0} \ }

Überall wo eine 1 steht ist die Led an, wo eine Null steht aus

Wenn es ein Arduino Mega oder Mega2560 ist hätte man sogar genügend PWM-Kanäle um für jede einzelne Led die Helligkeit steuern zu können.

define E { \

{0, 123, 1, 121, 154, 111, 165, 0}, \ {0, 1, 0, 0, 0, 0, 0, 0}, \ {0, 1, 80, 0, 0, 90, 0, 0}, \ {0, 1, 1, 1, 1, 1, 1, 0}, \ {0, 1, 0, 0, 30, 0, 0, 0}, \ {0, 1, 50, 0, 0, 50, 60, 60}, \ {0, 1, 30, 40, 50, 0, 0, 0}, \ {0, 1, 1, 1, 156, 1, 1, 0} \ }

Hi,

sorry das ich den Link vergessen habe :-[

Das habe ich schon mit den Buchstaben A-Z gemacht Lauftexte sind micht das problem. Die Buchstaben Scrolen dann von rechts nach lich durch die 8x8 matrix und das ist das problem was ich hab. Das scrolen von rechts nach links. Wenn ich jetzt, hier mal nur in 4x4 dargestellt, schreibe

1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 1 0 0 und so weiter 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Dann laufen diese von rechts nach links durch, müssten aber nach einander so geschaltet werden und da weis ich nicht wich ich das Programieren soll. :-/

Gruß Andreas

PS habe einen Arduino Duemilanove Atmega168 100% Clone Atmega 168

Stichwort: Viewport http://de.wikipedia.org/wiki/Viewport

Da Du einen Atmega168 hast würde ich Dir als Expansion deiner Idee den TLC5940 empfehlen: http://www.mercateo.com/p/108A-422(2d)283/16_Channel_LED_Treiber_TLC5940NTG4_Herst_Teile_Nr_TLC5940NTG4.html Dann kannst Du auch die Helligkeit der einzelnen Leds beeinflussen !

Hi,

ich würde gerne verstehen wie ich nun genau diese LED-Matrix ansteuern kann.

Alles weitere kann später mal dazu kommen.

Gruß Andreas

Das ist ja eben das Problem.

Was du probierst ist ein “Proof of Concept” - es geht, man macht es aber nicht. Darum auch die explizite Warnung auf der Seite, man könne seinen Arduino bzw die Matrix beschädigen

Normal steuert man Matrizen immer mit externen Bausteinen an.

Das mit dem Viewport ist folgendermassen.

Dies ist das was Du darstellen willst, als Beispiel.

000000000000000000000000000000000000000000 011001100000001100000000000000000000000000 011001100000001100000000000000000000000000 011111100000001100000000000000000000000000 011111100000001100000000000000000000000000 011001100000001100000000000000000000000000 011001100000001100000000000000000000000000 000000000000000000000000000000000000000000

Es ist aber grösser als das Display selber. Du kannst ja nur 8X8 Punkte auf der Matrix darstellen. Das was Du davon zur Zeit darstellst ist der Viewport. In diesem Fall ein grosses H.

000000000000000000000000000000000000000000 011001100000001100000000000000000000000000 011001100000001100000000000000000000000000 011111100000001100000000000000000000000000 011111100000001100000000000000000000000000 011001100000001100000000000000000000000000 011001100000001100000000000000000000000000 000000000000000000000000000000000000000000

Wenn Du jetzt Schritt für Schritt den Viewport nach rechts verschiebst erhält Du eine Laufschrift nach links.

00000000000*0000000000000000000000000000000 011001100000001100000000000000000000000000 011001100000001100000000000000000000000000 011111100000001100000000000000000000000000 011111100000001100000000000000000000000000 011001100000001100000000000000000000000000 011001100000001100000000000000000000000000 0000000000000000000*00000000000000000000000

In diesem Beispiel währe der Viewport elf mal um jeweils eine Spalte weiterbewegt worden. Was auf der Matrix wie ein linkscrollender Text aussieht.

Ok, also brauch ich so einen Baustein :-/

Dann werde ich mir den mal besorgen.

Dann hab ich aber gleich wieder ne frage wie muss ich jetzt die Matrix mit dem Baustein und dem Ardunio verbinden? Gibt es da nen Howto?

Gruß Andreas

Versuchs mal damit: http://www.arduino.cc/playground/Learning/TLC5940

Und einfach mal die Suchmaschine starten und nach TLC5940 suchen. Auch die Forumsuche liefert dir eine ganze Menge Lesestoff :)

Im Endeffekt stellen die Leds in diesem Bild schon eine Zeile der Matrix dar. In deinem Fall währen es die Channels 0 - 7.

http://students.washington.edu/acleone/codes/tlc5940arduino/img/breadboard-arduino-tlc5940_close.png

Brauchst also nur noch eine Lösung um zwischen verschiedenen derartigen Zeilen hin und her zuschalten ! Da Du immer nur die Leds einer Zeile zur selben Zeit leuchten lassen kannst !

Hier findest Du eine Lösung mit 74HC595 Shiftregister IC'S. Auf Seite 93. Wird sehr ausführlich erklärt.

Mit dem TLC5940 funktioniert die Geschichte auf ähnlicher Weise.

ASK Manual Rev4: http://www.earthshineelectronics.com/files/ASKManualRev4.pdf (Rightclick, Save As)

ASK Manual Rev4 Sketches: http://www.earthshineelectronics.com/files/EDASKCode.zip

Wie kommt bei der Schaltung http://students.washington.edu/acleone/codes/tlc5940arduino/img/breadboard-arduino-tlc5940.png eigentlich der Wert I=39,06 zustande ?

eigentlich der Wert I=39,06 zustande ?

Laut Datenblatt ist er 31.5, aber vielleicht benutzen die einen anderen Chip.

V(IREF) Imax = --------- * 31.5 R(IREF)

where: V(IREF) = 1.24 V R(IREF) = User selected external resistor.

1) Wenn ich das richtig verstehe kann ich den Widerstand in der Schaltung bei 2kOhm belassen egal ob ich 16 oder 5 20mAh Leds benutze ? (1.24 : 2000) * 31.5 = 0.01953 = 20mA 1,24 * 31.5 = 39.06

2) Wenn ich jedoch 30mAh Leds benutzen würde müsste ich den 2kOhm Widerstand durch einen 1,3kOhm Widerstand ersetzen ? (1.24 : 1300) * 31.5 = 39.06 : 1300 = 0.03 = 30mA

Klar, mit der Anzahl hat das nix zu tun, der Widerstand ist ja nur die Einstellung die den Stromoutput setzt.

Es gibt keine LEDs mit mAh. Ströme werden in Ampere bzw. mA gemessen. Nicht immer nur an die Autobatterien denken... ;)

Über die Programmierung des TLC5940: http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1288439384