From 310997529bad68e71c5c652ed91483041781387f Mon Sep 17 00:00:00 2001 From: Nicolae Hodos Date: Tue, 4 Apr 2017 19:36:05 +0200 Subject: [PATCH] add temperature sensor --- libraries/Tiny/TempSensor.h | 6 ++-- temp_sensor/temp_sensor.ino | 69 +++++++++++++++++-------------------- 2 files changed, 33 insertions(+), 42 deletions(-) diff --git a/libraries/Tiny/TempSensor.h b/libraries/Tiny/TempSensor.h index 6cd78f7..45a4dbe 100644 --- a/libraries/Tiny/TempSensor.h +++ b/libraries/Tiny/TempSensor.h @@ -10,9 +10,7 @@ public: TinySensor(id, senderPin) { } - unsigned long sendTempAndVoltage(int temp) { - unsigned long value = ID(id) | VCC(readVcc()) | TEMP(temp) | TYPE(6); - sendInfo(value); - return value; + void sendTempAndVoltage(int temp) { + sendInfo(ID(id) | VCC(readVcc()) | TEMP(temp) | TYPE(6)); } }; diff --git a/temp_sensor/temp_sensor.ino b/temp_sensor/temp_sensor.ino index 77a4659..86d7eb6 100644 --- a/temp_sensor/temp_sensor.ino +++ b/temp_sensor/temp_sensor.ino @@ -1,62 +1,55 @@ #include "Arduino.h" #include +#include + +#define DEBUG 0 // Pins -#define SENDER 2 -#define TEMP_PIN 3 +#define SENDER 1 +#define TEMP_PIN A1 #define SENSOR_ID 4 +#if DEBUG +#define RxD 3 +#define TxD 4 +SoftwareSerial AttinySerial(RxD, TxD); +#endif + TempSensor sensor = TempSensor(SENSOR_ID, SENDER); int counter = 0; void setup() { - Serial.begin(9600); - +#if DEBUG + AttinySerial.begin(9600); +#endif sensor.setup(); - -// TinyPower::setup(); -// TinyPower::enableWdt(WDTO_8S); + analogReference(INTERNAL); } void loop() { -// TinyPower::sleep(); - unsigned long value = sensor.sendTempAndVoltage(readTemp()); - Serial.println(value); - delay(5000); + sensor.sendTempAndVoltage(readTemp()); + delay(60000L); } int readTemp() { int reading = analogRead(TEMP_PIN); +#if DEBUG + AttinySerial.println(reading); +#endif - // converting that reading to voltage, for 3.3v arduino use 3.3 - float voltage = reading * 5.0; - voltage /= 1024.0; + float voltage = reading * (1100 / 1024.0); +#if DEBUG + AttinySerial.print(voltage); + AttinySerial.println(" mili volts"); +#endif - // print out the voltage - Serial.print(voltage); - Serial.println(" volts"); - - // now print out the temperature - float temperatureC = (voltage - 0.5) * 100; //converting from 10 mv per degree wit 500 mV offset - //to degrees ((voltage - 500mV) times 100) - Serial.print(temperatureC); - Serial.println(" degrees C"); - return roundf(temperatureC*10); -} - -ISR(PCINT0_vect) { - sensor.sendTempAndVoltage(readTemp()); - delay(5000); - sensor.sendTempAndVoltage(readTemp()); -} - -ISR(WDT_vect) { - counter++; - if (counter % 220 == 0) { - counter = 0; - sensor.sendTempAndVoltage(readTemp()); - } + float temperatureC = (voltage - 500) / 10; +#if DEBUG + AttinySerial.print(temperatureC); + AttinySerial.println(" degrees C"); +#endif + return roundf(temperatureC * 10); }