Spark.IO bygga natt Rex-o-telefon wifi xylofon (5 / 6 steg)
Steg 5: Steg 5. Koden spark.io utvecklingssidan
Preliminära hårdvara lades ut med punkt till punkt lödning. Första koden utveckling gjordes med
en arduino 328 klon .shiftOut (dataPin, clockPin, LSBFIRST, j); var den första intstruction används och det
konstaterades att det bara skulle flytta ut en lite för word.
/*************************************************************/
/ * Spark.io funktioner för bearbetning webbsida interaktion * /
/ * Bloominglabs Spark.io bygga natten den 13 november och 15 2013 * /
/ * av Rex M Marling * /
/ * För närvarande ett projekt pågår för en microcontrolled * /
/ * klockspel (xylofon). Spark.io möjliggör trådlös * /
/ * samverkar med den associerade fil spela RexOphone html fil * /
/ * Två 74ls595 SKIFT register änvänds för att expandera * /
/ * utdata från spark.io. Jan 3 2015 * /
/ * INITIERA DATA typer och UTLÖSA avbryta funktion / * / * karaktär datatyp * /
char * songPtr;
/ * DATATYPEN BOOL * /
bool songDone = false;
bool remoteTriggered = false; globala tillståndet variabel för remoteTrigger() funktion
/ * BYTE DATATYP *
/byte default_dur = 4;
byte default_oct = 6;
byte lowest_oct = 3;
byte Obs; byte skala.
/ * INT DATATYP * /
int x; int pekaren;
int resultatet;
int bpm = 63.
int num;
int clr = 7.
int data = 3;
int clock = 4;
int spärren = 5;
int aktiverar = 6;
int counter;
/ * UNSIGNED INT DATATYP * /
unsigned int Obs;
unsigned int mask;
/ * den följande osignerade int tilldelas för 16 anteckningar * /
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};
/ * LÅNG DATATYP * /
lång wholenote;
lång varaktighet;
/ * DEFINIERAS * /
#define DEBUG = false;
/ * SETUP DATAPORTAR OCH UTLÖSA AVBROTT * /
void 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); }
/ * AVSLUTA INSTALLATIONSPROGRAMMET DATAPORTAR OCH UTLÖSA AVBROTT * /
/ * MAIN LOOP * / void loop(void) {
/ * Den viktigaste loop() bearbetar webben knappen klicka en ton i taget. */
/ * undvika att blockera bakgrundsaktiviteter för länge * /
/ * eller annan gnista kärnan skulle koppla från molnet. */
IF(remoteTriggered) {
digitalWrite(D7,HIGH);
Ljus ombord blå LED medan låten spelas upp};
Delay(600);
digitalWrite(D7,LOW);
Stänga av den inbyggda blå LED.
remoteTriggered = false;
IF(debug) Serial1.println("Done!");
Delay(2000); }
{
följande kod var avsedd att klocka en 16-bitars
unsigned int "OBS ovanstående data" genom 2 x 74ls595
skifta register shiftOut funktionen överför endast
8 bitar data
syntax
shiftOut (dataPin, clockPin, bitOrder, värde)
Parametrar
dataPin: stiftet på som att mata varje bit (int)
clockPin: PIN-koden för att växla en gång dataPin har angetts till korrekt värde (int)
bitOrder: som för att skifta ut bitarna; antingen MSBFIRST eller LSBFIRST.
(Mest signifikanta Bit först, eller, minst signifikanta Bit först)
värde: data att flytta ut. (byte)
Serial.println ("börja"); för (pekaren = 0; pekaren < = 15; pekaren ++) {mask = 0x8000; / / & B1000000000000000 Obs = n [pekaren]; Serial.println(Note); för (x = 0; x < = 16; x ++) {resultatet = Obs & mask, mask = maskera >> 1; om (resultatet > 0) {digitalWrite(data,HIGH); Serial.println ("hög"); }
IF(result == 0) {digitalWrite(data,LOW); Serial.println ("low");} digitalWrite(clock,LOW); fördröjning (15). digitalWrite(clock,HIGH); };
slutet inre loop
digitalWrite(latch,LOW);
Delay(15);
digitalWrite(latch,HIGH);
Delay(15);
digitalWrite(enable,LOW);
Delay(15);
digitalWrite(enable,HIGH);
Delay(250); };
slutet yttre loopen
Aktivera output enable for 74ls595 spela OBS "drive utdata darlington transistorer" sedan gå tillbaka till tristate
}
/**************************************************************/ /* */ /* END MAIN LOOP */ /**************************************************************
/ / * FJÄRRUTLÖSARE FÖR SPARK. IO-enhet * / / *** / int remoteTrigger (String args) {om (args == "1") {räknare = 1;};
om (args == "2") {räknare = 2;};
om (args == "3") {räknare = 3;};
om (args == "4") {counter = 4;};
om (args == "5") {counter = 5;};
om (args == "6") {räknare = 6;};
om (args == "7") {räknare = 7;};
om (args == "8") {räknare = 8;};
om (args == "9") {räknare = 9;};
om (args == "10") {räknare = 10;};
om (args == "11") {räknare = 11;};
om (args == "12") {räknare = 12;};
om (args == "13") {räknare = 13;};
om (args == "14") {räknare = 14;};
om (args == "15") {räknare = 15;};
om (args == "16") {räknare = 16;};
argumentet som skickades från webbsidan knapparna är
laddas in i disken för att styra den for-loop
visuell test för väl fungerande webbsida data
passerade på mus knapp klick
för (counter, counter > 0; counter--)
{digitalWrite(D7,LOW);
Delay(200);
digitalWrite(D7,HIGH);
Delay(200);
digitalWrite(D7,LOW); }
remoteTriggered = sant; returnera 200. }
/ * SLUTET WEBBSIDA HANDLER * /