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