Guest User

Untitled

a guest
Jul 16th, 2018
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.64 KB | None | 0 0
  1. #define serOut Serial
  2. #define serOutBps 57600
  3. #define pinWh 7
  4.  
  5. const unsigned long secPerYear = 31556952UL;
  6. const unsigned long msPerHour = 3600000UL;
  7. unsigned long tickLastX, tickLastY;
  8. int keyByte = 0;
  9. int mEffect = 0;
  10.  
  11. void setup() {
  12.   pinMode(pinWh, INPUT);
  13.   serOut.begin(serOutBps);
  14.   tickLastX = 0;
  15.   while(tickLastX == 0) {
  16.     readPulse();
  17.   }
  18. }
  19.  
  20. void report(unsigned long period) {
  21.   serOut.print(mEffect, DEC);
  22.   serOut.println();
  23. }
  24.  
  25. void readPulse() {
  26.   static byte lastX, lastY, newX, newY;
  27.   unsigned long tickNow, period;
  28.  
  29.   tickNow = millis();
  30.   newX = digitalRead(pinWh);
  31.   if(newX == 1 && lastX == 0) {
  32.     period = (tickNow > tickLastX)?(tickNow - tickLastX):((tickNow + 2 ^ 16) - (tickLastX - 2 ^ 16));
  33. //    buffData[buffPtr] = (lastPulse <= tickNow) ? (tickNow - lastPulse) : ((lastPulse - 2 ^ 16) - (tickNow + 2 ^ 16));
  34. //     serOut.print("PwMet-W;");
  35. //     serOut.print(period, DEC);
  36. //     serOut.print(";");
  37. //     serOut.print(msPerHour / period, DEC);
  38. //     serOut.println();
  39.     mEffect = int(msPerHour / period);
  40.     tickLastX = tickNow;
  41.   }
  42.   lastX = newX;
  43. }
  44.  
  45. void loop() {
  46.   readPulse();
  47.  
  48.   if (serOut.available() > 0) {
  49.     keyByte = serOut.read();
  50.    
  51.     if (keyByte == 49) {
  52.       report(mEffect);
  53.     }
  54.   }
  55. }
  56.  
  57.  
  58.  
  59.  
  60.  
  61.  
  62.  
  63. ///PYTHON DAEMON TO READ THE SERIAL
  64.  
  65. #!/usr/bin/python
  66. import serial
  67. import time
  68. import os
  69. ser = serial.Serial('/dev/ttyACM0', 57600)
  70.  
  71. time.sleep(30)
  72. while 1:
  73.     time.sleep(1)
  74.     keybyte = bytes('1', 'UTF-8')
  75.     ser.write(keybyte)
  76.     i = int(ser.readline().strip())
  77.     os.system('rrdtool update /home/jomi/rrd/pwr.rrd N:{0}'.format(i))
Add Comment
Please, Sign In to add comment