Show Posts
Pages: [1]
1  International / Nederlands / Re: LED Cube aansturen on: January 28, 2013, 07:07:40 am
De arrays aanmaken is geen probleem. (En dat had ik ook op de hulp-pagina's kunnen vinden smiley)

Het probleem zit erin om een degelijk algoritme te vinden om de LEDjes aan te sturen.

Ik heb wat code toegevoegd:

Code:
int Latchpin = 8;
int OEpin = 9;
int Clkpin  = 11;
int Datapin = 12;
int helderheid = 240;
byte test[] = {2, 4, 8, 16, 32, 64, 255};
byte test2[] = {129, 254, 4, 8, 16, 32, 64};

void setup(){
  Serial.begin(9600);
  pinMode(Latchpin, OUTPUT);
  pinMode(OEpin, OUTPUT);
  pinMode(Clkpin, OUTPUT);
  pinMode(Datapin, OUTPUT);
 
  analogWrite(OEpin, helderheid);
}

void loop(){
  for(int i = 0; i < 1000; i++){
   shift(test);
   delayMicroseconds(1);
   shift(test2);
   delayMicroseconds(1);
  }
 
  test[0] = 128;
  test2[0] = 3;
 
  for(int i = 0; i < 1000; i++){
   shift(test);
   delayMicroseconds(1);
   shift(test2);
   delayMicroseconds(1);
  }
 
  test[0] = 2;
  test2[0] = 129;
}

void makeImage(int lagen[]){
 
}

void shift(byte data[]){
  digitalWrite(Latchpin, LOW);
  shiftOut(Datapin, Clkpin, MSBFIRST, data[0]);
  shiftOut(Datapin, Clkpin, MSBFIRST, data[1]);
  shiftOut(Datapin, Clkpin, MSBFIRST, data[2]);
  shiftOut(Datapin, Clkpin, MSBFIRST, data[3]);
  shiftOut(Datapin, Clkpin, MSBFIRST, data[4]);
  shiftOut(Datapin, Clkpin, MSBFIRST, data[5]);
  shiftOut(Datapin, Clkpin, MSBFIRST, data[6]);
  digitalWrite(Latchpin, HIGH);
}

In bijlage zitten 2 foto's om te laten zien wat hij nu doet.

Nu ik zou graag per afbeelding een array maken en deze array meegeven naar makeImage(). Die functie zet dit dan om naar elke keer een nieuwe array, welke hij op zijn beurt doorstuurt naar shift().
Dan kan ik bijvoorbeeld gewoon een SD-kaart extensie kopen, deze erop zetten en vanuit het programma elke keer een regel lezen, in de array steken, en naar makeImage() sturen.

Want als ik het moet doen zoals nu, moet ik heel het programma vol schrijven, en wil ik het aanpassen, moet ik heel het programma opnieuw schrijven.

Groeten,
Erates
2  International / Nederlands / LED Cube aansturen on: January 27, 2013, 05:14:59 am
Hoi,

Ik heb thuis een 7x7x7 LED cube gemaakt. Deze gebruikt 7 Shift registers (74HC595). Ik zit nu echter in de knoei om een algoritme te vinden dat deze LED cube goed kan aansturen. Ik moet natuurlijk multiplexeren.

Ik heb al aan het zoeken geweest en waar ik op gekomen ben is om een array aan te maken waar elke laag in zit. Nu was ik aan het denken om een 2e array aan te maken waar grote getallen in zitten, en deze dan om te vormen naar de eerste array.

Hieronder de code die ik heb.

Code:
int Latchpin = 8;
int OEpin = 9;
int Clkpin  = 11;
int Datapin = 12;

void setup(){
  Serial.begin(9600);
  pinMode(Latchpin, OUTPUT);
  pinMode(OEpin, OUTPUT);
  pinMode(Clkpin, OUTPUT);
  pinMode(Datapin, OUTPUT);
  
  analogWrite(OEpin, 240);
}

void loop(){
  
}

void makeImage(int lagen[]){
  
}

void shift(byte data[]){
  digitalWrite(Latchpin, LOW);
  shiftOut(Datapin, Clkpin, MSBFIRST, data[0]);
  shiftOut(Datapin, Clkpin, MSBFIRST, data[1]);
  shiftOut(Datapin, Clkpin, MSBFIRST, data[2]);
  shiftOut(Datapin, Clkpin, MSBFIRST, data[3]);
  shiftOut(Datapin, Clkpin, MSBFIRST, data[4]);
  shiftOut(Datapin, Clkpin, MSBFIRST, data[5]);
  shiftOut(Datapin, Clkpin, MSBFIRST, data[6]);
  delay(1);
  digitalWrite(Latchpin, HIGH);
}

Kan iemand mij hier mee helpen? Ik heb al 3 weken aan het zoeken geweest maar ik vind helemaal niets.

Groeten,
Erates


EDIT:
Ik kan ook natuurlijk elke keer de byte array opnieuw invullen, en dan deze uitsturen, maar dan zit mijn programmageheugen onmiddelijk vol en als ik het wil aanpassen word het ook een troep.
Pages: [1]