<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-335817023766526243</id><updated>2012-01-09T07:13:10.639-08:00</updated><category term='arduino'/><category term='enerduino'/><category term='risparmio energetico'/><title type='text'>Enerduino</title><subtitle type='html'>Controlla i tuoi consumi elettrici</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://enerduino.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/335817023766526243/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://enerduino.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>b38911</name><uri>http://www.blogger.com/profile/07485772345320498693</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>4</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-335817023766526243.post-5151015180390754709</id><published>2011-12-25T09:53:00.000-08:00</published><updated>2011-12-25T09:53:58.923-08:00</updated><title type='text'>Arduino 1.0 version (English)</title><content type='html'>Thanks to Andrea Manzini, we have now the the Arduino 1.0 IDE version. You can download it &lt;a href="http://sites.google.com/site/ilmanzo/enerduino"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/335817023766526243-5151015180390754709?l=enerduino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://enerduino.blogspot.com/feeds/5151015180390754709/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://enerduino.blogspot.com/2011/12/arduino-10-version-english.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/335817023766526243/posts/default/5151015180390754709'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/335817023766526243/posts/default/5151015180390754709'/><link rel='alternate' type='text/html' href='http://enerduino.blogspot.com/2011/12/arduino-10-version-english.html' title='Arduino 1.0 version (English)'/><author><name>b38911</name><uri>http://www.blogger.com/profile/07485772345320498693</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-335817023766526243.post-8767045528503109699</id><published>2011-12-25T09:50:00.000-08:00</published><updated>2011-12-25T09:50:46.973-08:00</updated><title type='text'>Versione per Arduino 1.0 (Italiano)</title><content type='html'>Grazie ad Andrea Manzini, esiste ora anche il porting per il nuovo IDE Arduino 1.0. Potete scaricalo &lt;a href="http://sites.google.com/site/ilmanzo/enerduino"&gt;qui&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/335817023766526243-8767045528503109699?l=enerduino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://enerduino.blogspot.com/feeds/8767045528503109699/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://enerduino.blogspot.com/2011/12/versione-per-arduino-10-italiano.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/335817023766526243/posts/default/8767045528503109699'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/335817023766526243/posts/default/8767045528503109699'/><link rel='alternate' type='text/html' href='http://enerduino.blogspot.com/2011/12/versione-per-arduino-10-italiano.html' title='Versione per Arduino 1.0 (Italiano)'/><author><name>b38911</name><uri>http://www.blogger.com/profile/07485772345320498693</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-335817023766526243.post-7332108263218636893</id><published>2011-09-26T11:26:00.000-07:00</published><updated>2011-09-26T11:26:18.272-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='arduino'/><category scheme='http://www.blogger.com/atom/ns#' term='risparmio energetico'/><category scheme='http://www.blogger.com/atom/ns#' term='enerduino'/><title type='text'>Enerduino (Italiano)</title><content type='html'>&lt;a href="http://1.bp.blogspot.com/_u3hqWmfzOJk/SxGIVUygJbI/AAAAAAAAABQ/2QiPMUoVEEg/s1600/arduino1.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5409254527387837874" src="http://1.bp.blogspot.com/_u3hqWmfzOJk/SxGIVUygJbI/AAAAAAAAABQ/2QiPMUoVEEg/s400/arduino1.png" style="cursor: pointer; display: block; height: 300px; margin: 0px auto 10px; text-align: center; width: 400px;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Cos'e' Enerduino? Un progetto nato per controllare il consumo di energia nella mia casa. E perche' dovrei fare questo tipo di monitoraggio, chiederete voi? Per esempio per capire le mie abitudini di consumo, per valutare offerte biorarie. Oppure solo per capire dove consumo di piu' e magari risparmiare un po' di energia.&lt;br /&gt;&lt;br /&gt;Esistono molti strumenti per poter fare questo tipo di monitoraggio che si possono acquistare su internet. Questa e' la mia soluzione fai-da-te, basata sul controller hardware Arduino.&lt;br /&gt;&lt;br /&gt;Questo progetto puo' essere realizzato da chiunque abbia un po' di manualita' e abbia voglia di divertisi a costruire qualcosa. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: 130%;"&gt;COME FUNZIONA&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Molto semplice: grazie a una fotoresistenza che verra' applicata alla lucina RA del contatore elettronico ENEL, verranno contati i lampeggi. Siccome ad ogni lampeggio dovrebbe corrispondere 1w/h di consumo, contando i lampeggi e salvandone il numero su un file, saremo in grado di fare delle elaborazioni grazie ad un semplice foglio di calcolo.&lt;br /&gt;&lt;br /&gt;Lista dei componenti richiesti:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;1 Arduino (controller) &lt;/li&gt;&lt;li&gt;1 SD Card shield (utilizzato per salvare i dati su una SD Card)&lt;/li&gt;&lt;li&gt;1 modulo DS1307 (in pratica un'orologio, per conservare data/ora)&lt;/li&gt;&lt;li&gt;1 resistenza da 10Kohm&lt;/li&gt;&lt;li&gt;1 fotoresistenza&lt;/li&gt;&lt;li&gt;fili vari per i collegamenti&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;I componenti si possono trovare su Internet. Io generalmente mi servo su  &lt;a href="http://www.seeedstudio.com/"&gt;http://www.seeedstudio.com&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: 130%;"&gt;REALIZZAZIONE&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Come prima cosa prendete l'Arduino. L'SD card shield va montato direttamente sopra l'arduino inserendo il PIN D9 nel pin 9. Lo switch dell'alimentazione va messo su D9, in quanto la libreria che useremo per scrivere sulla card (Filelogger a &lt;a href="http://code.google.com/p/arduino-filelogger/"&gt;http://code.google.com/p/arduino-filelogger/&lt;/a&gt;) utilizza questa modalita'.&lt;a href="http://3.bp.blogspot.com/_u3hqWmfzOJk/SxGCzbACcsI/AAAAAAAAAAY/vmGTKfntQ2I/s1600/arduino2.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5409248447381533378" src="http://3.bp.blogspot.com/_u3hqWmfzOJk/SxGCzbACcsI/AAAAAAAAAAY/vmGTKfntQ2I/s400/arduino2.png" style="cursor: pointer; display: block; height: 300px; margin: 0px auto 10px; text-align: center; width: 400px;" /&gt;&lt;/a&gt;&lt;br /&gt;A questo punto bisogna collegare modulo DS1307, l'orologio. In teoria anche questo andrebbe montato direttamente sull'Arduino, ma essendoci gia' il modulo SD questo non e' possibile. Andra' quindi montato di lato e poi bisognera' procedere ai collegamenti. I due pin in alto a sinistra nella foto andranno nelle porte analogiche 4 e 5. L'alimentazione (+ e GND) si prende invece dalla porta ICSP (vedi anche lo schema finale dei collegamenti).&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_u3hqWmfzOJk/SxGDnkTKFGI/AAAAAAAAAAg/5NQojyE78LI/s1600/clock.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5409249343230841954" src="http://4.bp.blogspot.com/_u3hqWmfzOJk/SxGDnkTKFGI/AAAAAAAAAAg/5NQojyE78LI/s400/clock.png" style="cursor: pointer; display: block; height: 300px; margin: 0px auto 10px; text-align: center; width: 400px;" /&gt;&lt;/a&gt;Adesso pensiamo al sensore dei flash: il photoresistor va montato con una resistenza da 10Kohm in questo modo&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;+5V    ---PhotoResistor-------.-----Resistenza 10K--- GND&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;|&lt;br /&gt;&lt;/div&gt;Pin 0 ------------------------------------------&lt;br /&gt;&lt;br /&gt;Per collegare il tutto ho sciacallato un cavetto a 4 fili (ne useremo solo 3), ho estratto un pin come si vede sotto (questo andra' alla PIN 0 analogico)&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_u3hqWmfzOJk/SxGE2e3-cXI/AAAAAAAAAAo/7oIH-u2Q6nU/s1600/connettore.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5409250698984321394" src="http://3.bp.blogspot.com/_u3hqWmfzOJk/SxGE2e3-cXI/AAAAAAAAAAo/7oIH-u2Q6nU/s400/connettore.png" style="cursor: pointer; display: block; height: 300px; margin: 0px auto 10px; text-align: center; width: 400px;" /&gt;&lt;/a&gt;&lt;br /&gt;Dall'altra parte del cavetto il collegamento e' cosi' (il filo rosso si collega al connettore che dall'altro lato va alla porta 0)&lt;a href="http://2.bp.blogspot.com/_u3hqWmfzOJk/SxGFguuEp7I/AAAAAAAAAAw/3j5IwLkJfMQ/s1600/photores.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5409251424792258482" src="http://2.bp.blogspot.com/_u3hqWmfzOJk/SxGFguuEp7I/AAAAAAAAAAw/3j5IwLkJfMQ/s400/photores.png" style="cursor: pointer; display: block; height: 300px; margin: 0px auto 10px; text-align: center; width: 400px;" /&gt;&lt;/a&gt;&lt;br /&gt;Siccome siamo a corto di porte per l'alimentazione, il tutto verra' collegato ancora alla porta ICSP&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_u3hqWmfzOJk/SxGGB-S5SxI/AAAAAAAAAA4/iTNmE__qjTs/s1600/connanalog.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5409251995908918034" src="http://4.bp.blogspot.com/_u3hqWmfzOJk/SxGGB-S5SxI/AAAAAAAAAA4/iTNmE__qjTs/s400/connanalog.png" style="cursor: pointer; display: block; height: 300px; margin: 0px auto 10px; text-align: center; width: 400px;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Direi che siamo alla fine. A questo punto va caricato il software (che trovate in fondo al post), inserita una carta SD (ATTENZIONE: Filelogger funziona solo con partizioni FAT16, blocchi di 512 byte e al massimo 64MB di RAM. Si dovra' creare una partizione di 64MB e formattarla con format f: /fs:fat /a:512. Inoltre va creato un file vuoto data.log nella root, altrimenti niente dati) e poi si deve attaccare il photoresistor alla luce del contatore (io ho usato il Patafix):&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_u3hqWmfzOJk/SxGGkfi7WoI/AAAAAAAAABA/tp46UOP1FOE/s1600/contatore.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5409252588950084226" src="http://4.bp.blogspot.com/_u3hqWmfzOJk/SxGGkfi7WoI/AAAAAAAAABA/tp46UOP1FOE/s400/contatore.png" style="cursor: pointer; display: block; height: 300px; margin: 0px auto 10px; text-align: center; width: 400px;" /&gt;&lt;/a&gt;Qui sotto trovate uno schema per chiarirvi come sono fatti i collegamenti alle porte della board Arduino&lt;a href="http://2.bp.blogspot.com/_u3hqWmfzOJk/SxGHUfuVl2I/AAAAAAAAABI/hOsBb3nuEDM/s1600/arduino_board.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5409253413631661922" src="http://2.bp.blogspot.com/_u3hqWmfzOJk/SxGHUfuVl2I/AAAAAAAAABI/hOsBb3nuEDM/s400/arduino_board.png" style="cursor: pointer; display: block; height: 400px; margin: 0px auto 10px; text-align: center; width: 400px;" /&gt;&lt;/a&gt;Io ho tentato di farlo funzionare con una pila a 9V, ma dura pochissimo. E' meglio attaccarlo ad un alimentatore....&lt;br /&gt;&lt;br /&gt;Dopo qualche giorno potete spegnere il tutto, estraete l'SD card, prendete il file data.log che dovrebbe contenere una lista di "DATAORA NUMEROLAMPEGGI". Elaborando questa lista con un comune foglio elettronico e' semplice ottenere un grafico tipo questo:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_u3hqWmfzOJk/SxGJYzT-44I/AAAAAAAAABY/ZTcP2yjHHLw/s1600/elaborazione.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5409255686632563586" src="http://1.bp.blogspot.com/_u3hqWmfzOJk/SxGJYzT-44I/AAAAAAAAABY/ZTcP2yjHHLw/s400/elaborazione.png" style="cursor: pointer; display: block; height: 232px; margin: 0px auto 10px; text-align: center; width: 400px;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: 130%;"&gt;IL CODICE&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;pre style="-moz-background-clip: border; -moz-background-inline-policy: continuous; -moz-background-origin: padding; background: rgb(240, 240, 240) url(http://2.bp.blogspot.com/_z5ltvMQPaa8/SjJXr_U2YBI/AAAAAAAAAAM/46OqEP32CJ8/s320/codebg.gif) repeat scroll 0% 0%; border: 1px dashed rgb(204, 204, 204); color: black; font-family: arial; font-size: 12px; height: 350px; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"&gt;&lt;code style="color: black; word-wrap: normal;"&gt; // &lt;br /&gt;//  &lt;br /&gt;// Enerduino &lt;br /&gt;//  &lt;br /&gt;// version 0.2 &lt;br /&gt;//  &lt;br /&gt;// Internal revision: $Id: Enerduino.pde,v 0.22 2009/11/28 16:30:16 cesare Exp cesare $ &lt;br /&gt;//  &lt;br /&gt;// written by Cesare Pizzi &lt;br /&gt;//  &lt;br /&gt;// This simple Arduino application allow to monitor power consumpion by checking the flashing  &lt;br /&gt;// light of the power meter. &lt;br /&gt;// There are 2 lights on italian ENEL power meters: RA (active) and RR (reactive). &lt;br /&gt;// Only RA led is computed for home contracts &lt;br /&gt;// One flash should be 1 w/h &lt;br /&gt;//  &lt;br /&gt;// &lt;br /&gt;&lt;br /&gt;#include &amp;lt;stdlib.h&amp;gt; &lt;br /&gt;&lt;br /&gt;// Include files for Filelogger library &lt;br /&gt;#include &amp;lt;Spi.h&amp;gt; &lt;br /&gt;#include &amp;lt;mmc.h&amp;gt; &lt;br /&gt;#include &amp;lt;nanofat.h&amp;gt; &lt;br /&gt;#include &amp;lt;FileLogger.h&amp;gt; &lt;br /&gt;&lt;br /&gt;// Include files for clock DS1307 library &lt;br /&gt;#include &amp;lt;WProgram.h&amp;gt; &lt;br /&gt;#include &amp;lt;Wire.h&amp;gt; &lt;br /&gt;#include &amp;lt;DS1307.h&amp;gt; &lt;br /&gt;&lt;br /&gt;// Include files for MsTimer2 library &lt;br /&gt;#include &amp;lt;MsTimer2.h&amp;gt; &lt;br /&gt;&lt;br /&gt;/// The PIN to power the SD card shield &lt;br /&gt;#define MEM_PW 9 &lt;br /&gt;// Analog input for photoresistor &lt;br /&gt;#define PHOTO_IN  0 &lt;br /&gt;&lt;br /&gt;unsigned long timer=3600000; // Log file is written every 60 minutes (3600000)  FIXME &lt;br /&gt;unsigned long flash=0; &lt;br /&gt;int threshold=450;     // If photoresistor read more than this value, it count a flash &lt;br /&gt;int writeLog=0; &lt;br /&gt;&lt;br /&gt;// Arduino setup routine &lt;br /&gt;void setup(void)  &lt;br /&gt;{ &lt;br /&gt;&lt;br /&gt;// This is to power on the SD shield &lt;br /&gt;pinMode(MEM_PW, OUTPUT); &lt;br /&gt;digitalWrite(MEM_PW, HIGH); &lt;br /&gt;&lt;br /&gt;// Setup for photoresistor &lt;br /&gt;pinMode(PHOTO_IN,INPUT); &lt;br /&gt;&lt;br /&gt;// Initialize timer &lt;br /&gt;MsTimer2::set(timer, flushCounter); &lt;br /&gt;MsTimer2::start(); &lt;br /&gt;&lt;br /&gt;// Serial.begin(9600);       // FIXME &lt;br /&gt;&lt;br /&gt;// Enable to set up external clock &lt;br /&gt;// setClock(0,38,17,6,14,11,9); &lt;br /&gt;} &lt;br /&gt;&lt;br /&gt;// Main &lt;br /&gt;void loop(void)  &lt;br /&gt;{ &lt;br /&gt;&lt;br /&gt;// Serial.println(analogRead(PHOTO_IN));  // FIXME &lt;br /&gt;&lt;br /&gt;// Read the photo sensor value &lt;br /&gt;if (analogRead(PHOTO_IN) &amp;gt; threshold) &lt;br /&gt;{ &lt;br /&gt;while (analogRead(PHOTO_IN) &amp;gt; threshold) &lt;br /&gt;{ &lt;br /&gt;// Just wait the flash to turn off (to avoid multiple counts)    &lt;br /&gt;}  &lt;br /&gt;&lt;br /&gt;flash++; &lt;br /&gt;// Serial.println("Flash");       // FIXME &lt;br /&gt;} &lt;br /&gt;&lt;br /&gt;// Write the log file if interrupt has been called &lt;br /&gt;if (writeLog==1) &lt;br /&gt;{ &lt;br /&gt;char time[10]; &lt;br /&gt;char date[15]; &lt;br /&gt;char logStr[50]; &lt;br /&gt;char buffer[5]; &lt;br /&gt;&lt;br /&gt;// Write flashes to log file &lt;br /&gt;strcpy(logStr,getDate(time)); &lt;br /&gt;strcat(logStr," "); &lt;br /&gt;strcat(logStr,getClock(date)); &lt;br /&gt;strcat(logStr,"\t"); &lt;br /&gt;itoa(flash,buffer,10); &lt;br /&gt;strcat(logStr,buffer); &lt;br /&gt;strcat(logStr,"\n"); &lt;br /&gt;&lt;br /&gt;write_log(logStr); &lt;br /&gt;&lt;br /&gt;writeLog=0; &lt;br /&gt;flash=0;  &lt;br /&gt;} &lt;br /&gt;&lt;br /&gt;delay(10); &lt;br /&gt;} &lt;br /&gt;&lt;br /&gt;///////////////// &lt;br /&gt;// Subroutines // &lt;br /&gt;///////////////// &lt;br /&gt;&lt;br /&gt;// Setup the external clock &lt;br /&gt;void setClock(int seconds, int minutes, int hour, int dow, &lt;br /&gt;int day, int month, int year) &lt;br /&gt;{ &lt;br /&gt;&lt;br /&gt;RTC.stop(); &lt;br /&gt;RTC.set(DS1307_SEC,seconds);    //set the seconds &lt;br /&gt;RTC.set(DS1307_MIN,minutes);    //set the minutes &lt;br /&gt;RTC.set(DS1307_HR,hour);      //set the hours &lt;br /&gt;RTC.set(DS1307_DOW,dow);      //set the day of the week &lt;br /&gt;RTC.set(DS1307_DATE,day);     //set the date &lt;br /&gt;RTC.set(DS1307_MTH,month);     //set the month &lt;br /&gt;RTC.set(DS1307_YR,year);      //set the year &lt;br /&gt;RTC.start(); &lt;br /&gt;&lt;br /&gt;} &lt;br /&gt;&lt;br /&gt;// Get the time from the external clock &lt;br /&gt;char* getClock(char *timeStr) &lt;br /&gt;{ &lt;br /&gt;char buffer[5]=" "; &lt;br /&gt;&lt;br /&gt;itoa(RTC.get(DS1307_HR,true),buffer,10); &lt;br /&gt;strcpy(timeStr,buffer); &lt;br /&gt;strcat(timeStr,":"); &lt;br /&gt;itoa(RTC.get(DS1307_MIN,false),buffer,10); &lt;br /&gt;&lt;br /&gt;// Add 0 if a single digit minute has been returned &lt;br /&gt;if (strlen(buffer)==1) &lt;br /&gt;{ &lt;br /&gt;strcat(timeStr,"0");  &lt;br /&gt;}  &lt;br /&gt;strcat(timeStr,buffer); &lt;br /&gt;&lt;br /&gt;// Seconds are not useful at this time. Commented out &lt;br /&gt;// strcat(timeStr,":"); &lt;br /&gt;// itoa(RTC.get(DS1307_SEC,false),buffer,10); &lt;br /&gt;// strcat(timeStr,buffer); &lt;br /&gt;&lt;br /&gt;return timeStr; &lt;br /&gt;} &lt;br /&gt;&lt;br /&gt;// Get the date from extrenal clock &lt;br /&gt;char* getDate(char *dateStr) &lt;br /&gt;{ &lt;br /&gt;char buffer[5]=" "; &lt;br /&gt;&lt;br /&gt;itoa(RTC.get(DS1307_DATE,true),buffer,10); &lt;br /&gt;strcpy(dateStr,buffer); &lt;br /&gt;strcat(dateStr,"/");  &lt;br /&gt;itoa(RTC.get(DS1307_MTH,false),buffer,10); &lt;br /&gt;strcat(dateStr,buffer); &lt;br /&gt;strcat(dateStr,"/"); &lt;br /&gt;itoa(RTC.get(DS1307_YR,false),buffer,10);  &lt;br /&gt;strcat(dateStr,buffer); &lt;br /&gt;&lt;br /&gt;return dateStr; &lt;br /&gt;} &lt;br /&gt;&lt;br /&gt;// Write data to log file named data.log &lt;br /&gt;void write_log(char msg[]) &lt;br /&gt;{ &lt;br /&gt;int i; &lt;br /&gt;unsigned int length = (strlen(msg)+1); &lt;br /&gt;byte buffer[length]; &lt;br /&gt;&lt;br /&gt;for(i=0; i&amp;lt;length;i++) &lt;br /&gt;{ &lt;br /&gt;buffer[i] = msg[i]; &lt;br /&gt;} &lt;br /&gt;&lt;br /&gt;FileLogger::append("data.log", buffer, length-1); &lt;br /&gt;// We should check for errors here....we'll do it... &lt;br /&gt;} &lt;br /&gt;&lt;br /&gt;// Routine executed by the timer interrupt. This flush the  &lt;br /&gt;// data to the log file &lt;br /&gt;void flushCounter(void) &lt;br /&gt;{ &lt;br /&gt;writeLog=1; &lt;br /&gt;} &lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/335817023766526243-7332108263218636893?l=enerduino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://enerduino.blogspot.com/feeds/7332108263218636893/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://enerduino.blogspot.com/2009/12/enerduino-italiano.html#comment-form' title='8 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/335817023766526243/posts/default/7332108263218636893'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/335817023766526243/posts/default/7332108263218636893'/><link rel='alternate' type='text/html' href='http://enerduino.blogspot.com/2009/12/enerduino-italiano.html' title='Enerduino (Italiano)'/><author><name>b38911</name><uri>http://www.blogger.com/profile/07485772345320498693</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_u3hqWmfzOJk/SxGIVUygJbI/AAAAAAAAABQ/2QiPMUoVEEg/s72-c/arduino1.png' height='72' width='72'/><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-335817023766526243.post-8331681412123097893</id><published>2009-12-06T14:29:00.001-08:00</published><updated>2009-12-06T14:41:56.511-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='arduino'/><category scheme='http://www.blogger.com/atom/ns#' term='enerduino'/><title type='text'>Enerduino (English)</title><content type='html'>&lt;a href="http://1.bp.blogspot.com/_u3hqWmfzOJk/SxGIVUygJbI/AAAAAAAAABQ/2QiPMUoVEEg/s1600/arduino1.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5409254527387837874" src="http://1.bp.blogspot.com/_u3hqWmfzOJk/SxGIVUygJbI/AAAAAAAAABQ/2QiPMUoVEEg/s400/arduino1.png" style="cursor: pointer; display: block; height: 300px; margin: 0px auto 10px; text-align: center; width: 400px;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;What's Enerduino? This is a project created to monitor the energy consumption of my house. The reasons behind this monitoring can be more than one: to evaluate offers from energy suppliers, to understand where I'm wasting energy and to save some money. Or just for curiosity.&lt;br /&gt;&lt;br /&gt;There are a lot of project out there, very similar to this one. This is my way, a DIY solution based on Arduino controller.&lt;br /&gt;&lt;br /&gt;I think everybody can build this: it is very simple and require few electronic knowledge. This project is mainly built on the italian power meter installed by the national company, but it can be easily adapted for any other device, I guess.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: 130%;"&gt;HOW IT WORKS&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Very simple: thanks to a photoresistor that will be applied on the RA LED of the power meter, we can count the flashes. Every flash should be 1W/H, so by counting these and saving them in a file, we'll be able to do some graphs by using a spreadsheet.&lt;br /&gt;&lt;br /&gt;Required components:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;1 Arduino controller &lt;/li&gt;&lt;li&gt;1 SD Card shield &lt;/li&gt;&lt;li&gt;1 DS1307 module (a clock with battery, to save date/time)&lt;/li&gt;&lt;li&gt;1 resistor (10Kohm)&lt;/li&gt;&lt;li&gt;1 photoresistor&lt;/li&gt;&lt;li&gt;wires&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;I bought most of these on &lt;a href="http://www.seeedstudio.com/"&gt;http://www.seeedstudio.com&lt;/a&gt;, but you can choose your own supplier &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: 130%;"&gt;LET'S BUILD IT&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Get the Arduino board. The SD card shield must be placed directly over the controller. PIN D9 must be placed in Arduino PIN 9. The SD power switch must be placed on D9, as the Filelogger library we'll use, requires this mode (&lt;a href="http://code.google.com/p/arduino-filelogger/"&gt;http://code.google.com/p/arduino-filelogger/&lt;/a&gt;).&lt;a href="http://3.bp.blogspot.com/_u3hqWmfzOJk/SxGCzbACcsI/AAAAAAAAAAY/vmGTKfntQ2I/s1600/arduino2.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5409248447381533378" src="http://3.bp.blogspot.com/_u3hqWmfzOJk/SxGCzbACcsI/AAAAAAAAAAY/vmGTKfntQ2I/s400/arduino2.png" style="cursor: pointer; display: block; height: 300px; margin: 0px auto 10px; text-align: center; width: 400px;" /&gt;&lt;/a&gt;&lt;br /&gt;Now we have to connect the DS1307 module. Also this one should be placed on top of the Arduino, but since we already have the SD shield, this is not possible. So, we'll place it beside the controller. The two pins shown on top-left of the picture will be connected to analog ports 4 and 5. Power (+ and GND) will come from the ICSP port (please, have a look to the schema at the end of the post).&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_u3hqWmfzOJk/SxGDnkTKFGI/AAAAAAAAAAg/5NQojyE78LI/s1600/clock.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5409249343230841954" src="http://4.bp.blogspot.com/_u3hqWmfzOJk/SxGDnkTKFGI/AAAAAAAAAAg/5NQojyE78LI/s400/clock.png" style="cursor: pointer; display: block; height: 300px; margin: 0px auto 10px; text-align: center; width: 400px;" /&gt;&lt;/a&gt;Then, we have to assemble the photoresistor. It must be used with a resistor in this way&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;+5V    ---PhotoResistor-------.-------Resistor 10K--- GND&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;|&lt;br /&gt;&lt;/div&gt;Pin 0 ------------------------------------------&lt;br /&gt;&lt;br /&gt;To connect this, I used a scrap cable: I extracted one pin (this will be connected to analog PIN 0)&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_u3hqWmfzOJk/SxGE2e3-cXI/AAAAAAAAAAo/7oIH-u2Q6nU/s1600/connettore.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5409250698984321394" src="http://3.bp.blogspot.com/_u3hqWmfzOJk/SxGE2e3-cXI/AAAAAAAAAAo/7oIH-u2Q6nU/s400/connettore.png" style="cursor: pointer; display: block; height: 300px; margin: 0px auto 10px; text-align: center; width: 400px;" /&gt;&lt;/a&gt;&lt;br /&gt;This is the picture of the opposite side of the cable: the red wire is placed in the PIN that is connected to port 0 on the other side)&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_u3hqWmfzOJk/SxGFguuEp7I/AAAAAAAAAAw/3j5IwLkJfMQ/s1600/photores.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5409251424792258482" src="http://2.bp.blogspot.com/_u3hqWmfzOJk/SxGFguuEp7I/AAAAAAAAAAw/3j5IwLkJfMQ/s400/photores.png" style="cursor: pointer; display: block; height: 300px; margin: 0px auto 10px; text-align: center; width: 400px;" /&gt;&lt;/a&gt;&lt;br /&gt;There is shortage of power lines...we need to connect this to ICSP port again...&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_u3hqWmfzOJk/SxGGB-S5SxI/AAAAAAAAAA4/iTNmE__qjTs/s1600/connanalog.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5409251995908918034" src="http://4.bp.blogspot.com/_u3hqWmfzOJk/SxGGB-S5SxI/AAAAAAAAAA4/iTNmE__qjTs/s400/connanalog.png" style="cursor: pointer; display: block; height: 300px; margin: 0px auto 10px; text-align: center; width: 400px;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;OK, we mostly completed our work here. Now we need to load the software (see the end of the post), place a SD card (BE CAREFUL: Filelogger works only with FAT16 partitions, with 512 bytes block. You need to create a 64MB partition and then format it with "format f: /fs:fat /a:512". Remember to create a file named data.log in root directory, otherwise nothing will be logged).&lt;br /&gt;I sticked the photoresistor to the power meter LED with Patafix:&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_u3hqWmfzOJk/SxGGkfi7WoI/AAAAAAAAABA/tp46UOP1FOE/s1600/contatore.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5409252588950084226" src="http://4.bp.blogspot.com/_u3hqWmfzOJk/SxGGkfi7WoI/AAAAAAAAABA/tp46UOP1FOE/s400/contatore.png" style="cursor: pointer; display: block; height: 300px; margin: 0px auto 10px; text-align: center; width: 400px;" /&gt;&lt;/a&gt;Here below a schema to clarify some of the connections&lt;a href="http://2.bp.blogspot.com/_u3hqWmfzOJk/SxGHUfuVl2I/AAAAAAAAABI/hOsBb3nuEDM/s1600/arduino_board.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5409253413631661922" src="http://2.bp.blogspot.com/_u3hqWmfzOJk/SxGHUfuVl2I/AAAAAAAAABI/hOsBb3nuEDM/s400/arduino_board.png" style="cursor: pointer; display: block; height: 400px; margin: 0px auto 10px; text-align: center; width: 400px;" /&gt;&lt;/a&gt;I tried to use it with a 9V battery, but it last very few hours....it's better to use an external power supply.&lt;br /&gt;&lt;br /&gt;Wait some days, then extract the SD card: the data.log file will contain a list of "DATE   # OF FLASHES". With a common spreadsheet you can build a graph like this one:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_u3hqWmfzOJk/SxGJYzT-44I/AAAAAAAAABY/ZTcP2yjHHLw/s1600/elaborazione.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5409255686632563586" src="http://1.bp.blogspot.com/_u3hqWmfzOJk/SxGJYzT-44I/AAAAAAAAABY/ZTcP2yjHHLw/s400/elaborazione.png" style="cursor: pointer; display: block; height: 232px; margin: 0px auto 10px; text-align: center; width: 400px;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: 130%;"&gt;THE CODE&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;pre style="-moz-background-clip: border; -moz-background-inline-policy: continuous; -moz-background-origin: padding; background: rgb(240, 240, 240) url(http://2.bp.blogspot.com/_z5ltvMQPaa8/SjJXr_U2YBI/AAAAAAAAAAM/46OqEP32CJ8/s320/codebg.gif) repeat scroll 0% 0%; border: 1px dashed rgb(204, 204, 204); color: black; font-family: arial; font-size: 12px; height: 350px; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"&gt;&lt;code style="color: black; word-wrap: normal;"&gt; // &lt;br /&gt;//  &lt;br /&gt;// Enerduino &lt;br /&gt;//  &lt;br /&gt;// version 0.2 &lt;br /&gt;//  &lt;br /&gt;// Internal revision: $Id: Enerduino.pde,v 0.22 2009/11/28 16:30:16 cesare Exp cesare $ &lt;br /&gt;//  &lt;br /&gt;// written by Cesare Pizzi &lt;br /&gt;//  &lt;br /&gt;// This simple Arduino application allow to monitor power consumpion by checking the flashing  &lt;br /&gt;// light of the power meter. &lt;br /&gt;// There are 2 lights on italian ENEL power meters: RA (active) and RR (reactive). &lt;br /&gt;// Only RA led is computed for home contracts &lt;br /&gt;// One flash should be 1 w/h &lt;br /&gt;//  &lt;br /&gt;// &lt;br /&gt;&lt;br /&gt;#include &amp;lt;stdlib.h&amp;gt; &lt;br /&gt;&lt;br /&gt;// Include files for Filelogger library &lt;br /&gt;#include &amp;lt;Spi.h&amp;gt; &lt;br /&gt;#include &amp;lt;mmc.h&amp;gt; &lt;br /&gt;#include &amp;lt;nanofat.h&amp;gt; &lt;br /&gt;#include &amp;lt;FileLogger.h&amp;gt; &lt;br /&gt;&lt;br /&gt;// Include files for clock DS1307 library &lt;br /&gt;#include &amp;lt;WProgram.h&amp;gt; &lt;br /&gt;#include &amp;lt;Wire.h&amp;gt; &lt;br /&gt;#include &amp;lt;DS1307.h&amp;gt; &lt;br /&gt;&lt;br /&gt;// Include files for MsTimer2 library &lt;br /&gt;#include &amp;lt;MsTimer2.h&amp;gt; &lt;br /&gt;&lt;br /&gt;/// The PIN to power the SD card shield &lt;br /&gt;#define MEM_PW 9 &lt;br /&gt;// Analog input for photoresistor &lt;br /&gt;#define PHOTO_IN  0 &lt;br /&gt;&lt;br /&gt;unsigned long timer=3600000; // Log file is written every 60 minutes (3600000)  FIXME &lt;br /&gt;unsigned long flash=0; &lt;br /&gt;int threshold=450;     // If photoresistor read more than this value, it count a flash &lt;br /&gt;int writeLog=0; &lt;br /&gt;&lt;br /&gt;// Arduino setup routine &lt;br /&gt;void setup(void)  &lt;br /&gt;{ &lt;br /&gt;&lt;br /&gt;// This is to power on the SD shield &lt;br /&gt;pinMode(MEM_PW, OUTPUT); &lt;br /&gt;digitalWrite(MEM_PW, HIGH); &lt;br /&gt;&lt;br /&gt;// Setup for photoresistor &lt;br /&gt;pinMode(PHOTO_IN,INPUT); &lt;br /&gt;&lt;br /&gt;// Initialize timer &lt;br /&gt;MsTimer2::set(timer, flushCounter); &lt;br /&gt;MsTimer2::start(); &lt;br /&gt;&lt;br /&gt;// Serial.begin(9600);       // FIXME &lt;br /&gt;&lt;br /&gt;// Enable to set up external clock &lt;br /&gt;// setClock(0,38,17,6,14,11,9); &lt;br /&gt;} &lt;br /&gt;&lt;br /&gt;// Main &lt;br /&gt;void loop(void)  &lt;br /&gt;{ &lt;br /&gt;&lt;br /&gt;// Serial.println(analogRead(PHOTO_IN));  // FIXME &lt;br /&gt;&lt;br /&gt;// Read the photo sensor value &lt;br /&gt;if (analogRead(PHOTO_IN) &amp;gt; threshold) &lt;br /&gt;{ &lt;br /&gt;while (analogRead(PHOTO_IN) &amp;gt; threshold) &lt;br /&gt;{ &lt;br /&gt;// Just wait the flash to turn off (to avoid multiple counts)    &lt;br /&gt;}  &lt;br /&gt;&lt;br /&gt;flash++; &lt;br /&gt;// Serial.println("Flash");       // FIXME &lt;br /&gt;} &lt;br /&gt;&lt;br /&gt;// Write the log file if interrupt has been called &lt;br /&gt;if (writeLog==1) &lt;br /&gt;{ &lt;br /&gt;char time[10]; &lt;br /&gt;char date[15]; &lt;br /&gt;char logStr[50]; &lt;br /&gt;char buffer[5]; &lt;br /&gt;&lt;br /&gt;// Write flashes to log file &lt;br /&gt;strcpy(logStr,getDate(time)); &lt;br /&gt;strcat(logStr," "); &lt;br /&gt;strcat(logStr,getClock(date)); &lt;br /&gt;strcat(logStr,"\t"); &lt;br /&gt;itoa(flash,buffer,10); &lt;br /&gt;strcat(logStr,buffer); &lt;br /&gt;strcat(logStr,"\n"); &lt;br /&gt;&lt;br /&gt;write_log(logStr); &lt;br /&gt;&lt;br /&gt;writeLog=0; &lt;br /&gt;flash=0;  &lt;br /&gt;} &lt;br /&gt;&lt;br /&gt;delay(10); &lt;br /&gt;} &lt;br /&gt;&lt;br /&gt;///////////////// &lt;br /&gt;// Subroutines // &lt;br /&gt;///////////////// &lt;br /&gt;&lt;br /&gt;// Setup the external clock &lt;br /&gt;void setClock(int seconds, int minutes, int hour, int dow, &lt;br /&gt;int day, int month, int year) &lt;br /&gt;{ &lt;br /&gt;&lt;br /&gt;RTC.stop(); &lt;br /&gt;RTC.set(DS1307_SEC,seconds);    //set the seconds &lt;br /&gt;RTC.set(DS1307_MIN,minutes);    //set the minutes &lt;br /&gt;RTC.set(DS1307_HR,hour);      //set the hours &lt;br /&gt;RTC.set(DS1307_DOW,dow);      //set the day of the week &lt;br /&gt;RTC.set(DS1307_DATE,day);     //set the date &lt;br /&gt;RTC.set(DS1307_MTH,month);     //set the month &lt;br /&gt;RTC.set(DS1307_YR,year);      //set the year &lt;br /&gt;RTC.start(); &lt;br /&gt;&lt;br /&gt;} &lt;br /&gt;&lt;br /&gt;// Get the time from the external clock &lt;br /&gt;char* getClock(char *timeStr) &lt;br /&gt;{ &lt;br /&gt;char buffer[5]=" "; &lt;br /&gt;&lt;br /&gt;itoa(RTC.get(DS1307_HR,true),buffer,10); &lt;br /&gt;strcpy(timeStr,buffer); &lt;br /&gt;strcat(timeStr,":"); &lt;br /&gt;itoa(RTC.get(DS1307_MIN,false),buffer,10); &lt;br /&gt;&lt;br /&gt;// Add 0 if a single digit minute has been returned &lt;br /&gt;if (strlen(buffer)==1) &lt;br /&gt;{ &lt;br /&gt;strcat(timeStr,"0");  &lt;br /&gt;}  &lt;br /&gt;strcat(timeStr,buffer); &lt;br /&gt;&lt;br /&gt;// Seconds are not useful at this time. Commented out &lt;br /&gt;// strcat(timeStr,":"); &lt;br /&gt;// itoa(RTC.get(DS1307_SEC,false),buffer,10); &lt;br /&gt;// strcat(timeStr,buffer); &lt;br /&gt;&lt;br /&gt;return timeStr; &lt;br /&gt;} &lt;br /&gt;&lt;br /&gt;// Get the date from extrenal clock &lt;br /&gt;char* getDate(char *dateStr) &lt;br /&gt;{ &lt;br /&gt;char buffer[5]=" "; &lt;br /&gt;&lt;br /&gt;itoa(RTC.get(DS1307_DATE,true),buffer,10); &lt;br /&gt;strcpy(dateStr,buffer); &lt;br /&gt;strcat(dateStr,"/");  &lt;br /&gt;itoa(RTC.get(DS1307_MTH,false),buffer,10); &lt;br /&gt;strcat(dateStr,buffer); &lt;br /&gt;strcat(dateStr,"/"); &lt;br /&gt;itoa(RTC.get(DS1307_YR,false),buffer,10);  &lt;br /&gt;strcat(dateStr,buffer); &lt;br /&gt;&lt;br /&gt;return dateStr; &lt;br /&gt;} &lt;br /&gt;&lt;br /&gt;// Write data to log file named data.log &lt;br /&gt;void write_log(char msg[]) &lt;br /&gt;{ &lt;br /&gt;int i; &lt;br /&gt;unsigned int length = (strlen(msg)+1); &lt;br /&gt;byte buffer[length]; &lt;br /&gt;&lt;br /&gt;for(i=0; i&amp;lt;length;i++) &lt;br /&gt;{ &lt;br /&gt;buffer[i] = msg[i]; &lt;br /&gt;} &lt;br /&gt;&lt;br /&gt;FileLogger::append("data.log", buffer, length-1); &lt;br /&gt;// We should check for errors here....we'll do it... &lt;br /&gt;} &lt;br /&gt;&lt;br /&gt;// Routine executed by the timer interrupt. This flush the  &lt;br /&gt;// data to the log file &lt;br /&gt;void flushCounter(void) &lt;br /&gt;{ &lt;br /&gt;writeLog=1; &lt;br /&gt;} &lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/335817023766526243-8331681412123097893?l=enerduino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://enerduino.blogspot.com/feeds/8331681412123097893/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://enerduino.blogspot.com/2009/12/enerduino-english.html#comment-form' title='1 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/335817023766526243/posts/default/8331681412123097893'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/335817023766526243/posts/default/8331681412123097893'/><link rel='alternate' type='text/html' href='http://enerduino.blogspot.com/2009/12/enerduino-english.html' title='Enerduino (English)'/><author><name>b38911</name><uri>http://www.blogger.com/profile/07485772345320498693</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_u3hqWmfzOJk/SxGIVUygJbI/AAAAAAAAABQ/2QiPMUoVEEg/s72-c/arduino1.png' height='72' width='72'/><thr:total>1</thr:total></entry></feed>
