salut overcool j'ai télécharger le programme arduino du lien que tu ma passer, j'ai retrouver un carte sd avec mes ancien réglage, mes j'arrive pas a l'inseré dans le nouveau programme arduino .
quand je fait verifier sa me marque érror ou stray.
voila la sauvegarde se qui me reste sur ma carte sd si tu comprend quel chose.
#include
#include
#include
#include
#include
//Servo myservo; // crèe un objet Servo pour contrôler un servo-moteur
// 8 objets servo peuvent être créés au maximum
#define DS1307_I2C_ADDRESS 0x68
#define LCD_WIDTH 16
#define LCD_HEIGHT 2
#define ARRAYSTEP 15
#define WHITE_LED 11
#define BLUE_LED 9
#define BLUER_LED 10
//int pos = 0; // cette variable enregistre la position du servo
char lcdbuf;
int DsHour ,DsMin ,DsSec;
LiquidCrystal lcd(13, 12, 5, 4, 3, 2);
RTC_DS1307 rtc;
int lcdw_white, lcdw_blue, lcdw_bluer;
static unsigned long LastTimer ;
byte whiteled = {
1, 0, 0, 0, 0, 0, 0, 0, //0 - 1
0, 0, 0, 0, 0, 0, 0, 0, //2 - 3
0, 0, 0, 0, 0, 0, 0, 0, //4 - 5
0, 0, 0, 0, 0, 0, 0, 0, //6 - 7
0, 0, 0, 0, 0, 0, 0, 0, //8 - 9
1, 3, 6, 8, 12, 20, 30, 40, //10 - 11
55, 80, 110, 140, 170, 200, 230, 245, //12 - 13
245, 245, 245, 245, 245, 245, 245, 245, //14 - 15
215, 245, 245, 245, 215, 245, 245, 245, //16 - 17
215, 245, 245, 245, 215, 245, 245, 245, //18 - 19
215, 245, 245, 245, 245, 245, 245, 230, //20 - 21
215, 180, 150, 130, 100, 50, 25, 3 //22 - 23
};
byte blueled = {
1, 1, 0, 0, 0, 0, 0, 0, //0 - 1
0, 0, 0, 0, 0, 0, 0, 0, //2 - 3
0, 0, 0, 0, 0, 0, 0, 0, //4 - 5
0, 0, 0, 0, 0, 0, 0, 0, //6 - 7
0, 0, 0, 0, 0, 0, 1, 1, //8 - 9
1, 3, 6, 8, 12, 20, 30, 40, //10 - 11
55, 80, 110, 140, 170, 200, 230, 245, //12 - 13
245, 245, 245, 245, 245, 245, 245, 245, //14 - 15
215, 245, 245, 245, 215, 245, 245, 245, //16 - 17
215, 245, 245, 245, 215, 245, 245, 245, //18 - 19
215, 245, 245, 245, 245, 245, 245, 230, //20 - 21
215, 180, 150, 130, 100, 50, 25, 3 //22 - 23
};
byte bluerled = {
1, 1, 1, 0, 0, 0, 0, 0, //0 - 1
0, 0, 0, 0, 0, 0, 0, 0, //2 - 3
0, 0, 0, 0, 0, 0, 0, 0, //4 - 5
0, 0, 0, 0, 0, 0, 0, 0, //6 - 7
0, 0, 0, 0, 0, 0, 0, 1, //8 - 9
1, 3, 6, 8, 12, 20, 30, 40, //10 - 11
55, 80, 110, 140, 170, 200, 230, 245, //12 - 13
245, 245, 245, 245, 245, 245, 245, 245, //14 - 15
215, 245, 245, 245, 215, 245, 245, 245, //16 - 17
215, 245, 245, 245, 215, 245, 245, 245, //18 - 19
215, 245, 245, 245, 245 ,245, 245, 230, //20 - 21
215, 180, 150, 130, 100, 50, 25, 3 //22 - 23
};
void setup(void)
{
pinMode(WHITE_LED,OUTPUT);
pinMode(BLUE_LED,OUTPUT);
pinMode(BLUER_LED,OUTPUT);
Serial.begin(9600);
Serial.println("Entre dans Setup()");
Wire.begin();
rtc.begin();
lcd.begin(LCD_WIDTH, LCD_HEIGHT,1);
DateTime now = rtc.now();
DateTime compiled = DateTime(__DATE__, __TIME__);
if (now.unixtime() < compiled.unixtime()) {
Serial.println("RTC is older than compile time! Updating");
// following line sets the RTC to the date & time this sketch was compiled
rtc.adjust(DateTime(__DATE__, __TIME__));
}
lcd.clear();
LastTimer = 0;
}
void SetPWMForLed()
{
int indice_white, indice_blue, indice_bluer, sstep_white, sstep_blue, sstep_bluer, t1_white, t1_blue, t1_bluer, t2_white, t2_blue, t2_bluer, min_cnt_white, min_cnt_blue, min_cnt_bluer, pwmmod_white, pwmmod_blue, pwmmod_bluer;
Serial.println("Entre SetPWMForLed");
min_cnt_white= (DsHour*60)+ DsMin;
// on calcule l'indice ((heure * 60) + minute) divisé par le pas du tableau
indice_white = min_cnt_white/ARRAYSTEP;
// Fonction modulo qui donne la partie décimale du calcul ci dessus (donc valeur entre 0 et le pas soit entre 0 et 15) .
sstep_white = min_cnt_white%ARRAYSTEP;
t1_white =indice_white;
// cas où l'indice est le dernier du tableau, le suivant est donc le premier !
if (t1_white==95) {t2_white=0;}
// sinon indice suivant
else {t2_white = t1_white+1;}
// on est tombé sur un indice entier (multiple de 1/4h), donc on envoie directement la valeur
if (sstep_white==0)
{
pwmmod_white = whiteled;
}
else
{
pwmmod_white = average(&whiteled, &whiteled, sstep_white);
}
Serial.print("pwmmod_white:");
Serial.println(pwmmod_white);
analogWrite(WHITE_LED, pwmmod_white);
lcdw_white=pwmmod_white;
min_cnt_blue= (DsHour*60)+ DsMin;
// on calcule l'indice ((heure * 60) + minute) divisé par le pas du tableau
indice_blue = min_cnt_blue/ARRAYSTEP;
// Fonction modulo qui donne la partie décimale du calcul ci dessus (donc valeur entre 0 et le pas soit entre 0 et 15) .
sstep_blue = min_cnt_blue%ARRAYSTEP;
t1_blue =indice_blue;
// cas où l'indice est le dernier du tableau, le suivant est donc le premier !
if (t1_blue==95) {t2_blue=0;}
// sinon indice suivant
else {t2_blue = t1_blue+1;}
// on est tombé sur un indice entier (multiple de 1/4h), donc on envoie directement la valeur
if (sstep_blue==0)
{
pwmmod_blue = blueled;
}
else
{
pwmmod_blue = average(&blueled, &blueled, sstep_blue);
}
Serial.print("pwmmod_blue:");
Serial.println(pwmmod_blue);
analogWrite(BLUE_LED, pwmmod_blue);
lcdw_blue=pwmmod_blue;
min_cnt_bluer = (DsHour*60)+ DsMin;
// on calcule l'indice ((heure * 60) + minute) divisé par le pas du tableau
indice_bluer = min_cnt_bluer/ARRAYSTEP;
// Fonction modulo qui donne la partie décimale du calcul ci dessus (donc valeur entre 0 et le pas soit entre 0 et 15) .
sstep_bluer = min_cnt_bluer%ARRAYSTEP;
t1_bluer =indice_blue;
// cas où l'indice est le dernier du tableau, le suivant est donc le premier !
if (t1_bluer==95) {t2_bluer=0;}
// sinon indice suivant
else {t2_bluer = t1_bluer+1;}
// on est tombé sur un indice entier (multiple de 1/4h), donc on envoie directement la valeur
if (sstep_bluer==0)
{
pwmmod_bluer = bluerled;
}
else
{
pwmmod_bluer = average(&bluerled, &bluerled, sstep_bluer);
}
Serial.print("pwmmod_bluer:");
Serial.println(pwmmod_bluer);
analogWrite(BLUER_LED, pwmmod_bluer);
lcdw_bluer=pwmmod_bluer;
}
// renvoie la valeur intermédiaire
byte average( byte *pt1, byte *pt2, int lstep)
{
byte result;
float fresult;
// Les 2 valeurs des indices sont égales donc on ne change rien
if (*pt1==*pt2) {result = *pt1;} // Pas de changement
// Cas 1 on augmente la luminosité
else if (*pt1<*pt2)
// Calcul de la valeur intermédiaire (cf Tuto)
{ fresult = ((float(*pt2-*pt1)/15.0) * float(lstep))+float(*pt1);
result = byte(fresult);
}
else
// Cas 2 on diminue la luminosité
{
fresult = -((float(*pt1-*pt2)/15.0) * float(lstep))+float(*pt1);
result = byte(fresult);
}
return result;
}
void GetTimeFromRTC()
{
DateTime now = rtc.now();
DsHour = now.hour();
DsMin = now.minute();
DsSec = now.second();
//myservo.attach(9); // affecte à l'objet Servo la broche 9 de Arduino
}
void FlushLCD()
{
lcd.setCursor(9,0);
// Ex: Blanc : 32%
sprintf(lcdbuf, "Blc:%d%%",lcdw_white*100/255);
lcd.print(lcdbuf);
lcd.setCursor(0,0);
sprintf(lcdbuf, "%.2d:%.2d:%.2d",DsHour,DsMin,DsSec);
lcd.print(lcdbuf);
lcd.setCursor(0,1);
sprintf(lcdbuf, "Bleu:%d%%",lcdw_blue*100/255);
lcd.print(lcdbuf);
lcd.setCursor(9,1);
sprintf(lcdbuf, "Blr:%d%%",lcdw_blue*100/255);
lcd.print(lcdbuf);
}
void loop(void)
{
GetTimeFromRTC();
if( (long)( millis() - LastTimer ) >= 0)
{
SetPWMForLed();
LastTimer+= 60000;
}
Serial.print("Heure RTC : ");
Serial.println(lcdbuf);
FlushLCD();
// for(pos = 0; pos < 45; pos += 1) // boucle qui va de 0 à 180 degrés par pas de 1 degré
// {
// myservo.write(pos); // pilote le servo pour aller à la position 'pos'
// delay(900); // attend 15 ms que le servo atteigne sa nouvelle position
// }
// for(pos = 45; pos>=1; pos-=1) // boucle qui va de 180° à 0 dégré
// {
// myservo.write(pos); // pilote le servo pour aller à la position 'pos'
// delay(900); // attend 15 ms que le servo atteigne sa nouvelle position
// }
delay(900);
}