Light Cube.h

Hallo Leute

Ich baue momentan einen 8x8x8 Led Cube nach dem Bausatz von Playzone Play-Zone.CH 8x8x8 LED-Cube Blau inkl. Acryl-Box Kit
Nun tue ich mich schwer mit dem Programmieren
Die mitgelieferte Bibliothek Light cube.h hat keine Anleitung, und die KOmmentare sind nur auf Chinesisch.

Aus dem Testcode werde ich nicht schlau und ich wollte darum Frage, ob jemand einen guten Beispielcode hat, und vielleicht eine Anleitung zur Bibliothek

Danke im Voraus

den Testcode habe ich unten angehängt

/**********************************
 * 光立方例程
 * 
 * by YFROBOT
 ***********************************/
#include "LightCube.h"

LightCube lightCube(8, 9, 10);
  
void setup(){
  lightCube.clc();
}

void loop(){
  lightCube.All(10);

  lightCube.UtoD_scan(1);

  lightCube.dot(5);

  lightCube.LtoR_scan(10);//侧面从左向右依次点亮 

  lightCube.RtoL_scan(10); //侧面从右向左依次点亮

  lightCube.FtoB_scan(10); //从前排向后排依次点亮

  lightCube.BtoF_scan(10); //从后排向前排依次点亮

  lightCube.Acw(3,10);//anticlockwise逆时针,num;旋转周数,v;速度

  lightCube.Cw(3,10);//clockwise顺时针,num;旋转周数,v;速度

  lightCube.RCw(3,10);//右侧看顺时针

  lightCube.cube(0,0,6);	//empty=0,实1空; kind=0左上角,1右上角,2左下角,3右下脚.	
  lightCube.cube(1,3,10);
  lightCube.cube(0,2,10);

  lightCube.rain(0,5,6);//menu=0,down;menu=1,up;num循环次数
  lightCube.rain(1,5,6);
   		

  lightCube.up(1,10); //上移
  lightCube.DtoU_scan(20);  //从下向上依次点亮
  lightCube.xuanzhuantiao(0,1,4,8);//空心旋转,kind=1实心,否则空心;cw是否正转
  lightCube.qumianxuanzhuan(1,4,5);//曲面旋转;cw=1逆时针,否则顺时针;
  lightCube.qumianxuanzhuan(0,4,5);//曲面旋转;cw=1逆时针,否则顺时针

  lightCube.sandglass(10);//沙漏
}

Auf der angegebenen Seite komme ich leider nicht weiter, kann nicht mal das Schaltbild runterladen. Da hilft wohl nur noch ein Blick in die Bibliothek, was die so macht.

Das Schaltbild ist klar; Es sind 9 HC595-Shiftregister; 8 für de LED Steuerung der LED einer Ebene wobei alle Anoden LED 64 LED einer Ebene mit dem entsperchenden der anderen Ebenen paralellgeschaltet sind und die Kathoden aller LED einer Ebene über ein ULN2803 in Multiplexing angesteuert werden.

Mit diesen Daten kann der Würfel auch dierkt, ohne Bibliothek angesteuert werden.

Ich finde den Link zur Bibliothek / Beispielsketch auf der Verkäuferseite nicht. Kannst Du uns den geben?

Grüße Uwe

hi,

stell doch mal das zip-paket der library rein.

gruß stefan

uwefed:
https://www.play-zone.ch/de/fileuploader/download/download/?d=1&file=custom%2Fupload%2FFile-1399312267.pdf
Das Schaltbild ist klar; Es sind 9 HC595-Shiftregister; 8 für de LED Steuerung der LED einer Ebene wobei alle Anoden LED 64 LED einer Ebene mit dem entsperchenden der anderen Ebenen paralellgeschaltet sind und die Kathoden aller LED einer Ebene über ein ULN2803 in Multiplexing angesteuert werden.

Mit diesen Daten kann der Würfel auch dierkt, ohne Bibliothek angesteuert werden.

Ich finde den Link zur Bibliothek / Beispielsketch auf der Verkäuferseite nicht. Kannst Du uns den geben?

Grüße Uwe

Wie würde denn das gehen, ohne Bibliothek ansteuern, und kann ich das wie auf dem Beschreib mit 4 Pins bewerkstelligen?
Die Libary im Zip schicke ich euch huete abend
Danke und Gruss

hi,

Wie würde denn das gehen, ohne Bibliothek ansteuern

naja. genauso wie es die bibliothek auch macht. das ist ja kein "hexenwerk", sondern einfach auch nur code, den jemand geschrieben hat.

im prinzip hast Du 8 schieberegister, die zusammen 64 LEDs steuern können. wenn Du einen kanal vom ULN2803 einschaltest, kannst Du die 64 LEDs auf dieser eingeschalteten ebene einzeln ein- und ausschalten. hier ist beschrieben, wie:

https://www.arduino.cc/en/Tutorial/ShiftOut

alle ebenen kommen dann zustande, indem schnell hintereinander jeweils eine ebene nach der anderen ein- und ausgeschalten wird, während die 8 schieberegister jeweils das richtige "bild" auf die jeweils aktive ebene schreiben.

gruß stefan

Könntest du mir vielleicht einen Beispielsketch anhängen, der Kommentiert ist, und kann ich dies nun mit 4 Pins bewerkstelligen, oder brauche ich 8?

hi,

eigentlich brauchst Du nur 3, ich denke, da ist eine fernbedienung dabei (sieht man auf keinem bild), die den 4ten pin benötigt.

stell die bibliothek rein, dann sieht man, welche pins clock, data und latch sind.

