Paso 5: programa de arduino
Este es el código que he usado, lo puedes descargar aquí, no dude en hack/mod. (y publicar buenas fotos de ella ;))
#include < TimerOne.h >
#include < SD.h >
#include "LPD6803.h"
int crudo;
int dat [6];
int nr = -1;
rgb de int = 1;
int cifras = 0;
kleur int [100] [3];
beeld int = 7;
teller de int = 0;
int wachttijd = 1000;
int wachtuit = 0;
talleur int = 0;
beweging int = 1;
int beatdet = 0;
Archivo de datos de archivo;
const int chipSelect = 4; //sd cosas
LPD6803 tira = LPD6803 (25, 7, 6); //starts la banda de lpd
void setup()
{
Serial.Begin(9600);
Serial.Print ("tarjeta INICIALIZACION SD...");
strip.setCPUmax (60); //start de ledstrip
Strip.Begin();
Strip.Show();
pinMode (10, salida); //for sd
if (!. {SD.begin(chipSelect))}
Serial.println ("tarjeta de fallido, o no presente");
no hacer nada más:
settm(5,31,0,0);
retorno;
}
Serial.println ("tarjeta de inicializado.");
}
void loop()
{
talleur = 1;
Si (beweging == 1) {}
leesSD(talleur);
Si (talleur == 49)afstandanim(); Si no tienes un sensor de distancia infrarrojo puedes borrar esta línea
talleur ++;
}
Si (talleur > 50) {//motion la detección
Beweging = 0;
Serial.Print ("analogReadA5:");
Serial.println(analogRead(A5));
Si {} (analogRead(A5) > 300)
Beweging = 1;
talleur = 0;
} else {}
ClearAll();
}
}
}
void afstandanim() {}
Serial.println("afstandanim");
para (int e = 0; e < 100; e ++) {}
Serial.Print("afstand:");
int q = analogRead(A4);
Serial.println(q);
Delay(100);
int w = (q / 20) -2;
ClearAll();
settm(w,31,31,31);
Si (digitalRead(A0) == 0){while(digitalRead(A0) == 0){delay(10);} Si (talleur == 1) talleur = 49; talleur--; talleur--; Break;} botones
Si (digitalRead(A1) == 0){while(digitalRead(A1) == 0){delay(10);} break;}
}
}
void leesSD (largo textnr) {}
Nr = 0;
RGB = 1;
dígito = 0;
DAT [0] = 0;
DAT [1] = 0;
DAT [2] = 0;
DAT [3] = 0;
char nombre [7];
sprintf (nombre de archivo, "an%i.an", textnr); //opens el archivo de texto derecha
archivo de datos = SD.open(FileName);
RGB = 1;
Si (dataFile) {}
mientras (1 == 1) {}
materia prima = (dataFile.read() - 48);
Si (crudo == -4) {/ /,
Si (nr. = 25) {}
kleur [nr] [rgb] = dat [1] + (dat [0] * 10);}
RGB = 1;
Nº ++;
dígito = 0;
DAT [0] = 0;
DAT [1] = 0;
}
Si (crudo == -16) {/ / el espacio
Si (nr. = 25) kleur [nr] [rgb] = dat [1] + (dat [0] * 10);
dígito = 0;
DAT [0] = 0;
DAT [1] = 0;
DAT [2] = 0;
DAT [3] = 0;
RGB ++;
}
Si (crudo == -10) {/ / &
Serial.Print ("fotograma siguiente:");
Delay(10);
wachttijd = dat [4] + dat [3] * 10 + dat [2] * 100 + dat [1] * 1000;
Serial.println(wachttijd);
RGB = 1;
dígito = 0;
DAT [0] = 0;
DAT [1] = 0;
DAT [2] = 0;
DAT [3] = 0;
setkleuren();
Si (beatdet == 0) {}
Delay(wachttijd);} Else {}
int val = 0;
doble gewacht = 0;
Si (wachttijd! = 10) {}
mientras (1 == 1) {}
Delay(10);
Val = analogRead(A0);
Delay(10);
Serial.println("___");
Serial.println(analogRead(a0));
Serial.println(Val);
Serial.println("___");
Si (analogRead(A0) > val + 5) {}
Serial.println("Beat!");
Break;}
gewacht ++;
Si (gewacht > wachttijd / 100) {break;
gewacht = 0;
}}}}
Si (digitalRead(A0) == 0){while(digitalRead(A0) == 0){delay(10);} Si (talleur == 1) talleur = 49; talleur--; talleur--; Break;}
Si (digitalRead(A1) == 0){while(digitalRead(A1) == 0){delay(10);} break;}
Nr = 0;
}
Si (crudo == 36) {//T
wachtuit = 1;
dígito = 0;
RGB = 1;
DAT [1] = 0;
DAT [2] = 0;
DAT [3] = 0;
DAT [4] = 0;
setkleuren();
}
¿Si (crudo == 15) {/ /?
Serial.Print ("listo con número de animación:");
Serial.println(talleur);
rotura;
RGB = 1;
}
Si (raw > = 0) {//getallen
Si (rgb == 4) rgb = 1;
DAT [cifras] = crudo;
dígitos ++;
}
}
dataFile.close();
}
Si el archivo no está abierto, surge un error:
Else {}
Serial.println ("error abrir *** .txt");
}
}
void setkleuren() {//zet alle kleuren uit ledkleur []]
para (int i = 1; i < = 25; i ++) {}
strip.setPixelColor (i, Color (kleur [i] [3], kleur [i] [1], kleur[i][2]));
}
Strip.Show();
}
void clearall() {/ / Clear de hele tira
lednr = 0;
para (int i = 0; i < = 25; i ++) {}
kleur [i] [1] = 0; //r
kleur [i] [2] = 0; //g
kleur [i] [3] = 0; //b
}
setkleuren();
}
void settm (int tm, int r, int g, int b) {/ / Clear de hele tira
lednr = 0;
para (int i = 0; i < = tm; i ++) {}
kleur [i] [1] = r; //r
kleur [i] [2] = g; //g
kleur [i] [3] = b; //b
}
setkleuren();
}
unsigned int Color (byte r, byte g, byte b) / / maakt een getal van de r b en g waardes (hoort bij de ledstrip)
{
Tomar los menor 5 pedacitos de cada valor y añadir extremo a extremo
volver (g ((unsigned int) & 0x1F) << 10 | ((unsigned int) b & 0x1F) << 5 | r (unsigned int) & 0x1F);
}