Paso 10: Modificando el código de arduino para su equipo – el viejo código
Este paso se ocupará con el viejo código:
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 que tendrá que abordarse primero.
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 frase si 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 te refieres. 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 todo cambia tiene dos mensajes que pueden ser enviados (siguiendo con el ejemplo de P04 puede ser P04H o P04L dependiendo del estado que se ha cambiado la palanca) tiene que haber alguna lógica para procesar los dos por separado. Como empiezan con P04 tiene sentido tener una segunda instrucción ubicado si .
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 que puede deshacerse de la declaración ubicado si no habrá 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.
setOnOff (3, 1, true);
Esto llama a un método llamado "setOnOff". El código para esto se puede ver en la parte inferior del boceto. Se encarga de encender los dispositivos y apagado 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)
Así que, si quería el enchufe que se configuración como grupo 3, canal 4 para activar que escribiría:
setOnOff (3, 4, true)
Si quería apagar el enchufe mismo escribiría:
setOnOff (3, 4, false);
Para modificar el simple encendido de dispositivos individuales, necesitará rellenar los mensajes correctos a leer (por ejemplo el P04 en el ejemplo anterior) y rellene el interruptor correcto ser afectado y si desea encender o apagar (por ejemplo, el switchOnOff (3, 4, verdadero) en el ejemplo anterior).
Al final de cada turno de encendido/apagado de cada aparato individual hay otra línea de código:
multiOff = 1
Esta línea significa que, cuando se presiona el botón, se detendrá cualquier tiempo de ejecución que implica retrasado en / offs. Su propósito es dejar nada al azar se convirtió o apagado cuando haya terminado la actividad antes de lo que el plazo estaba esperando tiempo. Si no desea que un determinado botón Cancelar tiempos actuales entonces comentar o borrar este bit del código.
La siguiente etapa se ocupa de 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). Para estos usted sencillamente han más de un "switchOnOff" del término (ver ejemplos de esto ya en el código).
La sección siguiente, 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 sin firmar largo que va a almacenar el tiempo actual.
Cuando se pulsa un botón de tiempo de ejecució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. Se debe especificar el tiempo de ejecución antes de la sección en que estado lo que ocurre cuando se pulsa cada botón. Comience con una instrucción if 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. Establecer si las declaraciones que implican consultas de tiempo puede establecer 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 dos 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 plus 120 segundos.
Al final de una instrucción de 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 que no más de un tiempo de ejecución puede estar activo 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 el resultado es mayor que 1, tiempo de ejecución más de una 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 (el uno que empezó pasado) se mantiene activado. Usted tendrá que añadir cualquier tiempos de funcionamiento adicionales a esta sección pero mirando el código que existe ya debe ser bastante autoexplicativo.