Donc mon chargeur crache 12V (1,5A) et 5V (2A) .. je viens d'essayer pas mal de combinaisons : alimentation du module relais par le chargeur seul , alimentation par le 5V de l'Arduino avec la carte sur USB, alimentation exclusivement avec le chargeur ...
J'ai toujours des soucis d'affichage ..
#include <OneWire.h>
#include <DallasTemperature.h>
#include <SD.h>
#include <Wire.h>
#include "RTClib.h"
#include <DataTimeStrings.h>
#include <LiquidCrystal.h>
/*
const int RS=2; //declaration constante de broche
const int E=3; //declaration constante de broche
const int D4=4; //declaration constante de broche
const int D5=5; //declaration constante de broche
const int D6=6; //declaration constante de broche
const int D7=7; //declaration constante de broche */
const int RS=12; const int E=11; const int D4=5; const int D5=4; const int D6=3; const int D7=2;
#define ONE_WIRE_BUS_PIN 6
OneWire oneWire(ONE_WIRE_BUS_PIN); // décla broche utilisée
DallasTemperature sensors(&oneWire); // décla sensor
RTC_DS1307 rtc;
const int chipSelect = 53;
const int LEDR = 10;
const int LEDV = 8;
const int RELAIS = 9; //declaration broche 3 output
boolean etatRelais = 1; // Etat du relais (on / off)
boolean Froid = 0;
//Adresse des capteurs
DeviceAddress Temp1 = {0x28, 0xE6, 0x03, 0x51, 0x07, 0x00, 0x00, 0xE6 }; //Domo
LiquidCrystal lcd(RS, E, D4, D5, D6, D7);// initialisation LCD en mode 4 bits
int resolution = 12;
int i = 0;
int heuretop = 0;
int minutetop = 0;
int secondetop = 0;
char buff2[50]="";
int chrono;
int stock = 0;
int interval = 5;
boolean stockage = 0;
int etatLEDV = 0;
int etatLEDR = 0;
int test = 0;
void setup()
{
delay(50);
lcd.begin(16,2);
delay(500);
rtc.begin();
delay(500);
sensors.begin();
delay(500);
rtc.adjust(DateTime(__DATE__, __TIME__));
pinMode(LEDR, OUTPUT);
pinMode(LEDV, OUTPUT);
pinMode(RELAIS, OUTPUT);
sensors.setResolution(Temp1, resolution);
DateTime now = rtc.now();
heuretop = now.hour();
minutetop = now.minute();
secondetop = now.second();
if (!SD.begin(chipSelect)) { Serial.println("Card failed, or not present"); return; }
File dataFile = SD.open("datalog.txt", FILE_WRITE);
dataFile.println("T1\tChauffage\tHeure\tTps(min)\n");
delay(50);
dataFile.close();
Froid = 0;
sprintf(buff2, "%02d:%02d:%02d", heuretop, minutetop, secondetop );
delay(100);
}
void loop()
{
sensors.requestTemperatures();
delay(200);
float T1 = sensors.getTempC(Temp1);
delay(200);
if(T1 < 21) { etatRelais = 1;}else{etatRelais = 0;}
digitalWrite(RELAIS,!etatRelais);
etatLEDV = !etatLEDV ;
/*
if(T1>22) { etatRelais = 0 ;}
delay(50);
if(T1<21) { etatRelais = 1 ;}
delay(50);
etatLEDV = !etatLEDV ;
if( etatRelais = 1){ digitalWrite(RELAIS,HIGH); delay(50);}
if( etatRelais = 0){ digitalWrite(RELAIS,LOW); delay(50);}
*/
delay(10);
digitalWrite(LEDV,etatLEDV);
delay(10);
digitalWrite(LEDR,etatLEDR);
delay(10);
/* Serial.print(T1);
Serial.print(" ");*/
DateTime now = rtc.now();
delay(50);
char buff[50]="";
sprintf(buff, "%02d:%02d", now.hour(), now.minute());
int heureT = now.hour();
int minuteT = now.minute();
int secondeT = now.second();
// int chrono = ((heureT - heuretop)*3600 ) + ((minuteT - minutetop)*60) - secondetop + secondeT ;
if(chrono != minuteT){stockage = TRUE;}
if(minuteT%interval == 0 && stockage == TRUE)
{
stock= stock + 1;
File dataFile = SD.open("datalog.txt", FILE_WRITE);
dataFile.print(T1);
dataFile.print("\t");
dataFile.print(etatRelais);
dataFile.print("\t");
dataFile.print(buff);
dataFile.print("\t");
dataFile.print(stock*interval);
dataFile.println("\n");
delay(50);
dataFile.close();
stockage = FALSE;
chrono = minuteT;
etatLEDR = !etatLEDR ;
}
/* Serial.print(stockage);
Serial.print(" ");
Serial.print(buff);
Serial.print(" ");
Serial.print("\n");*/
lcd.setCursor(0,0) ;
lcd.print(T1) ;
lcd.setCursor(0,1);
lcd.print(etatRelais);
lcd.setCursor(11,0);
lcd.print(buff);
lcd.setCursor(11,1);
lcd.print(stock*interval);
delay(200);
}