Paso 8: Paso 8: Añadir el código de Arduino
• carga Arduino programaYo he conectado el código como un archivo .zip. Aquí está el texto:
/*
A partir de 3:00 de 20 de octubre de 2012 es la versión que funciona con todo lo!
Esta versión se puede cargar 2 dispositivos configurados con un receptor inalámbrico en el pin 4
y un transmisor inalámbrico en el pin 3 (a partir de este tiempo está actualmente en ambos mi dispositivos de prueba)
Vueltas y desactivar un sistema de potencia de salida de luz conectado a digital
PIN 9 al presionar un pulsador conectado al pin 2.
Envía una señal de RF (un mensaje de la letra "A" vía VirtualWire) a otros dispositivos que ejecutan el mismo programa,
causando que se comportan como si su botón se presionó.
Encuestas para los mensajes de RF (usando la biblioteca VirtualWire); recepción de cualquier mensaje en el canal produce unidad
a comportarse como si hubieras presionado el pulsador.
Se debe hacer: Encuesta para un mensaje específico
El circuito:
* LED conectado desde el pin 13 a la tierra (para depuración)
* Externo conectado al pin 9 del circuito de luces
* pulsador conectado al pin 2 de + 5V
* 10K resistencia atado pin 2 de la tierra
Ver JT incompleto OmniGraffle diagrama para un mashup de los anteriores con el circuito de iluminación (sin dispositivos de RF)
http://bildr.org/2011/03/High-Power-Control-with-Arduino-and-tip120/
creado 2005
por DojoDave < http://www.0j0.org>
modificado 30 de agosto de 2011
por Tom Igoe
modificado 20 de octubre de 2012
por Jason Taylor
modificada 08 de noviembre de 2012
por Thomas Deckert
Código de ejemplo original es de dominio público, incluyendo el código de ejemplo de botón de
http://www.Arduino.CC/en/Tutorial/Button
y transmitir y recibir ejemplos de sitio del proyecto VirtualWire
*/
#include < VirtualWire.h >
constantes no va a cambiar. Aquí están acostumbrados a
establecer números de pin:
const int buttonPin = 2; el número de pin pulsador
const int ledPin = 9; el número del pin de salida de luz - recuerda "ledPin" aquí significa "luz externa"
const int RF_TX_PIN = 3; el número de pin para el transmisor
const int RF_RX_PIN = 4; el número de pin para el receptor
const int debugLED = 13; el número de pin para la depuración (por defecto) condujo en el escudo
va a cambiar las variables:
buttonState boolean = false; variable para lectura del estado del pulsador
Boolean oldButtonState = buttonState;
Boolean ledState = false;
Boolean iniciado = false; comienza una secuencia de
waitUntil largo = 0;
largo startTime = 0;
flashStartTime largo = 0;
holdTime int = 12000; duración de la secuencia de pulsado
tiempo de Flash int = 15000; duración de la secuencia de destello completa
estroboscópico de int = 500; duración de un flash
tiempo de ejecución de int = 0;
void setup() {}
Serial.Begin(9600);
Inicializa el pin LED como salida:
pinMode (ledPin, salida);
inicializar el perno pulsador como entrada:
pinMode (buttonPin, entrada);
vw_setup(2000); Bits por seg.
vw_set_tx_pin(RF_TX_PIN); Configuración transmisión pin
vw_set_rx_pin(RF_RX_PIN); Configuración recibir pin.
vw_rx_start(); Iniciar el funcionamiento de receptor PLL
}
void loop() {}
Cada vez que a través de loop(), establece 9 Pin en el mismo valor que la variable de estado
digitalWrite (ledPin, ledState);
leer valor de botón al principio del bucle, antes de hacer nada
buttonState = digitalRead(buttonPin);
desencadenantes más ligera de tiempo cada vez que se presiona el botón--Añadir debounce si el tiempo lo permite
Si (buttonState! = oldButtonState) startSeq(); los cambios de estado de botón tiempo en que agregamos tiempo de luces
cosas para manejar el recibo del mensaje de otro dispositivo de
derecho ahora también extiende tiempo incluso si se presiona botón localmente y a través de la calle al mismo tiempo!
uint8_t buf [VW_MAX_MESSAGE_LEN];
uint8_t buflen = VW_MAX_MESSAGE_LEN;
Si (vw_get_message (buf & buflen)) {/ / no bloqueo
int i;
Serial.Print ("tienes:");
para (i = 0; i < buflen; i ++) {}
digitalWrite (debugLED, HIGH); LED de prueba
Serial.println (buf [i], hexagonal);
}
digitalWrite (debugLED, bajo);
startSeq(); cualquier momento nos aparece un mensaje que añadir tiempo a luces en
}
Si (iniciado) {/ / se pulsa el botón, por lo que
código de intermitencia de trabajo anterior
Si (millis() > = (flashStartTime)) {/ / si LED ha sido más que el tiempo de espera...
Si (millis() < = (flashStartTime + tiempo de Flash)) {/ / enter flash secuencia si no ha entrado aún
Si (((millis() - flashStartTime) % estroboscopio) == 0) {/ / alternar la duración de cada luz estroboscópica. PROBLEMA EN LÍNEA! (dice a Jake)
ledState =! ledState;
Serial.println(Millis() - flashStartTime, DEC);
}
}
Else {(ledState = false); comenzó = false;} / / apagará después secuencia flash
}
}
leer botón valor final del bucle para ver si cambia
oldButtonState = buttonState;
}
¿void startSeq () {/ / así que en la actualidad si el estado del botón cambia en cualquier dirección comenzar otro seq...?
código para enviar un mensaje a otro juego de luces
const char * msg = "A";
digitalWrite (debugLED, true); activar el debug LED
Serial.println("SS");
vw_send ((uint8_t *) msg, strlen(msg));
vw_wait_tx(); Espere hasta que desaparezca todo el mensaje
Serial.println("es");
digitalWrite (debugLED, false); Apagar el LED de depuración
código final para enviar mensaje a otro juego de luces
Ahora vamos a conseguirán parpadeando las luces de este poste!
Iniciado = true;
startTime=millis(); registros cuando en el programa se pulsa el botón
flashStartTime = startTime + holdTime; intermitente la secuencia comenzará después de secuencia
waitUntil = startMillis;
ledState = true; encender LED y comenzar la secuencia cada vez que se presiona el botón
}