Hi all,
bin nun im ersten semester ET/IT und da wir dort C durchnehmen hab ich mir gedacht kannste das gleich verbinden und ein bischen auf dem PI experimentieren.
gesagt getan habe allerdings noch ein paar fragen aber erstmal zum hintergrund.
Ich habe mir reedkontakte von ebay geordert um fenster und türen zu überwachen.
nun habe ich erstmal nur die zimmertür mit einem kontakt versehen.
wenn der kontakt geschlossen ist liegt an gpio 22 (pin 15) 3.3V an also logisch 1.
Das programm zur abfrage hab ich von dieser [http://raspberrypiguide.de/howtos/raspberry-pi-gpio-how-to/]Seite[/url] und auf meine bedürfnisse ein klein wenig angepasst.
ZitatAlles anzeigen
// WiringPi-Api einbinden
#include <wiringPi.h>// C-Standardbibliothek einbinden
#include <stdio.h>int main() {
// Starte die WiringPi-Api (wichtig)
if (wiringPiSetup() == -1)
return 1;// Schalte GPIO 17 (=WiringPi Pin 0) auf Ausgang
pinMode(6, OUTPUT);// Schalte GPIO 24 (=WiringPi Pin 5) auf Eingang
pinMode(3, INPUT);// Dauerschleife
while(1) {// GPIO lesen wenn kontakt geschlossen dann LED AUS
if(digitalRead(3)==1) {
// LED aus
digitalWrite(6,0 );
printf("Tür ist geschlossen!\n");
}
// GPIO lesen wenn kontakt offen dann Led AN
if(digitalRead(3)==0) {
//LED an
digitalWrite(6,1 );
printf("Tür ist geöffnet !!!\n");}
}
}
- Wenn nun die Tür geöffnet wird wird eine Led auf steckbrett angeschaltet und geht wieder aus wenn die Tür zu ist.
Nun ist es ja so, das die while bedingung 1 ist was heist die while schleife ist endloss....ich weiss leider nicht wieviel so eine endlosschleife an ressourcen zieht ich denke mir aber es müsste doch bestimmt einen eleganteren weg geben eine statusänderung eines gpios oder eines anderen wertes ab zu fragen oder? Es wird so wies jetzt ist ja immer printf bei jedem schleifendurchlauf rein geschrieben möchte dies jedoch nur bei änderung des GPIO zustandes immer nur einmal in der konsole als ausgabe haben wie mach ich das?
-was ich auch gerne machen würde wäre anstatt der leuchtenden Led, Datum und uhrzeit in eine text datei schreiben zu lassen. leider weis ich nicht wie ich dies bewergstelliegen könnte?
die zeitfunktion habe ich bereits. jedoch meckert visual studio rum das die funktion veraltet wären error C4996 habe das zwar mit #pragma warning (disable :4996) ausführbar für visual studio gemacht jedoch weis ich nicht ob ich das nun auch im script im raspberry übernehmen muss.
soo viele fragen so viel text, schonmal vielen dank fürs lesen und eure Zeit.
mfg tree
Edit :Seitenlink wurde gefixt!