06/16/2020 16:33:10 Temperature: 26.2
06/16/2020 16:33:21 Temperature: 26.2
06/16/2020 16:33:23 Temperature: 26.2
06/16/2020 16:33:34 Temperature: 26.2
06/16/2020 16:33:36 Temperature: 26.2
#!/usr/bin/python3
'''
Example:
python3 ./odtemp-mon.py
'''
from time import sleep
import serial
def run():
port = '/dev/ttyACM0'
ser = serial.Serial(port)
while True:
ser.write(b'~G')
ser_data = ser.readline()
if ser_data:
data = ser_data.decode("utf-8")
print('Read from serial (repl to ~G): {0}'.format(data.strip()))
if data.startswith('~G'):
print('Temperature is {0}'.format(float(data[2:])))
else:
print('sensor error')
sleep(1)
if __name__ == "__main__":
run()
//Main settings
#define SEND_PERIOD_MS 60000
#define STEP_DELAY_MS 200
#define RUN_MODE 1
//global vars
var t_answ = ["~GEEE\n", "~G%d\n", "~G0%d\n", "~G00%d\n", "~G000%d\n"];
var io_setup() {
UART0.CFG = UART_MODE_PLAIN | UART_CONFIG_START;
DS18.INIT = DS18_PORT_B|8;
__enable_irq();
}
var get_temp()
{
if(DS18.INIT == 1)
{
DS18.VALUE = 1;
delay(100);
return DS18.VALUE-2730; //K -> C
}else
return 0xFFFF; //Error
}
var temp_sender(var temp) {
var idx = 4;
if (temp>1280) { idx = 0; }
else if (temp>1000) { idx = 1; }
else if (temp>100) { idx = 2; }
else if (temp>10) { idx = 3; }
sprintf(&UART0.TX, t_answ[idx], temp);
}
var _msg() {
if(MSG.PORT == 4) {
memcpy(&RING.BUF, &MSG.RX, MSG.SIZE);
}
}
var temp_perioder()
{
temp_sender(get_temp());
timer(SEND_PERIOD_MS, temp_perioder);
}
var main() {
var c, temp;
var pstate = 0;
if((RING.ALLOC = 16) != 16) {
return 1;
}
#if RUN_MODE
timer(SEND_PERIOD_MS, temp_perioder);
#endif
io_setup();
SYS.WDG = 1;
while(1)
{
SYS.WDG = 42;
if(RING.QUEUE > 0) {
c = RING.PULL;
if (c == '~') {pstate = 1;}
else {
pstate = 0;
switch (c) {
case 'G':
temp_sender(get_temp());
break;
default:
break;
}
}
}else {
delay(STEP_DELAY_MS);
}
}
return 0;
}