Sketch van de zender:
/* HARDWARE
- Arduino Uno Rev 3
- Wireless Inventors Shield RFD21815
- 2 Magnetic contact reed
- 1 gele LED
- 1 weerstand 10 KOhm
*/
/* BELANGRIJKE OPMERKING
Voor programmering via USB, zet Serial switch SW2 op SW
Om de zender te laten werken, zet Serial switch SW2 op HW
*/
/* HANDLEIDING
Zie programma Ontvanger
*/
int magnIn1 = 2 ;
int magnIn2 = 3 ;
int led = 13 ;
int magnStatus1 = 5 ;
int vorigeStatus1 = 0 ;
int magnStatus2 = 5 ;
int vorigeStatus2 = 0 ;
int beginBoodschap = 9 ;
void setup() {
Serial.begin(9600) ;
pinMode(magnIn1,INPUT) ;
pinMode(magnIn1,INPUT) ;
pinMode(led,OUTPUT) ;
Serial.println("Hallo. Ontvangt U mij? Over.");
}
void loop() {
while(Serial.available() == 0) {
// doe niets tot bevestiging ontvanger
}
for(int i=0; i<10; i++) {
digitalWrite(led,HIGH) ;
delay(100) ;
digitalWrite(led,LOW) ;
delay(100) ;
}
while(true) { // eeuwige loop
vorigeStatus1 = magnStatus1 ;
magnStatus1 = digitalRead(magnIn1) ;
if (magnStatus1 != vorigeStatus1) { // verandert poort 1 van status?
digitalWrite(led,HIGH) ;
Serial.print(beginBoodschap);
Serial.write(1) ;
Serial.write(magnStatus1) ; // stuur '911' bij poort toe en '910' bij poort open
delay(1000) ;
digitalWrite(led,LOW) ;
}
vorigeStatus2 = magnStatus2 ;
magnStatus2 = digitalRead(magnIn2) ;
if (magnStatus2 != vorigeStatus2) { // verandert poort 2 van status?
digitalWrite(led,HIGH) ;
Serial.print(beginBoodschap);
Serial.write(2) ;
Serial.write(magnStatus2) ; // stuur '921' bij poort toe en '920' bij poort open
delay(1000) ;
digitalWrite(led,LOW) ;
}
}
}
Sketch van de ontvanger:
/* HARDWARE
- Arduino Uno Rev 3
- Wireless Inventors Shield RFD21815
- 2 groene LED's, 2 rode LED's
- 4 weerstanden 220 Ohm
*/
/* BELANGRIJKE OPMERKING
Voor programmering via USB, zet Serial switch SW2 op SW
Om de zender te laten werken, zet Serial switch SW2 op HW
*/
/* HANDLEIDING
Zet eerst de ontvanger aan.
Wanneer de 4 leds branden is de ontvanger klaar.
Zet dan de zender aan.
De ontvanger laat de 4 leds 'draaien' om aan te duiden dat hij de zender gehoord heeft.
De zender laat de gele led 1 sec (10x) pinken om aan te duiden dat hij de ontvanger gehoord heeft.
Vervolgens geeft de ontvanger permanent de status van beide poorten aan:
- een rode led duidt aan dat de garagepoort toe is
- een groene led duidt aan dat de garagepoort open is
Op de zender gaat de gele led 1 sec branden wanneer hij een poortverandering naar de ontvanger stuurt
*/
int karakterIn = 0 ;
int poort = 0 ;
int openToe = 0 ;
int beginBoodschap = 57 ; // dit is ASCII voor '9'
int rodeLedPoort1 = 8 ;
int groeneLedPoort1 = 9 ;
int rodeLedPoort2 = 10 ;
int groeneLedPoort2 = 11 ;
void setup() {
Serial.begin(9600) ;
pinMode(rodeLedPoort1, OUTPUT) ;
pinMode(groeneLedPoort1, OUTPUT) ;
pinMode(rodeLedPoort2, OUTPUT) ;
pinMode(groeneLedPoort2, OUTPUT) ;
digitalWrite(rodeLedPoort1, HIGH) ; // zet 4 leds aan als boodschap gebruiker opstart ontvanger
digitalWrite(groeneLedPoort1, HIGH) ;
digitalWrite(rodeLedPoort2, HIGH) ;
digitalWrite(groeneLedPoort2, HIGH) ;
}
void loop() {
while(Serial.available() == 0) {
// doe niets tot ontvangst
}
// blink 4 leds als boodschap gebruiker zender gehoord
digitalWrite(rodeLedPoort1, LOW) ; // zet 4 leds uit
digitalWrite(groeneLedPoort1, LOW) ;
digitalWrite(rodeLedPoort2, LOW) ;
digitalWrite(groeneLedPoort2, LOW) ;
for(int i=0; i<10; i++) {
digitalWrite(rodeLedPoort1, HIGH) ;
delay(100) ;
digitalWrite(rodeLedPoort1, LOW) ;
digitalWrite(groeneLedPoort1, HIGH) ;
delay(100) ;
digitalWrite(groeneLedPoort1, LOW) ;
digitalWrite(groeneLedPoort2, HIGH) ;
delay(100) ;
digitalWrite(groeneLedPoort2, LOW) ;
digitalWrite(rodeLedPoort2, HIGH) ;
delay(100) ;
digitalWrite(rodeLedPoort2, LOW) ;
delay (100);
}
Serial.print("Ik hoor iets"); // laat aan zender weten dat je hem hoorde
while(true) { // eeuwige loop
if(Serial.available() > 2) { // kijk of er een poortboodschap is
karakterIn = Serial.read() ;
if(karakterIn == beginBoodschap) {
poort = Serial.read() ;
openToe = Serial.read() ;
if(poort == 1) {
digitalWrite(rodeLedPoort1, openToe) ;
digitalWrite(groeneLedPoort1, !openToe) ;
}
if(poort == 2) {
digitalWrite(rodeLedPoort2, openToe) ;
digitalWrite(groeneLedPoort2, !openToe) ;
}
}
}
}
}