Hallo,
hier mal eine kleine "Foto-LoveStory" als weiteres Beispiel für einen Arudino Einsatz: (siehe Anhang)
Folgendes Szenario: billiger Regenmesser vom Ebay (29,95) - elektronik Rausgeworfen, 2 Kabel vom Reed-Kontakt zum Arduino (10€), 4 Kabel vom Arduino zum BCU (30€).
Summe ~70€ - Fertig.
Der Code speichert den "Zählerstand" im EEProm. Außerdem wird die "debouncer" library zum Entprellen eingesetzt. Links im Code.
Der Code ist noch nicht ganz Fertig - ich muss den Zählerstand noch umrechnen auf die Regenmenge pro Wippenschlag...
Debug-Informationen sind auch noch im Code...
Ich hoffe die Foto-Lovestory gefällt euch :-)
Gruß
Thorsten
hier mal eine kleine "Foto-LoveStory" als weiteres Beispiel für einen Arudino Einsatz: (siehe Anhang)
Folgendes Szenario: billiger Regenmesser vom Ebay (29,95) - elektronik Rausgeworfen, 2 Kabel vom Reed-Kontakt zum Arduino (10€), 4 Kabel vom Arduino zum BCU (30€).
Summe ~70€ - Fertig.
Der Code speichert den "Zählerstand" im EEProm. Außerdem wird die "debouncer" library zum Entprellen eingesetzt. Links im Code.
Der Code ist noch nicht ganz Fertig - ich muss den Zählerstand noch umrechnen auf die Regenmenge pro Wippenschlag...
Debug-Informationen sind auch noch im Code...
Code:
#include <EEPROM.h> // Zum permanent speichern des Zählers im EEPROM // Erweiterung zum Speichern von "anything" im EEPROM http://playground.arduino.cc/Code/EEPROMWriteAnything #include "EEPROMAnything.h" // Bounce2 zum Entprellen http://playground.arduino.cc/Code/Bounce #include <Bounce2.h> // KNX-Library https://bitbucket.org/thorstengehrig/arduino-tpuart-knx-user-forum/ #include <KnxTpUart.h> //Initialize the KNX TP-UART library on the Serial1 port of Arduino Mega KnxTpUart knx(&Serial1, "1.1.7"); const int CounterPin = 2; // definiert den Eingangs-PIN int InputState = 0; // Status des Eingangs int InputStateHIGH = 0; long counter = 0; // Variable zum zählen unsigned long buttonPressTimeStamp; // Instantiate a Bounce object Bounce debouncer = Bounce(); void setup() { Serial.begin(19200); Serial1.begin(19200); UCSR1C = UCSR1C | B00100000; // Even Parity knx.uartReset(); // Diese Zeile auskommentieren wenn EEPROM genullt werden soll // EEPROM_writeAnything(0, counter); EEPROM_readAnything(0, counter); // Lesen des EEPROMs nach Reset Serial.print("Initwert:"); Serial.println(counter); // Setup the Input pinMode(CounterPin, INPUT); // Activate internal pull-up digitalWrite(CounterPin , HIGH); debouncer.attach( CounterPin ); // De-bouncer initialisieren debouncer.interval(30); // Mindestlänge eines Signals = 30ms } void loop() { // Update the debouncer boolean stateChanged = debouncer.update(); // Get the update value int InputState = debouncer.read(); if (stateChanged && InputState == LOW) { counter++; EEPROM_writeAnything(0, counter); //Set timer zum messen der länge buttonPressTimeStamp = millis(); knx.groupWrite4ByteFloat("1/2/3", counter ); InputStateHIGH = 0; Serial.print("Impulse count:"); Serial.println(counter); } if (stateChanged && InputState == HIGH) { Serial.print("Lenght in ms:"); Serial.println(millis() - buttonPressTimeStamp ); } }
Gruß
Thorsten
Kommentar