Stap 6: programmeren
Dit project maakt gebruik van de snelle spi bibliotheek beschikbaar op: http://code.google.com/p/fastspi/Een video aan te tonen het volledige scala van mogelijkheden wordt hier weergegeven:
Ik heb niets speciaal met de programmering gedaan. Mijn code bevat een heleboel variabelen waarin de uiteinden van de strips om te corrigeren voor hen wordt gehakt op en buiten de orde. Dit is de code die ik voor de demo op de introductiepagina gebruikte. Er is genoeg ruimte voor verbetering.
#include < FastSPI_LED.h >
#define NUM_LEDS 178
struct CRGB {}
unsigned char b;
unsigned char r;
unsigned char g;
}; Soms chipsets draad een achteruit soort manier
struct CRGB * leds; struct CRGB {unsigned char r unsigned char g; unsigned char b;};
#define PIN 3
#define SSS 1
#define SSE 25
#define CSS 26
#define CSE 46
#define St 47
#define STE 73
#define BTS 74
#define BTE 107
#define TTS 108
#define TTE 137
#define LFS 138
#define LFE 157
#define RFS 158
#define RFE 177
#define op 500
#define af 100
VOID lichtbalk (int s, int e, int del, int af, int r, int g, int b);
nietig bottomTube();
nietig topTube();
nietig seatTube();
nietig chainStay();
nietig seatStay();
nietig leftFork();
nietig rightFork();
nietig clearDisplay();
int currentBar = 0;
int lastBar = 0;
int nextBar = 0;
int keuze = 0;
int klok = 0; linksom
VOID Setup
{
FastSPI_LED.setLeds(NUM_LEDS);
FastSPI_LED.setChipset(CFastSPI_LED::SPI_TM1809);
FastSPI_LED.setPin(PIN);
FastSPI_LED.init();
FastSPI_LED.start();
LEDs = (struct CRGB*)FastSPI_LED.getRGBData();
}
void loop {}
Als (currentBar == 0 & & lastBar == 0)
{
lastBar = 4;
currentBar = 5;
klok = 0; linksom
}
switch(currentBar) {}
kast 1: de zaak start //main
if(Clock==0) {}
nextBar = 2;
}
breken;
geval 2: //main zaak start
if(Clock==0) {}
keuze = random(2);
if(Choice==0)
nextBar = 3;
anders
nextBar = 4;
}
else {}
nextBar = 1;
}
breken;
Case 3: //main zaak start
if(lastBar==2|| lastBar == 4) {}
keuze = random(2);
if(Choice==0)
nextBar = 1;
anders
nextBar = 5;
}
else {}
keuze = random(2);
if(Choice==0)
nextBar = 2;
anders
nextBar = 4;
}
breken;
geval 4: //main zaak start
if(Clock==0) {}
keuze = random(3);
if(Choice==0)
nextBar = 5;
anders if(choice==2)
nextBar = 6;
anders
nextBar = 7;
}
else {}
keuze = random(2);
if(Choice==0)
nextBar = 3;
anders
nextBar = 2;
}
breken;
geval 5: //main zaak start
if(Clock==0) {}
keuze = random(2);
if(Choice==0)
nextBar = 1;
anders
nextBar = 3;
}
else {}
keuze = random(3);
if(Choice==0)
nextBar = 4;
anders if(choice==2)
nextBar = 6;
anders
nextBar = 7;
}
breken;
kast 6: //main zaak start
if(Clock==0) {}
nextBar = 7;
}
else {}
keuze = random(3);
if(Choice==0)
nextBar = 4;
anders if(choice==2)
nextBar = 5;
anders
nextBar = 7;
}
breken;
geval 7: //main zaak start
if(Clock==0) {}
keuze = random(3);
if(Choice==0)
nextBar = 4;
anders if(choice==2)
nextBar = 5;
anders
nextBar = 6;
}
else {}
nextBar = 6;
}
breken;
}
switch(currentBar) {//light currentBar
geval 1: lightBar(SSS,SSE,ON,OFF,50,50,50); breken;
geval 2: lightBar(CSS,CSE,ON,OFF,50,50,50); breken;
Case 3: lightBar(STS,STE,ON,OFF,50,50,50); breken;
geval 4: lightBar(BTS,BTE,ON,OFF,50,50,50); breken;
geval 5: lightBar(TTS,TTE,ON,OFF,50,50,50); breken;
kast 6: lightBar(RFS,RFE,ON,OFF,50,50,50); breken;
geval 7: lightBar(LFS,LFE,ON,OFF,50,50,50); breken;
}
lastBar = currentBar;
currentBar = nextBar;
/*
switch(lastBar) {}
geval 2: //Subcase-start
keuze = random(2);
if(Choice==0) {}
nextBar = 3;
}
anders
nextBar = 5;
breken; Subcase einde
Case 3: //Subcase-start
nextBar = 2;
breken; Subcase einde
geval 5: //Subcase start
nextBar = 2;
breken; Subcase einde
}
breken; belangrijkste geval einde
geval 5: //main zaak start
switch(lastBar) {}
geval 1: //Subcase-start
keuze = random(3);
if(Choice==0) {}
nextBar = 4;
}
anders if(choice==1) {}
nextBar = 6;
}
anders
nextBar = 7;
breken; Subcase einde
Case 3: //Subcase-start
keuze = random(3);
if(Choice==0) {}
nextBar = 4;
}
anders if(choice==1) {}
nextBar = 6;
}
anders
nextBar = 7;
breken; Subcase einde
geval 4: //Subcase-start
keuze = random(2);
if(Choice==0) {}
nextBar = 1;
}
anders
nextBar = 3;
breken; Subcase einde
kast 6: //Subcase-start
keuze = random(2);
if(Choice==0) {}
nextBar = 1;
}
anders
nextBar = 3;
breken; Subcase einde
geval 7: //Subcase-start
keuze = random(2);
if(Choice==0) {}
nextBar = 1;
}
anders
nextBar = 3;
breken; Subcase einde
VOID lichtbalk (int s, int e, int del, int af, int r, int g, int b) {}
for (int i = s; ik < = e; i ++) {}
LEDs [i] .r = r;
LEDs [i] .g = g;
LEDs [i] .b = b;
}
FastSPI_LED.show();
delay(del);
clearDisplay();
delay(off);
}
ongeldig bottomTube() {}
{
for (int i = 74; ik < = 108; i ++) {}
LEDs [i] .r = 50;
LEDs [i] .g = 50;
LEDs [i] .b = 50;
}
FastSPI_LED.show();
}
}
ongeldig topTube() {}
{
for (int i = 108; ik < = 140; i ++) {}
LEDs [i] .r = 50;
LEDs [i] .g = 50;
LEDs [i] .b = 50;
}
FastSPI_LED.show();
}
}
ongeldig seatTube() {}
for (int i = 48; ik < = 74; i ++)
{
LEDs [i] .r = 50;
LEDs [i] .g = 50;
LEDs [i] .b = 50;
}
FastSPI_LED.show();
}
ongeldig chainStay() {}
{
for (int i = 22; ik < = 47; i ++) {}
LEDs [i] .r = 50;
LEDs [i] .g = 50;
LEDs [i] .b = 50;
}
FastSPI_LED.show();
}
}
ongeldig seatStay() {}
{
for (int i = 1; ik < = 22; i ++) {}
LEDs [i] .r = 50;
LEDs [i] .g = 50;
LEDs [i] .b = 50;
}
FastSPI_LED.show();
}
}
ongeldig leftFork() {}
{
for (int i = 159; ik < = 178; i ++) {}
LEDs [i] .r = 50;
LEDs [i] .g = 50;
LEDs [i] .b = 50;
}
FastSPI_LED.show();
}
}
ongeldig rightFork() {}
{
for (int i = 140; ik < = 159; i ++) {}
LEDs [i] .r = 50;
LEDs [i] .g = 50;
LEDs [i] .b = 50;
}
FastSPI_LED.show();
}
}
ongeldig clearDisplay() {}
{
for (int i = 0; ik < = 177; i ++) {}
LEDs [i] .r = 0;
LEDs [i] .g = 0;
LEDs [i] .b = 0;
}
FastSPI_LED.show();
}
}
Niet-essentiële informatie over de code
Het programma dat ik heb hier net een volledige bar in één keer draait en omzetten in een aangrenzende bar in de rijrichting. Bijvoorbeeld kan de eerste staaf het verblijf van de zetel, de tweede kan dan worden beide de bovenbuis, zitbuis of keten blijven als een richting is nog niet vastgesteld. Zeggen dat de bovenbuis was de tweede balk. Een rijrichting is opgezet en de derde bar kan de onderste buis of een van de vorken. De verlichte bar vervolgt vooruit nooit verdubbeling op zichzelf.