Paso 11: Modifica el código de arduino para su equipo – nuevo código de
En la parte inferior del código encontrará métodos individuales para cada interruptor o luz (por ejemplo cocina, mesita de noche, etc.). Cuando se agrega un elemento nuevo o si desea cambiar las que ya existen que esta es la sección que usted tendrá que editar primero. La estructura de un individuo método de encendido es:
void switchName (boolean en, multioff boolean) {}
Los dos valores booleanos son si el interruptor debe ser activada (true) o apagado (falso) y la segunda es si debe apagar cualquier tiempo tiempos de funcionamiento (para asegurarse de que las cosas al azar no activar o desactivar si terminas que requieren un tiempo de ejecución antes de que espera que esté terminado).
El si la instrucción en el método determina si el interruptor del encendido o apagado mediante una línea de código que es similar a esto:
setOnOff (x, x, a);
Esto llama a un método llamado "setOnOff". El código para esto se puede ver hacia el fondo del boceto. Este se encarga del rodaje y de los dispositivos y para la retroalimentación a través del puerto serial. La disposición del código es:
setOnOff (grupo de int, enchufe int, boolean en)
El valor booleano "en" método de cada dispositivo ya dice si quieres activar o desactivar, por lo que sólo necesitará cambiar el grupo y conecte los valores para cada dispositivo. Por ejemplo si quería encender el enchufe 4 en el grupo 3, entonces debería escribir:
setOnOff (3, 4, a);
Desplazamiento hacia abajo aproximadamente mitad de camino, hay una sección de encabezado
"/ / En la siguiente sección es para dar vuelta encendido y apagado de dispositivos individuales / /"
Esta es la sección siguiente que tendrá que abordarse.
A continuación 12 líneas de código de aspecto muy similar para las diferentes aparatos y luces.
La primera línea de cada uno sigue la misma estructura:
else if (packBuff [0] = 'P' & & packBuff [1] == 'x' & & packBuff [2] == 'x')
Esta es la sección en la que especifique que selector de teléfono son arbitraje a. Por ejemplo, si desea especificar qué se debe hacer al pulsar un botón que está configurado para enviar el mensaje P04 cambiaría el código anterior para:
else if (packBuff [0] = 'P' & & packBuff [1] == '0' & & packBuff [2] == '4')
Porque cambia todas tiene dos mensajes que pueden ser enviados (siguiendo con el ejemplo de P04 puede ser P04H o P04L dependiendo del estado la palanca ha sido cambiado a) tiene que haber alguna lógica para procesar los dos por separado. Como empiezan con P04 poco tiene sentido tener un segundo ubicado si declaración.
Si (packBuff [3] == 'H') {}
Esto dice el código, qué hacer si se enciende. Las líneas de declaración dos menores:
Else {}
Dice el código qué hacer si la última letra no es H (es decir, L) que significa que puede especificar lo que usted quiere hacer cuando está apagada.
Si usted está usando un botón en lugar de un palanca puede conseguir eliminar el ubicado si función ya que no será un adicional H o L en el mensaje.
La línea de código justo debajo del if "(packBuff [3] == 'H') {" es la acción a tomar cuando está encendido. Por ejemplo si desea que la lámpara de escritorio para activar llamar al método de "escritorio" y Dile que quieres que sea en y que quieres que Apague cualquier tiempos de ejecución que actualmente:
escritorio (true, true);
En la sentencia "else" desea activar el interruptor mismo y otra vez para cancelar cualquier tiempos de funcionamiento que están actualmente en acción:
escritorio (false, true);
Si desea que este botón particular no Apague cualquier tiempos de funcionamiento entonces la segunda variable debe establecerse en false (es decir (true, false); y escritorio (false, false);)
La siguiente etapa es botones que, cuando se presiona, afectará a más de un zócalo del enchufe (por ejemplo, encender o apagar la TV, Xbox y sistema de sonido o las luces de encendido/apagado de entretenimiento). Estos simplemente tienes más de uno que se llama al método dispositivo individual (ver ejemplos de esto ya en el código).
La sección un poco más involucrada es la sección de "run-time". Configuración de automatizaciones de sincronización requiere algunos cambios más.
La primera cosa a hacer es declarar dos variables antes de void(setup). Uno int que actuará como un valor booleano y uno sin firmar largo que va a almacenar el tiempo actual.
Cuando se presiona el botón que desea para activar o desactivar la que quieras hacer algo al principio. Será necesario establecer el signo a la hora actual (en segundos desde el 01 de enero de 1970) y, a continuación, el int a 1 (e.g. teethStart = now.unixtime(); y teethActive = 1;).
Cuando el int == 1 comenzará el tiempo de ejecución. Antes de la sección donde se especifica lo que sucede cuando se pulsa cada botón el tiempo de ejecución debe especificarse. Comienzo con un if instrucción que comprueba si la int == 1. Si es así, entonces iniciar el tiempo de ejecución (por ejemplo, si (teethActive == 1) {}).
La siguiente sección será la primera con los elementos de sincronización. Estableciendo si declaraciones implica tiempo consultas te pueden fijar cosas para encender y apagar en un número dado de segundos después de que inicialmente se presionó el botón.
Por ejemplo, si quieres algo para encender/apagar después de tres minutos luego la sintaxis es:
Si (teethStart + 120 == {} now.unixtime())
Básicamente esto es comprobar si el momento actual es el mismo que el tiempo que se presionó el botón Agregar 120 segundos.
Al final de la declaración en un tiempo de ejecución el int de activación debe establecerse en 0 para que el tiempo de ejecución ya no se comprueba a través de (lo que todo el sistema más eficiente).
La variable int activo (por ejemplo, teethActive) debe añadirse a la declaración de multiOff.
Hay otra sección, que se cerciora de, no más de un tiempo de ejecución puede ejecutarse en cualquier momento. Se mantiene el último de ellos que se convirtió funcionamiento.
En esta sección se suman todos los ints de activación y si la respuesta es mayor que 1 entonces más de uno está activo al mismo tiempo. Si este es el caso entonces se comparan los tiempos en que se iniciaron los tiempos de ejecución y el tiempo de ejecución con el mayor número se mantiene activo. Usted tendrá que añadir cualquier tiempos adicionales a esta sección pero mirando el código que existe ya se debe venir bastante auto explicativo.