diff --git a/arduino/CMakeLists.txt b/arduino/CMakeLists.txt index d8160b0..9fa912d 100644 --- a/arduino/CMakeLists.txt +++ b/arduino/CMakeLists.txt @@ -17,3 +17,6 @@ generate_arduino_firmware(WeatherStationLogger generate_arduino_firmware(WeatherStationWeb SKETCH WeatherStationWeb) + +generate_arduino_firmware(I2CPractise + SKETCH I2CPractise) diff --git a/arduino/I2CPractise/I2CPractise.ino b/arduino/I2CPractise/I2CPractise.ino new file mode 100644 index 0000000..f6ca0d9 --- /dev/null +++ b/arduino/I2CPractise/I2CPractise.ino @@ -0,0 +1,107 @@ +/* + Copyright (C) 2012 Nathanaël Restori + + Permission is hereby granted, free of charge, to any person + obtaining a copy of this software and associated documentation + files (the "Software"), to deal in the Software without + restriction, including without limitation the rights to use, copy, + modify, merge, publish, distribute, sublicense, and/or sell copies + of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be + included in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS + BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN + ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE. + +*/ + +#include +#include "Chronodot.h" + +#define CHRONODOT_ADDRESS 0x68 + +static uint8_t bcd2bin (uint8_t val) { return val - 6 * (val >> 4); } + +void setup() { + Serial.begin(9600); + + Wire.begin(); + + Serial.println("BEGIN transmission"); + + Wire.beginTransmission(CHRONODOT_ADDRESS); + Wire.write((byte)0); + Wire.endTransmission(); + + Wire.requestFrom(CHRONODOT_ADDRESS, 19); + byte blah[20]; + int i; + for(i=0; i<20; i++) { + blah[i] = Wire.read(); + } + + Serial.println("END transmission"); + + uint8_t ss = bcd2bin(blah[0] & 0x7F); + uint8_t mm = bcd2bin(blah[1]); + uint8_t hh = bcd2bin(blah[2]); + uint8_t d = bcd2bin(blah[4]); + uint8_t m = bcd2bin(blah[5]); + uint16_t y = bcd2bin(blah[6]) + 2000; + float ttc = (float)(int)blah[17]; + byte portion = blah[18]; + if(portion == 0b01000000) ttc += 0.25; + if(portion == 0b10000000) ttc += 0.5; + if(portion == 0b11000000) ttc += 0.75; + float degF = (((ttc * 9.0) / 5.0) + 32.5); + int ttf = (int)degF; + //return DateTime (y, m, d, hh, mm, ss, ttf, ttc); + + Serial.println(); + Serial.println("What\tByte\tCorrespondance"); + Serial.println("------------------------------"); + Serial.print("seconds\t"); Serial.print(blah[0]); Serial.print("\t"); Serial.println(ss); + Serial.print("minutes\t"); Serial.print(blah[1]); Serial.print("\t"); Serial.println(mm); + Serial.print("hours\t"); Serial.print(blah[2]); Serial.print("\t"); Serial.println(hh); + Serial.print("days\t"); Serial.print(blah[4]); Serial.print("\t"); Serial.println(d); + Serial.print("monthes\t"); Serial.print(blah[5]); Serial.print("\t"); Serial.println(m); + Serial.print("years\t"); Serial.print(blah[6]); Serial.print("\t"); Serial.println(y); + Serial.print("temp\t"); Serial.print(blah[17]); Serial.print("\t"); Serial.println(ttc); + Serial.print("temp\t"); Serial.print(blah[18]); Serial.print("\t"); Serial.println(portion); + + Serial.println(); + Serial.println("Byte\tContent"); + Serial.println("---------------"); + Serial.print("0\t"); Serial.println(blah[0]); + Serial.print("1\t"); Serial.println(blah[1]); + Serial.print("2\t"); Serial.println(blah[2]); + Serial.print("3\t"); Serial.println(blah[3]); + Serial.print("4\t"); Serial.println(blah[4]); + Serial.print("5\t"); Serial.println(blah[5]); + Serial.print("6\t"); Serial.println(blah[6]); + Serial.print("7\t"); Serial.println(blah[7]); + Serial.print("8\t"); Serial.println(blah[8]); + Serial.print("9\t"); Serial.println(blah[9]); + Serial.print("10\t"); Serial.println(blah[10]); + Serial.print("11\t"); Serial.println(blah[11]); + Serial.print("12\t"); Serial.println(blah[12]); + Serial.print("13\t"); Serial.println(blah[13]); + Serial.print("14\t"); Serial.println(blah[14]); + Serial.print("15\t"); Serial.println(blah[15]); + Serial.print("16\t"); Serial.println(blah[16]); + Serial.print("17\t"); Serial.println(blah[17]); + Serial.print("18\t"); Serial.println(blah[18]); + Serial.print("19\t"); Serial.println(blah[19]); +} + +void loop() { + delay(1000); +} diff --git a/arduino/WeatherStationWeb/WeatherStationWeb.ino b/arduino/WeatherStationWeb/WeatherStationWeb.ino index 64f9248..0d06652 100644 --- a/arduino/WeatherStationWeb/WeatherStationWeb.ino +++ b/arduino/WeatherStationWeb/WeatherStationWeb.ino @@ -40,7 +40,7 @@ static uint8_t mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; static IPAddress ip = IPAddress(192, 168, 1, 210); -static IPAddress timeserver = IPAddress(192, 43, 244, 18); +static IPAddress timeserver = IPAddress(213, 239, 239, 164); P(indexHtml) = "Station Météo