Trådlösa Infra Red Perimeter enheten (4 / 7 steg)
Steg 4: Ladda upp programmering
Du kommer att behöva ladda ner och installera RF24 biblioteket
https://github.com/maniacbug/RF24
(Klicka på "Hämta ZIP" längst ned till höger på sidan)
När du har laddat ner ZIP, bör du se en mapp som heter RF24-master.ZIP. Byta namn på filen till bara RF24. ZIP. Dubbelklicka på ZIP och du bör se en icke-ZIP mapp kallas också
RF24-master. Namn på detta till bara RF24 också.
Kopiera och klistra in programmen i Arduino IDE och ladda upp dem till motsvarande enheter.
Resurser:
Hur man installerar bibliotek
http://Arduino-info.wikispaces.com/Arduino-libraries
Hur du använder Arduino
http://Arduino.cc/en/guide/homepage
Mottagare Program:
--------------------------------------------------------------------------------------------------------------------------
/ * Infra röd Perimeter detektering enhet mottagare
Vad det gör:
Tar emot en signal från sändaren
Visar förslag på en LCD-display
Blinkar LCD bakgrundsbelysning och indikator lysdioder
Använd och förbättra denna programmering på något sätt
Njut!
*/
#include < LiquidCrystal.h >
#include < SPI.h >
#include < nRF24L01.h >
#include < RF24.h >
/ *---(Deklarera konstanter och Pin nummer)---* /
#define CE_PIN 9
#define CSN_PIN 10
Obs: "LL" i slutet av konstanten är "LongLong" typ
CONST uint64_t pipe = 0xE8E8F0F0E1LL; Definiera sändnings röret
/ *---(Deklarera objekt)---* /
RF24 radio (CE_PIN, CSN_PIN); Skapa en Radio
/ *---(Deklarera variabler)---* /
int sensor [2]. matris med 2 element håller Joystick avläsningar
initiera bibliotek med numrerar av gränssnittet stiften
LiquidCrystal lcd (7, 6, 5, 4, 3, 2);
den tid som vi ger sensorn för att kalibrera (10-60 SEK enligt databladet)
int calibrationTime = 10;
tiden när sensorn utgångar en låga impuls
länge osignerade int lowIn;
mängden millisekunder sensorn har låg
innan vi antar all rörelse har slutat
länge osignerade int paus = 1000;
booleska lockLow = sant;
booleska takeLowTime;
int ledPin = 8;
/////////////////////////////
SETUP
void setup() {
Serial.BEGIN(9600);
pinMode (ledPin, produktionen);
Ange den LCD antal kolumner och rader:
LCD.BEGIN (16, 2);
Skriv ut ett meddelande till LCD-skärmen.
LCD.Print ("Perimeter Detection");
radio.BEGIN();
radio.openReadingPipe(1,pipe);
radio.startListening();
ge sensorn lite tid att kalibrera
Serial.Print ("kalibrera sensorn");
ställa markören till kolumn 0, linje 1
(Obs: linje 1 är den andra raden, sedan räknar börjar med 0):
lcd.setCursor (0, 1);
skriva ut antalet sekunder sedan återställning:
LCD.Print("Calibrating");
för (int jag = 0; jag < calibrationTime; i ++) {
Serial.Print(".");
Delay(1000);
}
Serial.println ("gjort");
Serial.println ("sensorn aktiv");
lcd.setCursor (0, 1);
LCD.Print ("aktiva");
Delay(50);
}
////////////////////////////
LOOP
void loop() {
om (radio.available())
{
Läs datanyttolasten tills vi har fått allt
bool = false;
medan (! gjort)
{
Hämta datanyttolasten
klart = radio.read (sensor, sizeof(sensor));
Serial.println(sensor[0]);
}
om (sensor [0] == 1) {
digitalWrite (ledPin, hög); den ledde visualiserar sensorer utdata pin staten
IF(lockLow) {
ser till att vi väntar på en övergång till låg innan någon ytterligare utgång görs:
lockLow = false;
Serial.println("---");
Serial.Print ("rörelse upptäckts på");
lcd.setCursor (0, 1);
LCD.Print ("Motion");
Serial.Print(Millis()/1000);
Serial.println ("sec");
Delay(500);
digitalWrite (ledPin, låg);
Delay(500);
digitalWrite (ledPin, hög);
Delay(500);
digitalWrite (ledPin, låg);
Delay(500);
digitalWrite (ledPin, hög);
Delay(500);
digitalWrite (ledPin, låg);
}
takeLowTime = sant;
}
om (sensor [0] == 0) {
digitalWrite (ledPin, låg); den ledde visualiserar sensorer utdata pin staten
IF(takeLowTime) {
lowIn = millis(); Spara tiden för övergången från hög till låg
takeLowTime = false; se till att detta görs endast i början av en låg fas
}
om sensorn är låg för mer än den givna pausen,
Vi antar att ingen mer motion som kommer att hända
om (! lockLow & & millis() - lowIn > pausa) {
gör säkert detta kodblock endast körs igen efter
ett nytt förslag sekvens har upptäckts
lockLow = sant;
Serial.Print ("motion slutade på"); utgång
lcd.setCursor (0, 1);
LCD.Print ("aktiva");
Serial.Print((Millis() - paus) / 1000);
Serial.println ("sec");
Delay(50);
}
}
}
}
------------------------------------------------------------------------------------------------------------------------
Sändaren programmet
------------------------------------------------------------------------------------------------------------------------
/ * Infra röd Perimeter upptäcka enheten sändare
Vad det gör:
Använder en PIR-sensor för att upptäcka rörelse
Blinkar en IR-ljus när rörelse detekteras
Sänder en trådlös signal till mottagaren
Använd och förbättra denna programmering på något sätt
Njut!
/
/ *---(Import behövs bibliotek)---* /
#include < SPI.h >
#include < nRF24L01.h >
#include < RF24.h >
#include < RF24_config.h >
/ *---(Deklarera konstanter och Pin nummer)---* /
#define CE_PIN 9
#define CSN_PIN 10
#define SENSOR 8
Obs: "LL" i slutet av konstanten är "LongLong" typ
CONST uint64_t pipe = 0xE8E8F0F0E1LL; Definiera sändnings röret
/ *---(Deklarera objekt)---* /
RF24 radio (CE_PIN, CSN_PIN); Skapa en Radio
/ *---(Deklarera variabler)---* /
int sensor [2]. matris med 2 element håller sensormätningar
int ledPin = 7.
void setup() / *** SETUP: kör en gång *** /
{
Serial.BEGIN(9600);
radio.BEGIN();
pinMode (ledPin, produktionen);
radio.openWritingPipe(pipe);
digitalWrite (ledPin, låg);
} //--(end setup)---
void loop() / *** LOOP: kör ständigt *** /
{
sensor [0] = digitalRead(SENSOR);
radio.write (sensor, sizeof(sensor));
Serial.Print (sensor [0]);
om (sensor [0] == 1) {
digitalWrite (ledPin, hög);
Delay(500);
digitalWrite (ledPin, låg);
Delay(500);
digitalWrite (ledPin, hög);
Delay(500);
digitalWrite (ledPin, låg);
Delay(500);
digitalWrite (ledPin, hög);
Delay(500);
digitalWrite (ledPin, låg);
}
} //--(end huvudloop)---
------------------------------------------------------------------------------------------------------------------------