ein kleiner code, um einzelne leds zu schalten, ist einfach, aber um komplexe "bewegte bilder" zu erzeugen, ist viel gehirnschalz nötig (programmier- UND mathematik-hirn).

gruß stefan

Hallo Zusammen

Die Bibliothek findet Ihr hier: http://files.play-zone.ch/media/8Cube.zip

Danke und ich hoffe Ihr könnt mir weiterhelfen

Könnte mir nun doch noch jemand helfen?

Rusconichess:
Könnte mir nun doch noch jemand helfen?

Eher nicht :frowning:

Ohne Beschreibung ist es ziemlich aufwendig, die Funktionen zu erraten. Die Funktionsnamen geben zwar ein paar Hinweise, aber nicht genug. Vielleicht findest Du jemand, der die Kommentare auf Deutsch oder Englisch übersetzt?

Oder Du machst Dich mit der Programmierung der Schieberegister vertraut, und schreibst Deine eigenen Funktionen für die Effekte, die Dir gefallen. Die Funktionen kannst Du vermutlich auch von anderen Bibliotheken abkupfern, die besser dokumentiert sind.

hi,

naja, da kam nix mehr...

geht es jetzt darum,

  1. die fertige library zu verstehen, oder willst Du
  2. einzelne leds ansprechen können und
  3. eigene effekte schreiben?

für ersteres brauchst Du einen chinesen (gibt's viele, sind aber trotzdem schwer zu finden)
zweiteres ist leicht, aber
das dritte wirst Du auch damit nicht schaffen (außer bestenfalls lauflichtähnliches).

gruß stefan

Hallo Zusammen

Danke erstmals für die Antwort.

Nun ihr habt ja die Schematik gesehen, könnte ich also die Ansteuerung mit der Fast Led Bibliothek lösen?
Und hat jemand einen Beispiel Sketch und Hilfe?

Danke und Gruss :slight_smile:

Im Grundsatz will ich Animationen schreiben:):slight_smile:

Schau Dir mal aus 8Cube den test Sketch an. Der macht nichts anderes als in loop() immer nur lightCube.All(10) aufzurufen. Dabei scheint 10 die Anzahl der Durchläufe zu sein, d.h. wie oft hintereinander das Muster angezeigt wird. Das Muster steht in All() drin, mit allen LEDs eingeschaltet, und das wird dort mit frame() ausgegeben.

Für eine Animation brauchst Du also viele Muster-Arrays, von denen nacheinander jedes für eine bestimmte Zeit (Anzahl Durchläufe) angezeigt wird. Sowas wie

void loop() {
  lightCube.frame(Muster1, 10);
  lightCube.frame(Muster2, 10);
  lightCube.frame(Muster3, 15); //etwas länger zeigen
//usw.
}

Danke für eure Antworten

Könnte mir nun doch vielleicht jemand einen kompletten Sketch anhängen, welcher ohne bibliothek funktioniert

Ich bin noch nicht s weit im Programmieren, und deshalb habe ich mir ja auch diesen Bausatz zugelegt

Entschuldigung, dass ich euch so nerve

Gruss

Rusconichess

Könnte mir vielleicht jemand einen beispielsketch ohne diese Bibliothek zeigen und erklären, ich komme nicht weiter, oder wisst ihr wie ich bei dieser Libary eine einzelne LED ansteuere?

Der Code hängt von der Schaltung ab, die Du zur Ansteuerung der Matrix verwendest. Zeig mal Deinen Schaltplan. Es muß ja nicht jede LED eingezeichnet sein, nur die Logik für die Zeilen und Spalten.

hi, doktor,

der schaltplan ist weiter oben von uwe verlinkt. sind neun 595er, einer davon für die ebenen.

ich selbst schreibe nicht gerne ohne hardware, dazu bin ich zu schleißig, muß immer erst probieren und schlampigkeitsfehler raushauern.

im prinzip ist nur der arduino-shiftout-artikel aus dem playground auf acht 595er zu erweitern und dann für den neunten ein ebenenwechsel einzubauen.

es ist schade, ich hätte genau das ding hiergehabt (mit kaputtem mikroprozessor einer anderen firma als atmel, die afferln haben 30V reingejagt), und wie ich's holen wollte zum testen, hat mir der besitzer gesagt, daß er einem lehrmädchen gesagt hat, zwei kaputte leds auszubauen, und sie hat dann das ding zerlegt... :confused:

gruß stefan

Sorry, ich hatte übersehen daß das schon die 2. Seite ist. Allerdings hilft dieses Schaltbild auch nicht viel weiter.

Einzelne LED lassen sich nicht direkt ansteuern, und ob die Schaltung eine statische Ansteuerung überlebt, ist auch fraglich.

Damit bleibt nur mein alter Vorschlag übrig, LightCube::All() oder frame() direkt oder als Vorlage zu verwenden. Aber viel einfacher als bei Verwendung der Bibliothek wird's nicht, bis man alle benötigten Funktionen und Konstanten beieinander hat.

Welche LED ein oder aus ist, steht im Array drin. Dazu könnte man noch eine Funktion basteln, die darin ein Bit setzt oder löscht.

DrDiettrich:
Einzelne LED lassen sich nicht direkt ansteuern, und ob die Schaltung eine statische Ansteuerung überlebt, ist auch fraglich.

Im Schaltbild sehe ich 220Ohm Widerstände, Strom also kleiner 20mA, das sollte doch auch statisch für eine LED passen. Oder mache ich irgendeinen Denkfehler?