Paso 5: Paso 5. Código desarrollo spark.io lado
Hardware preliminar fue presentado con soldadura de punto a punto. Desarrollo de código inicial se hizo con
un .shiftOut clon de arduino 328 (dataPin, clockPin, LSBFIRST, j); fue el primer intstruction utilizado y
se encontró que sólo cambiaría a una palabra un poco.
/*************************************************************/
/ * Spark.io funciones para el procesamiento de página web interacción * /
/ * Bloominglabs Spark.io construir la noche 13 de noviembre y 15 de 2013 * /
/ * por Rex M Marling * /
/ * Actualmente un proyecto en curso para un microprocesador * /
/ * glockenspiel (xilófono). El Spark.io permite wireless * /
/ * con el archivo de html archivo asociado jugar RexOphone * /
/ * Dos 74ls595 cambio registros se están utilizando para ampliar * /
/ * los datos de salida de la spark.io. 03 de enero de 2015 * /
/ * INICIALIZAR datos tipos y función del disparador interrumpir / * / * tipo de datos de caracteres * /
char * songPtr;
/ * TIPO DE DATOS BOOL * /
bool songDone = false;
bool remoteTriggered = false; variable de estado global para la función remoteTrigger()
/ * TIPO DE DATOS BYTE *
default_dur /byte = 4;
byte default_oct = 6;
byte lowest_oct = 3;
Nota de bytes; escala de bytes;
/ * TIPO DE DATOS INT * /
int x; puntero de int;
int resultado;
int bpm = 63;
int num;
int clr = 7;
int datos = 3;
int reloj = 4;
cierre de int = 5;
permiten int = 6;
int contador;
/ * TIPO DE DATOS UNSIGNED INT * /
unsigned int Nota;
unsigned int máscara;
/ * la siguiente int sin signo se asignan para 16 notas * /
unsigned int a1 = 0x0001;
unsigned int b1 = 0x0002;
unsigned int c1 = 0x0004;
c1p unsigned int = 0x0008;
unsigned int d1 = 0x0010;
unsigned int d1p = 0x0020;
unsigned int e1 = 0x0040;
unsigned int f1 = 0x0080;
f1p unsigned int = 0x0100;
unsigned int g1 = 0x0200;
g1p unsigned int = 0x0400;
unsigned int a2 = 0 x 0800;
unsigned int ap2 = 0x1000;
unsigned int b2 = 0x2000;
unsigned int c2 = 0 x 4000;
unsigned int n [] = {0x8000 0 x 4000, 0x2000, 0x1000, 0 x 0800, 0x0400, 0x0200, 0x0100, 0x0080, 0x0040, 0x0020, 0x0010, 0x0008, 0x0004, 0x0002, 0x0001};
/ * TIPO DE DATOS LARGO * /
wholenote largo;
de larga duración;
/ * DEFINE * /
#define DEBUG = false;
/ * PUERTOS DE DATOS DE CONFIGURACIÓN Y ACTIVACIÓN DE LA INTERRUPCIÓN * /
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); }
/ * PUERTO DE DATOS DE CONFIGURACIÓN FINAL Y GATILLO DE INTERRUPCIÓN * /
/ * BUCLE principal * / void loop(void) {}
/ * El loop() principales procesos de la web botón haga clic en una nota a la vez. */
/ * evitar bloquear las tareas de fondo demasiado * /
/ * o bien el núcleo de la chispa se desconecte desde la nube. */
{if(remoteTriggered)}
digitalWrite(D7,HIGH);
Luz del LED azul a bordo mientras los juegos de la canción};
Delay(600);
digitalWrite(D7,LOW);
Apagar el LED azul a bordo.
remoteTriggered = false;
if(debug) Serial1.println("Done!");
Delay(2000); }
{
el siguiente código fue diseñado para una 16 bits del reloj
unsigned int "NOTA datos arriba" a través de 2 x 74ls595
cambio de registros que sólo transfiere la función shiftOut
8 bits de datos
Sintaxis de
shiftOut (dataPin, clockPin, bitOrder, valor)
Parámetros
dataPin: el pin en el que a salida de cada bit (int)
clockPin: el perno para cambiar una vez el dataPin se ha ajustado en el valor correcto (int)
bitOrder: que orden para cambiar de puesto hacia fuera los pedacitos; MSBFIRST o LSBFIRST.
(Más significativo Bit primero o Bit menos significativo primero)
valor: los datos para cambiar de puesto hacia fuera. (bytes)
Serial.println ("empezar"); para (puntero = 0; puntero < = 15; puntero ++) {mask = 0x8000; / / & B1000000000000000 Nota = n [puntero]; Serial.println(Note); para (x = 0; x < = 16; x ++) {resultado = Nota & Máscara; máscara = mascarilla >> 1; si (resultado > 0) {digitalWrite(data,HIGH); Serial.println ("alto"); }
if(result == 0) {digitalWrite(data,LOW); Serial.println ("bajo");} digitalWrite(clock,LOW); retardo (15); digitalWrite(clock,HIGH); };
bucle interno final
digitalWrite(latch,LOW);
Delay(15);
digitalWrite(latch,HIGH);
Delay(15);
digitalWrite(enable,LOW);
Delay(15);
digitalWrite(enable,HIGH);
Delay(250); };
lazo externo final
activar salida enable para 74ls595 tocar nota "coche salida darlington transistores" y luego regresará a tristate
}
/**************************************************************/ /* */ /* END MAIN LOOP */ /**************************************************************
/ / * DISPARADOR DE CHISPA. IO-DEVICE * / / *** / int remoteTrigger (String args) {si (args == "1") {contador = 1;};
Si (args == "2") {contador = 2;};
Si (args == "3") {contador = 3;};
Si (args == "4") {contador = 4;};
Si (args == "5") {contador = 5;};
Si (args == "6") {contador = 6;};
Si (args == "7") {contador = 7;};
Si (args == "8") {contador = 8;};
Si (args == "9") {contador = 9;};
Si (args == "10") {contador = 10;};
Si (args == "11") {contador = 11;};
Si (args == "12") {contador = 12;};
Si (args == "13") {contador = 13;};
Si (args == "14") {contador = 14;};
Si (args == "15") {contador = 15;};
Si (args == "16") {contador = 16;};
es el argumento que se pasa de los botones de la página web
carga en el contador para controlar el bucle for
prueba visual para el buen funcionamiento de los datos de la página web
pasa sobre el botón del ratón
para (contador; contador > 0; contador--)
{digitalWrite(D7,LOW);
Delay(200);
digitalWrite(D7,HIGH);
Delay(200);
digitalWrite(D7,LOW); }
remoteTriggered = true; volver 200; }
/ * CONTROLADOR DE LA PÁGINA WEB DE FINAL * /