-all:
- echo "flash serial"
+#ARDUINO_DIR=/opt/arduino
+ARDUINO_SKETCHBOOK = ../
+
+BOARD_TAG = pro5v328
+include /usr/share/arduino/Arduino.mk
pi=10.60.1.201
flash:
- scp `ls -t /tmp/build*.tmp/*.hex | head -1` pi@${pi}:/tmp/arduino.hex
+ scp `ls -t build-*/*.hex | head -1` pi@${pi}:/tmp/arduino.hex
ssh pi@${pi} sudo avrdude -c linuxgpio -p atmega328p -U flash:w:/tmp/arduino.hex
serial:
// hardware based on https://dev.wlan-si.net/wiki/Telemetry/sensgw
// original software https://github.com/SloMusti/sensgw
+float runningAverage(float M) {
+ #define LM_SIZE 100
+ static float LM[LM_SIZE]; // LastMeasurements
+ static byte index = 0;
+ static float sum = 0;
+ static byte count = 0;
+
+ // keep sum updated to improve speed.
+ sum -= LM[index];
+ LM[index] = M;
+ sum += LM[index];
+ index++;
+ index = index % LM_SIZE;
+ if (count < LM_SIZE) count++;
+
+ return sum / count;
+}
+
void setup(void)
{
Serial.begin(9600);
pinMode(pir, INPUT);
}
+int count = 0;
+
void loop(void)
{
digitalWrite(led, HIGH);
float pressureKPA = 0, temperatureC = 0;
mpl115a2.getPT(&pressureKPA,&temperatureC);
- Serial.print("Pressure="); Serial.print(pressureKPA, 4); Serial.print(" kPa ");
+
+ if ( count++ % 10 == 0 ) {
+ Serial.print("Pressure="); Serial.print(runningAverage(pressureKPA), 4); Serial.print(" kPa ");
Serial.print("Temp="); Serial.print(temperatureC, 1); Serial.print(" C");
Serial.print(" PIR="); Serial.print( digitalRead(pir) );
Serial.println();
+ } else {
+ runningAverage(pressureKPA);
+ }
+
digitalWrite(led, LOW);
- delay(1000);
+ delay(100);
}