From e62f254e7ec00750b82044d6c5c2f7e83485e918 Mon Sep 17 00:00:00 2001 From: Harald Pichler Date: Thu, 21 Dec 2017 15:02:08 +0100 Subject: [PATCH] bugfix now work with 8 sensors --- examples/osd/arduino-bodenheizung/sketch.h | 2 +- examples/osd/arduino-bodenheizung/sketch.pde | 91 +++++++++++++++++--- platform/osd-merkur-128/contiki-conf.h | 4 +- 3 files changed, 83 insertions(+), 14 deletions(-) diff --git a/examples/osd/arduino-bodenheizung/sketch.h b/examples/osd/arduino-bodenheizung/sketch.h index b48e13237..64b826466 100644 --- a/examples/osd/arduino-bodenheizung/sketch.h +++ b/examples/osd/arduino-bodenheizung/sketch.h @@ -5,6 +5,6 @@ struct dstemp{ float ftemp; char stemp[8]; }; -extern struct dstemp ds1820[7]; +extern struct dstemp ds1820[8]; #endif diff --git a/examples/osd/arduino-bodenheizung/sketch.pde b/examples/osd/arduino-bodenheizung/sketch.pde index cc50d28e4..1db64a6e3 100644 --- a/examples/osd/arduino-bodenheizung/sketch.pde +++ b/examples/osd/arduino-bodenheizung/sketch.pde @@ -32,14 +32,14 @@ OneWire oneWire(ONE_WIRE_BUS); DallasTemperature dsensors(&oneWire); // arrays to hold device addresses -DeviceAddress insideThermometer, outsideThermometer; +DeviceAddress insideThermometer0, insideThermometer1, insideThermometer2, insideThermometer3, insideThermometer4, insideThermometer5, insideThermometer6, insideThermometer7; extern resource_t res_dtemp1, res_dtemp2, res_dtemp3, res_dtemp4, res_dtemp5, res_dtemp6, res_dtemp7, res_dtemp8, res_battery; float d_temp; char d_temp_s[8]; // sketch.h -struct dstemp ds1820[7]; +struct dstemp ds1820[8]; #define LED_PIN 4 } @@ -113,8 +113,14 @@ void setup (void) // the devices on your bus (and assuming they don't change). // // method 1: by index - if (!dsensors.getAddress(insideThermometer, 0)) printf("Unable to find address for Device 0\n"); - if (!dsensors.getAddress(outsideThermometer, 1)) printf("Unable to find address for Device 1\n"); + if (!dsensors.getAddress(insideThermometer0, 0)) printf("Unable to find address for Device 0\n"); + if (!dsensors.getAddress(insideThermometer1, 1)) printf("Unable to find address for Device 1\n"); + if (!dsensors.getAddress(insideThermometer2, 2)) printf("Unable to find address for Device 2\n"); + if (!dsensors.getAddress(insideThermometer3, 3)) printf("Unable to find address for Device 3\n"); + if (!dsensors.getAddress(insideThermometer4, 4)) printf("Unable to find address for Device 4\n"); + if (!dsensors.getAddress(insideThermometer5, 5)) printf("Unable to find address for Device 5\n"); + if (!dsensors.getAddress(insideThermometer6, 6)) printf("Unable to find address for Device 6\n"); + if (!dsensors.getAddress(insideThermometer7, 7)) printf("Unable to find address for Device 7\n"); // method 2: search() // search() looks for the next device. Returns 1 if a new address has been @@ -132,24 +138,79 @@ void setup (void) // show the addresses we found on the bus printf("Device 0 Address: "); - printAddress(insideThermometer); + printAddress(insideThermometer0); printf("\n"); printf("Device 1 Address: "); - printAddress(outsideThermometer); + printAddress(insideThermometer1); + printf("\n"); + + printf("Device 2 Address: "); + printAddress(insideThermometer2); + printf("\n"); + + printf("Device 3 Address: "); + printAddress(insideThermometer3); + printf("\n"); + + printf("Device 4 Address: "); + printAddress(insideThermometer4); + printf("\n"); + + printf("Device 5 Address: "); + printAddress(insideThermometer5); + printf("\n"); + + printf("Device 6 Address: "); + printAddress(insideThermometer6); + printf("\n"); + + printf("Device 7 Address: "); + printAddress(insideThermometer7); printf("\n"); // set the resolution to 9 bit - dsensors.setResolution(insideThermometer, 9); - dsensors.setResolution(outsideThermometer, 9); + dsensors.setResolution(insideThermometer0, 9); + dsensors.setResolution(insideThermometer1, 9); + dsensors.setResolution(insideThermometer2, 9); + dsensors.setResolution(insideThermometer3, 9); + dsensors.setResolution(insideThermometer4, 9); + dsensors.setResolution(insideThermometer5, 9); + dsensors.setResolution(insideThermometer6, 9); + dsensors.setResolution(insideThermometer7, 9); printf("Device 0 Resolution: "); - printf("%d",dsensors.getResolution(insideThermometer)); + printf("%d",dsensors.getResolution(insideThermometer0)); printf("\n"); printf("Device 1 Resolution: "); - printf("%d",dsensors.getResolution(outsideThermometer)); + printf("%d",dsensors.getResolution(insideThermometer1)); printf("\n"); + + printf("Device 2 Resolution: "); + printf("%d",dsensors.getResolution(insideThermometer2)); + printf("\n"); + + printf("Device 3 Resolution: "); + printf("%d",dsensors.getResolution(insideThermometer3)); + printf("\n"); + + printf("Device 4 Resolution: "); + printf("%d",dsensors.getResolution(insideThermometer4)); + printf("\n"); + + printf("Device 5 Resolution: "); + printf("%d",dsensors.getResolution(insideThermometer5)); + printf("\n"); + + printf("Device 6 Resolution: "); + printf("%d",dsensors.getResolution(insideThermometer6)); + printf("\n"); + + printf("Device 7 Resolution: "); + printf("%d",dsensors.getResolution(insideThermometer7)); + printf("\n"); + // init coap resourcen rest_init_engine (); #pragma GCC diagnostic ignored "-Wwrite-strings" @@ -177,8 +238,14 @@ void loop (void) printf("DONE\n"); // print the device information - printData(insideThermometer,0); - printData(outsideThermometer,1); + printData(insideThermometer0,0); + printData(insideThermometer1,1); + printData(insideThermometer2,2); + printData(insideThermometer3,3); + printData(insideThermometer4,4); + printData(insideThermometer5,5); + printData(insideThermometer6,6); + printData(insideThermometer7,7); mcu_sleep_on(); // debug only diff --git a/platform/osd-merkur-128/contiki-conf.h b/platform/osd-merkur-128/contiki-conf.h index 0efe75ba4..1e8bfe613 100644 --- a/platform/osd-merkur-128/contiki-conf.h +++ b/platform/osd-merkur-128/contiki-conf.h @@ -174,7 +174,8 @@ typedef unsigned short uip_stats_t; #define UIP_CONF_DHCP_LIGHT 1 /* rpl routing settings */ -#define RPL_CONF_DEFAULT_LIFETIME 5 +#if 0 +//#define RPL_CONF_DEFAULT_LIFETIME 5 #define RPL_CONF_WITH_MC 1 #define RPL_CONF_WITH_DAO_ACK 1 #define RPL_CONF_RPL_REPAIR_ON_DAO_NACK 1 @@ -183,6 +184,7 @@ typedef unsigned short uip_stats_t; #define RPL_MRHOF_CONF_SQUARED_ETX 1 #define RPL_CONF_DAG_MC RPL_DAG_MC_ETX #define LINK_STATS_CONF_INIT_ETX(stats) guess_etx_from_rssi(stats) +#endif //#if 1 /* No radio cycling */ #if 0 /* radio cycling */