108 lines
4.1 KiB
Arduino
108 lines
4.1 KiB
Arduino
|
/*
|
||
|
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 <Wire.h>
|
||
|
#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);
|
||
|
}
|