Stap 9: Laadt de Code op de Galileo
Om te leven inblazen uw LED-Matrix, kopieer en plak de Code in de Arduino IDE en draaien. U kunt de Ino bestand hieronder ook downloaden. De Code gebruikt van Interrupts te vullen het Shift Register en de specifieke LEDs oplichten. De opdracht "popen" wordt ook gebruikt voor de communicatie tussen de onderliggende Linux shell en onze schets. Het binaire bestand van de server krijgt wordt gedownload met behulp van curl.
Opmerking: natuurlijk moet u de URL wijzigen naar uw eigen server.
#include <timerone.h> int on = 0; int last_on = 0; int datapin = 2; int clockpin = 3; int latchpin = 4; byte data[8]; FILE *fp; char input[10]; void setup() { // Initialize the digital pin as an output. // Pin 13 has an LED connected on most Arduino boards 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); // the timer period is 100000 useconds, that is 0.1 sec Timer1.attachInterrupt(timerIsr,1000); // the callback will be called on each 5th timer interrupt, i.e. every 0.5 sec //initLED(); data[0] = 0b00000111; data[1] = 0b00000001; data[2] = 0b11100111; data[3] = 0b10110001; data[4] = 0b10101011; data[5] = 0b10101000; data[6] = 0b10101000; data[7] = 0b10101000; Serial.begin(115200); } void loop() { //SWAP THE URL PLEASE fp = popen("curl PLEASE INSERT YOUR URL HERE/galileo/picture.txt","r"); if(fp == NULL) { Serial.println("Couldnt run the curl command"); } else { fgets(input,10,fp); } if(pclose(fp) != 0) { Serial.println("fail"); } data[0] = (byte)input[1]; data[1] = (byte)input[2]; data[2] = (byte)input[3]; data[3] = (byte)input[4]; data[4] = (byte)input[5]; data[5] = (byte)input[6]; data[6] = (byte)input[7]; data[7] = (byte)input[8]; delay(3000); } /// -------------------------- /// Custom ISR Timer Routine /// -------------------------- void timerIsr() { if(on==6) on = 8; digitalWrite((13-last_on), LOW); digitalWrite(latchpin,LOW); if(on == 8) shiftOut(datapin, clockpin, MSBFIRST, ~data[6]); else shiftOut(datapin, clockpin, MSBFIRST, ~data[on]); digitalWrite(latchpin,HIGH); digitalWrite( (13-on), HIGH); digitalWrite((13-last_on),LOW); last_on = on; if(on == 8) on =6; on = (on+1)%8; }