led cube effecten

Arduino specifieke Software
Berichten: 30
Geregistreerd: 09 Dec 2012, 17:16

led cube effecten

Berichtdoor badmintonerke » 15 Dec 2012, 15:24

hallo,

ik heb een 4x4x4 led cube gemaak met 2 shift register(74hc595) stuur ik 16 led's en met 4 transistor's stuur ik de 4 layer's (de transistors niet gestuurd door shift register)

weet iemand hoe ik deze effecten kan maken

0:09-0:15
0:16-0:30
https://www.youtube.com/watch?v=yst4eL0-Eco

en
1:25-1:34
https://www.youtube.com/watch?v=f8d4ufqF4MM

Advertisement

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

Re: led cube effecten

Berichtdoor pjh » 15 Dec 2012, 17:18

Ik weet niet wat je al aan software hebt.
Ik ga ervan uit dat je op het moment helemaal geen sketch hebt.

De effecten waar je in de filmpjes op wijst, zijn niet moeilijker of anders dan wat voor effect ook.
Het gaat er vooral om dat je het juiste raamwerk maakt, om eenvoudig alle effecten te kunnen huizen.

Een functie als deze: led(x,y,z, aan/uit) zou daarbij onontbeerlijk zijn.

Je spreekt over twee HC595's en 4 transistors.
Neem aan dat de kathodes van de LED's door transistors worden gevoed en dat de GND op de shiftregisters zit.
Dit betekend dat als op alle poten van de HC595 5 volt staat: er geen lampje brand.
Dus een nul op een uitgang van de shiftregistor zal bij een plus op de 'transistor' kant een lampje laten branden.

Omdat je een 4x4 horizontaal vlak met 2x8 aanstuurt, zal het dus uitmaken welke 4 bits aan de buitenkant en welke aan de binnenkant zitten.
Gelukkig is het achteraf eenvoudig de volgorde te veranderen.

Heb je de shiftregisters los, of alleen de clock en latch, of alles aaneen geknoopt?

Verder denk ik dat je twee soorten programma's kunt laten draaien op de ledcube.
1. direct: zo van for (y = 0; y< 4; y++) led(x,y,z,HIGH)
2. indirect: alle ledjes worden aangestuurd, aan of niet. Zo kun je verschillende 'frames' vastleggen in een array en die afspelen.

Ik zal wel eens kijken of ik bovenstaande in een sketch kan vatten.
Maar dochter is jarig, die moet eerst aan haar trekken komen met taart enzo. Is niet digitaal.
Taart

Berichten: 30
Geregistreerd: 09 Dec 2012, 17:16

Re: led cube effecten

Berichtdoor badmintonerke » 15 Dec 2012, 17:53

ik heb al een aantal effecten gemaakt maar op een andere manier ,
als de shit register 1 word is de led gevoed en de transistor leg de layer aan de gnd

zo heb ik het gedaan ,misschien verkeert maar het is de eerste keer dat ik er een maak,

nu zo link en recht schuin over elkaar aan branden

digitalWrite(lach,LOW);
shiftOut(data,clock,LSBFIRST,B10000000);
shiftOut(data,clock,LSBFIRST,B00000001);
digitalWrite(lach,HIGH);

digitalWrite(layerPin1,HIGH);
digitalWrite(layerPin2,LOW);
digitalWrite(layerPin3,LOW);
digitalWrite(layerPin4,LOW);
delay(tijd);

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

Re: led cube effecten

Berichtdoor pjh » 15 Dec 2012, 20:44

Code: Alles selecteren
digitalWrite(lach,LOW);
shiftOut(data,clock,LSBFIRST,B10000000);
shiftOut(data,clock,LSBFIRST,B00000001);
digitalWrite(lach,HIGH);


LSBFIRST betekend (voor wie het niet weet) Least significant byte first.
Dit geeft de volgorde aan waarin het getal B100000000 de shift register ingaat

Als je
Code: Alles selecteren
shiftOut(data,clock,LSBFIRST,B10000000);
shiftOut(data,clock,LSBFIRST,B00000001);

schrijft als
Code: Alles selecteren
shiftOut(data,clock,LSBFIRST,abcdefgh);
shiftOut(data,clock,LSBFIRST,ijklmnop);

Dan komt het zo op een laag van je 4x4x4:
h g f e
d c b a
p o n m
l k j i

Dit is natuurlijk wel afhankelijk van hoe je de shiftregisters precies hebt verbonden.
Maar de 'h' gaat er als eerste in, en de 'i ' als laatste.
In jouw sketch zijn 'a' en 'p', '1' en de rest '0'.
Ik hoop dat dit precies de lampjes zijn die bij je branden.

Laat maar weten, dan kunnen we verder erin duiken...

Berichten: 30
Geregistreerd: 09 Dec 2012, 17:16

Re: led cube effecten

Berichtdoor badmintonerke » 15 Dec 2012, 20:55

zo heb ik het gemaakt
shiftOut(data,clock,LSBFIRST,abcdefgh);
shiftOut(data,clock,LSBFIRST,ijklmnop);

a b c d
e f g h
i j k l
m n o p

en als ik dit stuur naar de shift registers
shiftOut(data,clock,LSBFIRST,B10000000);
shiftOut(data,clock,LSBFIRST,B00000001);

dan branden A en P

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

Re: led cube effecten

Berichtdoor pjh » 15 Dec 2012, 21:45

