Paso 4: Subir la programación
Usted necesitará descargar e instalar la biblioteca de RF24
https://github.com/maniacbug/RF24
(Haga clic en "Descarga ZIP" en la parte inferior derecha de la página)
Una vez hayas descargado el ZIP, debería ver una carpeta llamada RF24-master.ZIP. Cambiar el nombre de este archivo a sólo RF24. ZIP. Haga doble clic en el archivo ZIP y veremos una carpeta ZIP no también llamada
RF24-master. Cambie el nombre esta RF24 sólo así.
Copie y pegue los programas en el IDE de Arduino y subirlas a los dispositivos correspondientes.
Recursos:
Cómo instalar bibliotecas
http://Arduino-info.wikispaces.com/Arduino-Libraries
Cómo utilizar Arduino
http://Arduino.CC/en/Guide/homepage
Programa del receptor:
--------------------------------------------------------------------------------------------------------------------------
/ * Infra rojo perímetro detección dispositivo receptor
Lo que hace:
Recibe una señal desde el transmisor
Movimiento de la muestra en una pantalla de LCD
Parpadea pantalla LCD luz de fondo y el indicador de LEDs
Por favor, utilizar y mejorar esta programación de ninguna manera
¡ Disfrute!
*/
#include < LiquidCrystal.h >
#include < SPI.h >
#include < nRF24L01.h >
#include < RF24.h >
/ *---(Declarar constantes y perno números)---* /
#define CE_PIN 9
#define CSN_PIN 10
Nota: la "LL" al final de la constante es de tipo "Largo"
const uint64_t tubo = 0xE8E8F0F0E1LL; Definir la tubería de transmisión
/ *---(Declarar objetos)---* /
RF24 radio (CE_PIN, CSN_PIN); Crear una Radio
/ *---(Declarar Variables)---* /
sensor de int [2]; matriz de 2 elementos con lecturas de Joystick
inicializar la biblioteca con los números de los pines de interfaz
LiquidCrystal lcd (7, 6, 5, 4, 3, 2);
el tiempo nos da el sensor a calibrar (10 a 60 segundos según la hoja de datos)
int calibrationTime = 10;
el momento cuando el sensor produce un impulso de baja
tiempo unsigned int lowIn;
la cantidad de milisegundos que el sensor tiene que ser bajo
antes de asumir todo el movimiento se ha detenido
pausa larga unsigned int = 1000;
Boolean lockLow = true;
takeLowTime Boolean;
int ledPin = 8;
/////////////////////////////
PROGRAMA DE INSTALACIÓN
void setup() {}
Serial.Begin(9600);
pinMode (ledPin, salida);
fijar número la pantalla del LCD de filas y columnas:
LCD.Begin (16, 2);
Imprimir un mensaje en la pantalla LCD.
LCD.Print "(detección del perímetro del);
radio.Begin();
radio.openReadingPipe(1,pipe);
radio.startListening();
dar el sensor de tiempo para calibrar
Serial.Print ("calibración sensor");
establecer el cursor a la columna 0, línea 1
(Nota: la línea 1 es la segunda fila, ya que cuenta comienza con 0):
lcd.setCursor (0, 1);
imprimir el número de segundos desde puesta a cero:
LCD.Print("calibrating");
para (int i = 0; i < calibrationTime; i ++) {}
Serial.Print(".");
Delay(1000);
}
Serial.println ("hecho");
Serial.println ("SENSOR activo");
lcd.setCursor (0, 1);
LCD.Print ("activo");
Delay(50);
}
////////////////////////////
LAZO
void loop() {}
Si (radio.available())
{
Leer la carga de datos hasta que hemos recibido todo
bool = false;
mientras (! hecho)
{
Obtener la carga de datos
= radio.read (sensor, sizeof(sensor));
Serial.println(sensor[0]);
}
Si (sensor [0] == 1) {}
digitalWrite (ledPin, HIGH); el led visualiza el estado de pin de salida de sensores
{if(lockLow)}
se cerciora de que esperamos una transición a la baja antes de cualquier salida de más:
lockLow = false;
Serial.println("---");
Serial.Print ("movimiento detectado en");
lcd.setCursor (0, 1);
LCD.Print ("Motion");
Serial.Print(Millis()/1000);
Serial.println ("sec");
Delay(500);
digitalWrite (ledPin, LOW);
Delay(500);
digitalWrite (ledPin, HIGH);
Delay(500);
digitalWrite (ledPin, LOW);
Delay(500);
digitalWrite (ledPin, HIGH);
Delay(500);
digitalWrite (ledPin, LOW);
}
takeLowTime = true;
}
Si (sensor [0] == 0) {}
digitalWrite (ledPin, LOW); el led visualiza el estado de pin de salida de sensores
{if(takeLowTime)}
lowIn = millis(); ahorrar el tiempo de la transición de alto a bajo
takeLowTime = false; Asegúrese de que esto sólo se hace en el inicio de una fase
}
Si el sensor está bajo más de la pausa dada,
asumimos que no hay movimiento más va a pasar
Si (! lockLow & & millis() - lowIn > pausa) {}
hace que este bloque de código es sólo se ejecuta después de
se ha detectado una nueva secuencia de movimiento
lockLow = true;
Serial.Print ("movimiento terminada en"); salida
lcd.setCursor (0, 1);
LCD.Print ("activo");
Serial.Print((Millis() - pausa) / 1000);
Serial.println ("sec");
Delay(50);
}
}
}
}
------------------------------------------------------------------------------------------------------------------------
Programa del transmisor
------------------------------------------------------------------------------------------------------------------------
/ * Infra rojo perímetro detección dispositivo transmisor
Lo que hace:
Utiliza un sensor PIR para detección de movimiento
Parpadea un luz infrarroja cuando se detecta movimiento
Envía una señal inalámbrica al receptor
Por favor, utilizar y mejorar esta programación de ninguna manera
¡ Disfrute!
/
/ *---(Importación necesita bibliotecas)---* /
#include < SPI.h >
#include < nRF24L01.h >
#include < RF24.h >
#include < RF24_config.h >
/ *---(Declarar constantes y perno números)---* /
#define CE_PIN 9
#define CSN_PIN 10
#define SENSOR 8
Nota: la "LL" al final de la constante es de tipo "Largo"
const uint64_t tubo = 0xE8E8F0F0E1LL; Definir la tubería de transmisión
/ *---(Declarar objetos)---* /
RF24 radio (CE_PIN, CSN_PIN); Crear una Radio
/ *---(Declarar Variables)---* /
sensor de int [2]; matriz de 2 elementos con lecturas de Sensor
int ledPin = 7;
void setup() / *** instalación: funciona una vez *** /
{
Serial.Begin(9600);
radio.Begin();
pinMode (ledPin, salida);
radio.openWritingPipe(pipe);
digitalWrite (ledPin, LOW);
} //--(end configuración)---
void loop() / *** LOOP: funcionamientos constantemente *** /
{
sensor [0] = digitalRead(SENSOR);
radio.Write (sensor, sizeof(sensor));
Serial.Print (sensor [0]);
Si (sensor [0] == 1) {}
digitalWrite (ledPin, HIGH);
Delay(500);
digitalWrite (ledPin, LOW);
Delay(500);
digitalWrite (ledPin, HIGH);
Delay(500);
digitalWrite (ledPin, LOW);
Delay(500);
digitalWrite (ledPin, HIGH);
Delay(500);
digitalWrite (ledPin, LOW);
}
} //--(end de bucle principal)---
------------------------------------------------------------------------------------------------------------------------