Bonjour;
Je poste une nouvelle fois mon sujet sur ce forum... Je me permet de recréer un sujet étant donné que l'ancien était un gros foutoir mélangé avec deux autres problèmes que j'avais. Je sais que c'est un peu du n'importe quoi dans les messages on y comprend plus grand chose alors je vais essayer de remettre tout ici clairement. Si ça pose un problème veillez me le signalez je supprimerais ou demanderais qu'on transfère mon post. Excusez-moi d'avance.
Je me présente étudiant en Terminale STI2D et notre projet et de réaliser un stylo 3D (Pour plus d'informations faites une recherche sur : http://www.lestylo3d.com/ c'est vraiment un projet passionnant). Nous sommes dans une phase de recherche de solutions et je suis face à quelques problèmes...
Je résume mon problème :
"Afficher une informations temps de fonctionnement atteint par une led"
Je m'explique, à l'aide d'une RTC (DS1302 ou DS1307) nous allons estimer le temps de fonctionnement du stylo pour prévoir la maintenance du stylo en changeant la tète ou en la nettoyant. Nous voulons donc mémoriser ce temps de fonctionnement lorsque l'on arrête le stylo et le cumuler ce temps lorsqu'on le rallume. Imaginons qu'on a fixé un seuil à 100h d'utilisation, le but serait de faire allumer une led qui indiquerais que les 100h sont dépassé.
Plus précisément nous allons utiliser un capteur ILS, qui lorsque l'on retirera le stylo de son socle le mettra en marche (Mais ça ce n'est pas ma partie) et qui déclenchera le comptage du temps avec la RTC grove(C'est donc ça que je veux réaliser). Une fois reposer, le comptage s’arrêtera et mettra en mémoire le temps d'utilisation dans la ram de la rtc(Mon prof m'a parlé de stocker de l'EEPROM d'arduino car c'est plus simple mais ce qui m’embête c'est tout de mème la limitation de 100 000 écritures). Voila les directives de mon prof j'avoue que je suis un peu perdu dans la réalisation de cette seconde partie..
Je voulais donc continuer dans l'idée de mon prof en stockant sur l'EEPROM d'arduino.
- Pour commencer mon programme pour faire fonctionner ma RTC grove (qui marche) :
#include "DS1307.h"
DS1307 clock;//define a object of DS1307 class
void setup()
{
Serial.begin(9600);
clock.begin();
clock.fillByYMD(2014,2,6);// 06 Fevrier,2014
clock.fillByHMS(17,50,30);//13:53 30"
clock.fillDayOfWeek(THU);//Jeudi
// clock.setTime();//write time to the RTC chip
}
void loop()
{
printTime();
}
/*--------------------------------------------------*
* Fonction: Affiche le temps sur le moniteur série *
*--------------------------------------------------*/
void printTime()
{
clock.getTime();
Affiche_JOUR();
Serial.print(" ");
Affiche_JMA();
Serial.println(" ");
Affiche_HMS();
Serial.print(" ");
delay(500);
}
void Affiche_HMS()
{
Serial.print(clock.hour, DEC);
Serial.print(":");
Serial.print(clock.minute, DEC);
Serial.print(":");
Serial.print(clock.second, DEC);
}
void Affiche_JOUR()
{
switch (clock.dayOfWeek)// Friendly printout the weekday
{
case MON:
Serial.print("LUNDI ");
break;
case TUE:
Serial.print("MARDI ");
break;
case WED:
Serial.print("MERCREDI ");
break;
case THU:
Serial.print("JEUDI ");
break;
case FRI:
Serial.print("VENDREDI ");
break;
case SAT:
Serial.print("SAMEDI ");
break;
case SUN:
Serial.print("DIMANCHE ");
break;
}
}
void Affiche_JMA()
{
Serial.print(clock.dayOfMonth, DEC);
Serial.print("/");
Serial.print(clock.month, DEC);
Serial.print("/");
Serial.print(clock.year+2000, DEC);
Serial.print(" ");
}
- Dans l'hypothèse ou j'utiliserais l'EEPROM je pense partir de ce programme :
Code:#include // the current address in the EEPROM (i.e. which byte // we're going to write to next) int addr = 0; void setup() { } void loop() { // need to divide by 4 because analog inputs range from // 0 to 1023 and each byte of the EEPROM can only hold a // value from 0 to 255. int val = analogRead(0) / 4; // write the value to the appropriate byte of the EEPROM. // these values will remain there when the board is // turned off. EEPROM.write(addr, val); // advance to the next address. there are 512 bytes in // the EEPROM, so go back to 0 when we hit 512. addr = addr + 1; if (addr == 512) addr = 0; delay(100); }
Vous allez me prendre pour un abrutis mais dois-je le remplir de cette manière ?
"EEPROM.write(clock.hour,hour) ;
EEPROM.write(clock.minute,minu );
EEPROM.write(clock.second,sec) ;"
J'ai beaucoup de mal justement dans la programmation.. je tâtonne donc pour essayer .
Merci d'avance de votre aide et du temps que vous prenez pour répondre à mes messages(qui doivent parfois vous rendre dingue), pour les explications et j'en passe! Merci infiniment.
-----