Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define serOut Serial
- #define serOutBps 57600
- #define pinWh 7
- const unsigned long secPerYear = 31556952UL;
- const unsigned long msPerHour = 3600000UL;
- unsigned long tickLastX, tickLastY;
- int keyByte = 0;
- int mEffect = 0;
- void setup() {
- pinMode(pinWh, INPUT);
- serOut.begin(serOutBps);
- tickLastX = 0;
- while(tickLastX == 0) {
- readPulse();
- }
- }
- void report(unsigned long period) {
- serOut.print(mEffect, DEC);
- serOut.println();
- }
- void readPulse() {
- static byte lastX, lastY, newX, newY;
- unsigned long tickNow, period;
- tickNow = millis();
- newX = digitalRead(pinWh);
- if(newX == 1 && lastX == 0) {
- period = (tickNow > tickLastX)?(tickNow - tickLastX):((tickNow + 2 ^ 16) - (tickLastX - 2 ^ 16));
- // buffData[buffPtr] = (lastPulse <= tickNow) ? (tickNow - lastPulse) : ((lastPulse - 2 ^ 16) - (tickNow + 2 ^ 16));
- // serOut.print("PwMet-W;");
- // serOut.print(period, DEC);
- // serOut.print(";");
- // serOut.print(msPerHour / period, DEC);
- // serOut.println();
- mEffect = int(msPerHour / period);
- tickLastX = tickNow;
- }
- lastX = newX;
- }
- void loop() {
- readPulse();
- if (serOut.available() > 0) {
- keyByte = serOut.read();
- if (keyByte == 49) {
- report(mEffect);
- }
- }
- }
- ///PYTHON DAEMON TO READ THE SERIAL
- #!/usr/bin/python
- import serial
- import time
- import os
- ser = serial.Serial('/dev/ttyACM0', 57600)
- time.sleep(30)
- while 1:
- time.sleep(1)
- keybyte = bytes('1', 'UTF-8')
- ser.write(keybyte)
- i = int(ser.readline().strip())
- os.system('rrdtool update /home/jomi/rrd/pwr.rrd N:{0}'.format(i))
Add Comment
Please, Sign In to add comment