Stap 4: Upload de programmering
U zult moeten downloaden en installeren van de RF24-bibliotheek
https://github.com/maniacbug/RF24
(Klik op "Download ZIP" op de rechterbenedenhoek van de pagina)
Zodra u hebt gedownload het ZIP, moet u een map met de naam RF24-master.ZIP. Wijzig de naam van dit bestand alleen RF24. RITS. Tweevoudig tikken voort naar de ZIP en je moet het zien van een niet-ZIP-map, ook wel genoemd
RF24-master. Wijzig dit net zo goed RF24.
Kopieer en plak de programma's in de Arduino IDE en ze uploaden naar de desbetreffende apparaten.
Bronnen:
Hoe bibliotheken te installeren
http://Arduino-info.Wikispaces.com/Arduino-libraries
Het gebruik van de Arduino
http://Arduino.CC/en/Guide/Homepage
Programma van de ontvanger:
--------------------------------------------------------------------------------------------------------------------------
/ * Infra rood omtrek detectie apparaat ontvanger
Wat het doet:
Een signaal ontvangt van de zender
Hiermee wordt beweging op een LCD-scherm
Knippert de LCD achtergrondverlichting en indicator LEDs
Gebruik en verbetering van deze programmering op enigerlei wijze
Geniet van!
*/
#include < LiquidCrystal.h >
#include < SPI.h >
#include < nRF24L01.h >
#include < RF24.h >
/ *---(Verklaar constanten en Pin nummers)---* /
#define CE_PIN 9
#define CSN_PIN 10
Opmerking: de "LL" aan het einde van de constante is "LongLong" type
Const uint64_t pijp = 0xE8E8F0F0E1LL; Definiëren van de transmit pijp
/ *---(Objecten declareren)---* /
RF24 radio (CE_PIN, CSN_PIN); Een Radio maken
/ *---(Declareer variabelen)---* /
int sensor [2]; 2 element array dat Joystick lezingen
initialiseren van de bibliotheek met de nummers van de pennen van de interface
LiquidCrystal lcd (7, 6, 5, 4, 3, 2);
de tijd die we geven de sensor kalibreren (10-60 sec volgens het gegevensblad)
int calibrationTime = 10;
het tijdstip wanneer de sensor een lage impuls uitgangen
lang unsigned int lowIn;
het aantal milliseconden de sensor is laag
voordat we aannemen dat alle beweging is gestopt
lang unsigned int pauze = 1000;
Boole lockLow = waar;
Booleaanse takeLowTime;
int ledPin = 8;
/////////////////////////////
SETUP
VOID Setup {}
Serial.begin(9600);
pinMode (ledPin, OUTPUT);
de LCD's aantal kolommen en rijen instellen:
LCD.begin (16, 2);
Een bericht op het LCD-scherm afdrukt.
LCD.Print ("omtrek detectie");
Radio.begin();
radio.openReadingPipe(1,pipe);
radio.startListening();
de sensor enige tijd te geven om te kalibreren
Serial.Print ("kalibreren sensor");
Stel de cursor op de kolom 0, lijn 1
(Opmerking: lijn 1 is de tweede rij, aangezien tellen met 0 begint):
lcd.setCursor (0, 1);
het aantal seconden sinds reset afdrukken
LCD.Print("Calibrating");
for (int i = 0; ik < calibrationTime; i ++) {}
Serial.Print(".");
delay(1000);
}
Serial.println ("done");
Serial.println ("SENSOR actief");
lcd.setCursor (0, 1);
LCD.Print ("actief");
delay(50);
}
////////////////////////////
LOOP
void loop {}
Als (radio.available())
{
De nettolading aan gegevens lezen totdat we hebben alles ontvangen
BOOL = false;
terwijl (! gedaan)
{
Halen van de nettolading aan gegevens
= radio.read (sensor, sizeof(sensor));
Serial.println(sensor[0]);
}
Als (sensor [0] == 1) {}
digitalWrite (ledPin, hoge); de led visualiseert de sensoren uitvoer pin staat
if(lockLow) {}
zorgt ervoor dat we wachten op een overgang naar lage voordat verdere uitvoer plaatsvindt:
lockLow = false;
Serial.println("---");
Serial.Print ("bewegingsdetectie op");
lcd.setCursor (0, 1);
LCD.Print ("Motion");
Serial.Print(Millis()/1000);
Serial.println ("sec");
delay(500);
digitalWrite (ledPin, laag);
delay(500);
digitalWrite (ledPin, hoge);
delay(500);
digitalWrite (ledPin, laag);
delay(500);
digitalWrite (ledPin, hoge);
delay(500);
digitalWrite (ledPin, laag);
}
takeLowTime = true;
}
Als (sensor [0] == 0) {}
digitalWrite (ledPin, laag); de led visualiseert de sensoren uitvoer pin staat
if(takeLowTime) {}
lowIn = millis(); opslaan van het tijdstip van de overgang van hoog naar laag
takeLowTime = false; Zorg ervoor dat dit gebeurt alleen bij het begin van een lage fase
}
de sensor wordt laag voor meer dan het bepaalde pauze,
Wij gaan ervan uit dat geen meer beweging gaat gebeuren
Als (! lockLow & & millis() - lowIn > onderbreken) {}
maakt zeker dit blok code wordt alleen uitgevoerd na opnieuw
een nieuwe reeks van beweging is gedetecteerd
lockLow = true;
Serial.Print ("motion eindigde op"); uitgang
lcd.setCursor (0, 1);
LCD.Print ("actief");
Serial.Print((Millis() - onderbreken) / 1000);
Serial.println ("sec");
delay(50);
}
}
}
}
------------------------------------------------------------------------------------------------------------------------
Programma van de zender
------------------------------------------------------------------------------------------------------------------------
/ * Infra rood omtrek detectie apparaat zender
Wat het doet:
Maakt gebruik van een PIR-sensor te detecteren beweging
Een IR-licht knippert wanneer er beweging wordt gedetecteerd
Een draadloos signaal stuurt naar de ontvanger
Gebruik en verbetering van deze programmering op enigerlei wijze
Geniet van!
/
/ *---(Invoer nodig bibliotheken)---* /
#include < SPI.h >
#include < nRF24L01.h >
#include < RF24.h >
#include < RF24_config.h >
/ *---(Verklaar constanten en Pin nummers)---* /
#define CE_PIN 9
#define CSN_PIN 10
#define SENSOR 8
Opmerking: de "LL" aan het einde van de constante is "LongLong" type
Const uint64_t pijp = 0xE8E8F0F0E1LL; Definiëren van de transmit pijp
/ *---(Objecten declareren)---* /
RF24 radio (CE_PIN, CSN_PIN); Een Radio maken
/ *---(Declareer variabelen)---* /
int sensor [2]; 2 element array dat Sensor lezingen
int ledPin = 7;
void setup / *** SETUP: loopt eenmaal *** /
{
Serial.begin(9600);
Radio.begin();
pinMode (ledPin, OUTPUT);
radio.openWritingPipe(pipe);
digitalWrite (ledPin, laag);
} //--(end setup)---
void loop / *** lus: loopt voortdurend *** /
{
sensor [0] = digitalRead(SENSOR);
Radio.write (sensor, sizeof(sensor));
Serial.Print (sensor [0]);
Als (sensor [0] == 1) {}
digitalWrite (ledPin, hoge);
delay(500);
digitalWrite (ledPin, laag);
delay(500);
digitalWrite (ledPin, hoge);
delay(500);
digitalWrite (ledPin, laag);
delay(500);
digitalWrite (ledPin, hoge);
delay(500);
digitalWrite (ledPin, laag);
}
} //--(end hoofdlus)---
------------------------------------------------------------------------------------------------------------------------