Stap 5: Stap 5. Code ontwikkeling spark.io kant
Voorlopige hardware werd aangelegd met het solderen van punt tot punt. Ontwikkeling van de eerste code werd gedaan met
een arduino 328 kloon .shiftOut (dataPin, clockPin, LSBFIRST, j); was de eerste intstruction gebruikt en het
bleek dat het alleen zou verschuiven uit een een beetje word.
/*************************************************************/
/ * Spark.io functies voor de verwerking van webpagina interactie * /
/ * Bloominglabs Spark.io bouwen nacht 13 november en 15 2013 * /
/ * door Rex M Marling * /
/ * Momenteel een project in uitvoering voor een microcontrolled * /
/ * klokkenspel (xylophone). De Spark.io maakt draadloze * /
/ * interfacing met het bijbehorende bestand spelen RexOphone HTML-bestand * /
/ * Twee 74ls595 shift registers zijn wordt gebruikt om uit te breiden * /
/ * de uitvoergegevens van de spark.io. Jan 3 2015 * /
/ * INITIALISEER typen en TRIGGER onderbreken GEGEVENSFUNCTIE / * / * gegevenstype teken * /
char * songPtr;
/ * BOOL GEGEVENSTYPE * /
BOOL songDone = false;
BOOL remoteTriggered = false; Global-toestandsvariabele voor remoteTrigger() functie
/ * GEGEVENSTYPE BYTE *
/byte default_dur = 4;
byte default_oct = 6;
byte lowest_oct = 3;
byte Opmerking; byte schaal;
/ * GEGEVENSTYPE INT * /
int x; int de aanwijzer;
int resultaat;
int bpm = 63;
int num;
int clr = 7;
int gegevens = 3;
int klok = 4;
int klink = 5;
int inschakelen = 6;
int de teller;
/ * UNSIGNED INT GEGEVENSTYPE * /
unsigned int de opmerking;
unsigned int mask;
/ * de volgende unsigned int zijn toegewezen voor 16 notities * /
unsigned int a1 = 0x0001;
unsigned int b1 = 0x0002;
unsigned int c1 = 0x0004;
unsigned int c1p = 0x0008;
unsigned int d1 = 0x0010;
unsigned int d1p = 0x0020;
unsigned int e1 = 0x0040;
unsigned int f1 = 0x0080;
unsigned int f1p = 0x0100;
unsigned int g1 = 0x0200;
unsigned int g1p = 0x0400;
unsigned int a2 = 0x0800;
unsigned int ap2 = 0x1000;
unsigned int b2 = 0x2000;
unsigned int c2 = 0x4000;
unsigned int [n] = {0x8000, 0x4000, 0x2000, 0x1000, 0x0800, 0x0400, 0x0200, 0x0100, 0x0080, 0x0040, 0x0020, 0x0010, 0x0008, 0x0004, 0x0002, 0x0001};
/ * GEGEVENSTYPE LONG * /
lange wholenote;
lange duur;
/ * DEFINIEERT * /
#define DEBUG = false;
/ * SETUP DATA PORTS EN TRIGGER INTERRUPT * /
ongeldig setup(void) {}
if(debug) Serial1.begin(115200);
pinMode(D6,OUTPUT);
pinMode(D7,OUTPUT);
pinMode(data,OUTPUT);
pinMode(clock,OUTPUT);
pinMode(latch,OUTPUT);
pinMode(enable,OUTPUT);
digitalWrite(clock,HIGH);
digitalWrite(data,HIGH);
digitalWrite(latch,HIGH);
digitalWrite(enable,LOW);
digitalWrite(clr,HIGH);
Spark.function("Remote",remoteTrigger); }
/ * EINDE SETUP DATA PORTS EN TRIGGER INTERRUPT * /
/ * MAIN lus * / loop(void) {} ongeldig
/ * De belangrijkste loop processen de web knop Klik één notitie op een moment. */
/ * vermijden blokkeren de achtergrondtaken te lang * /
/ * of anders de Spark-kern de wolk zou verbreken. */
if(remoteTriggered) {}
digitalWrite(D7,HIGH);
Licht de onboard blauwe LED terwijl het lied speelt};
delay(600);
digitalWrite(D7,LOW);
Uitschakelen van de ingebouwde blauwe LED.
remoteTriggered = false;
if(debug) Serial1.println("Done!");
delay(2000); }
{
de volgende code is ontworpen om de klok van een 16-bits
unsigned int "Opmerking bovenstaande gegevens" door 2 x 74ls595
Shift registreert de functie van de enige overdracht van shiftOut
8 gegevensbits
syntaxis
shiftOut (dataPin, clockPin, bitOrder, waarde)
Parameters
dataPin: de pin op waarnaar u uitvoer van elke bit (int)
clockPin: de pin in-of uitschakelen zodra de dataPin is ingesteld op de juiste waarde (int)
bitOrder: welke volgorde te verplaatsen uit de bits; MSBFIRST of LSBFIRST.
(Meest significante Bit van de eerste en minst significante bits eerst)
waarde: de gegevens te verplaatsen uit. (byte)
Serial.println ('begin'); voor (aanwijzer = 0; aanwijzer < = 15; aanwijzer ++) {masker = 0x8000; / / & B1000000000000000 Opmerking = n [pointer]; Serial.println(Note); voor (x = 0; x < = 16; x ++) {resultaat = notitie & masker; mask masker = >> 1; als (resultaat > 0) {digitalWrite(data,HIGH); Serial.println ("hoog"); }
if(result == 0) {digitalWrite(data,LOW); Serial.println ("laag");} digitalWrite(clock,LOW); vertraging (15); digitalWrite(clock,HIGH); };
einde binnenste lus
digitalWrite(latch,LOW);
delay(15);
digitalWrite(latch,HIGH);
delay(15);
digitalWrite(enable,LOW);
delay(15);
digitalWrite(enable,HIGH);
delay(250); };
de buitenste lus einde
activeren van uitvoer inschakelen voor 74ls595 noot speelt "station output darlington-transistors" dan terug naar tristate
}
/**************************************************************/ /* */ /* END MAIN LOOP */ /**************************************************************
/ / * EXTERNE TRIGGER VOOR VONK. IO apparaat * / / *** / int remoteTrigger (String args) {als (args == '1') {counter = 1;};
Als (args == "2") {counter = 2;};
Als (args == "3") {counter = 3;};
Als (args == "4") {counter = 4;};
Als (args == "5") {counter = 5;};
Als (args == "6") {counter = 6;};
Als (args == "7") {counter = 7;};
Als (args == "8") {counter = 8;};
Als (args == "9") {counter = 9;};
Als (args == "10") {counter = 10;};
Als (args == "11") {counter = 11;};
Als (args == "12") {counter = 12;};
Als (args == "13") {counter = 13;};
Als (args == "14") {counter = 14;};
Als (args == "15") {counter = 15;};
Als (args == "16") {counter = 16;};
het argument van de webpagina knoppen is
geladen in de teller voor het beheersen van de for-lus
Visual test voor de goede werking van de gegevens van de webpagina
doorberekend muis knop te klikken
voor (teller; teller > 0; teller--)
{digitalWrite(D7,LOW);
delay(200);
digitalWrite(D7,HIGH);
delay(200);
digitalWrite(D7,LOW); }
remoteTriggered = true; retourneren van 200; }
/ * EINDE WEBPAGINA HANDLER * /