okay, perfect.
dan ik nu de uitgangssituatie duidelijk.
ik zal eens wat proberen.
weet niet of ik er vanavond aan toekom, maar ik vind dit LEUK.
Zodra je de basis goed hebt gelegd, kun je allerhande wiskundige formules erin gooien.
Of een equalizer chip...

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

Re: led cube effecten

Berichtdoor pjh » 15 Dec 2012, 22:07

Misschien kun je een setje variabelen die de 'huidige toestand' van de LED cube aangeeft, en die steeds veranderen.

Hieronder een voorbeeld. Als je het wil overnemen, moet je wel weten dat ik latch schrijf en niet lach. En de pinnrs nat. aanpassen.
HEB DIT NIET KUNNEN TESTEN. HEB GEEN 4X4X4.

Code: Alles selecteren
int data  = 4; // HC595-1, 2
int clock  = 5; // HC595-1, 2
int latch  = 6; // HC595-1, 2

int layerPin[] = {
  7,8,9,10};

int data8x8[] = {
  0, 0, 0, 0, 0, 0, 0, 0}
;

void setup(){
  Serial.begin(9600);
  pinMode(data, OUTPUT);
  pinMode(clock, OUTPUT);
  pinMode(latch, OUTPUT);

  for (int i = 0; i < 4; i ++){
    pinMode(layerPin[i], OUTPUT);
  }
}

void loop(){
  for (int z = 0; z < 4; z++){
    for (int y = 0; y < 4; y++){
      for (int x = 0; x < 4; x++){
        int xbijy= y*4 + x;
        int shiftReg = z*2+ xbijy / 8;
        int bitNr = xbijy % 8;
        data8x8[shiftReg] = 1<<bitNr;
        drawCube(100);
      }
    }
  }
}

void drawCube(int duur){
  for (int t = 0; t <  duur; t++){
    for (int zz=0; zz < 4; zz++){
      digitalWrite(latch,LOW);
      shiftOut(data, clock, LSBFIRST, data8x8[zz*2]);
      shiftOut(data, clock, LSBFIRST, data8x8[zz*2 + 1]);
      digitalWrite(latch,HIGH);
    }
  }
}






Berichten: 30
Geregistreerd: 09 Dec 2012, 17:16

Re: led cube effecten

Berichtdoor badmintonerke » 16 Dec 2012, 00:35

lach een schijf fout

ik heb u code geprobeerd maar werkt helaas niet en ik begrijp er niet veel van maar ik heb wel gezien wat er niet in staat,
de layer's worden niet gestuurt

ik heb er digitalWrite(layerPin[3],HIGH); ergens in de void loop() geplaatst en het doe iets:
led A en i branden de hele tijd en elke rij apart gaat er een led van recht naar links

bedankt dat je wilt helpen,

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

Re: led cube effecten

Berichtdoor pjh » 16 Dec 2012, 01:28

argh, je hebt helemaal gelijk,
maar zoals ik al schreef: heb code niet getest.
Maar FAIL
Zal betere maken...
Dit is zeker niet optimaal,
maar kijk eens of het werkt.
alle ledjes moeten langsgegaan worden.
is eerste stap
zou eigenlijk zelf ledcube moeten bouwen....

Als het werkt, zal ik het uitleggen,\kun je daarna elk patroon zelf doen.
Dan komt het leuke stuk....

Code: Alles selecteren
int data  = 4; // HC595-1, 2
int clock  = 5; // HC595-1, 2
int latch  = 6; // HC595-1, 2

int layerPin[] = {
  7,8,9,10};

int data8x8[] = {
  0, 0, 0, 0, 0, 0, 0, 0}
;

void setup(){
  Serial.begin(9600);
  pinMode(data, OUTPUT);
  pinMode(clock, OUTPUT);
  pinMode(latch, OUTPUT);

  for (int i = 0; i < 4; i ++){
    pinMode(layerPin[i], OUTPUT);
  }
}

void loop(){
  for (int z = 0; z < 4; z++){
    for (int y = 0; y < 4; y++){
      for (int x = 0; x < 4; x++){
        int xbijy= y*4 + x;
        int shiftReg = z*2+ xbijy / 2;
        int bitNr = xbijy % 8;
        data8x8[shiftReg] = 1<<bitNr;
       
        drawCube(100); // het getal 100 geeft de snelheid aan.
      }
    }
  }
}

void drawCube(int duur){
  for (int t = 0; t <  duur; t++){
    for (int zz=0; zz < 4; zz++){
      for (int lay=0; lay < 4; lay++){
        digitalWrite(layerPin[lay], LOW );
      }
      digitalWrite(layerPin[zz], HIGH );
     
      digitalWrite(latch,LOW);
      shiftOut(data, clock, LSBFIRST, data8x8[zz*2]);
      shiftOut(data, clock, LSBFIRST, data8x8[zz*2 + 1]);
      digitalWrite(latch,HIGH);
    }
  }
}

Berichten: 30
Geregistreerd: 09 Dec 2012, 17:16

Re: led cube effecten

Berichtdoor badmintonerke » 16 Dec 2012, 12:05

ik heb het getest en het doen niet wat je beschijf
ik heb het gefilmd en op youtube gezet (niet de beste kwaliteit).

http://www.youtube.com/watch?v=_FvWYRnt ... e=youtu.be

Volgende

Terug naar Arduino software

Wie is er online?

Gebruikers in dit forum: alayimesovus, Kyliehooca en 19 gasten