Intellekten Galileo interaktiva ledde matrisen (9 / 10 steg)
Steg 9: Ladda koden på Galileo
För att blåsa liv i din LED-matris, kopiera och klistra in vår kod i Arduino IDE och köra den. Du kan även hämta filen .ino nedan. Koden använder avbryter fylla SKIFT Register och lysa upp den specifika lysdioder. Kommandot "popen" används också att kommunicera mellan underliggande Linux skal och vår skiss. Den binära filen blir det från servern hämtas med hjälp av curl.
Obs: naturligtvis ska du har till ändra URL till din egen server.
#include < timerone.h >
int i = 0;
int last_on = 0;
int datapin = 2;
int clockpin = 3;
int latchpin = 4;
byte data [8].
Fil * fp;
char input [10].
void setup()
{
Initiera digital PIN-koden som en utgång.
Stift 13 har en lysdiod ansluten på de flesta Arduino styrelser
pinMode (13, OUTPUT);
pinMode(12,OUTPUT);
pinMode(11,OUTPUT);
pinMode(10,OUTPUT);
pinMode(9,OUTPUT);
pinMode(8,OUTPUT);
pinMode(7,OUTPUT);
pinMode(6,OUTPUT);
pinMode(5,OUTPUT);
pinMode(4,OUTPUT);
pinMode(3,OUTPUT);
pinMode(2,OUTPUT);
pinMode(1,OUTPUT);
pinMode(0,OUTPUT);
Timer1.Initialize(1000); timern är 100000 useconds, som är 0.1 SEK
Timer1.attachInterrupt(timerIsr,1000); återuppringning kommer att kallas på varje 5 timer avbrott, dvs varje 0,5 sek
initLED();
data [0] = 0b00000111;
data [1] = 0b00000001;
data [2] = 0b11100111;
data [3] = 0b10110001;
data [4] = 0b10101011;
data [5] = 0b10101000;
uppgifter [6] = 0b10101000;
data [7] = 0b10101000;
Serial.BEGIN(115200);
}
void loop()
{
BYTA URL BEHAGA
FP = popen ("curl vänligen infoga din URL HERE/galileo/picture.txt","r");
IF(fp == null)
{
Serial.println ("kunde inte köra kommandot curl");
}
annat
{
fgets(input,10,fp);
}
IF(pclose(fp)! = 0)
{Serial.println("fail");
}
data [0] = (byte) ingång [1].
data [1] = (byte) ingång [2].
data [2] = (byte) ingång [3].
data [3] = (byte) ingång [4].
data [4] = (byte) ingång [5].
data [5] = (byte) ingång [6].
uppgifter [6] = (byte) ingång [7].
data [7] = (byte) ingång [8].
Delay(3000);
}
/// --------------------------
Anpassade ISR Timer rutin
/// --------------------------
void timerIsr()
{
IF(on==6)
on = 8.
digitalWrite((13-last_on), låg);
digitalWrite(latchpin,LOW);
om (på == 8)
shiftOut (datapin, clockpin, MSBFIRST, ~ data[6]);
annat
shiftOut (datapin, clockpin, MSBFIRST, ~ data[on]);
digitalWrite(latchpin,HIGH);
digitalWrite ((13-på), hög);
digitalWrite((13-last_on),LOW);
last_on =;
om (på == 8)
å = 6;
on = (på + 1) %8;
}