Thermostat programmable

Bonjour ,je suis aussi un newbee dans cette communauté.

J'aimerai à des fins d'économies d'énergie réaliser un thermostat programmable avec environ 3 consignes par jour réparties sur une semaine (T confort ,T réduit) le tout affiché sur un petit afficheur 2x8 caractères et réglé par un codeur rotatif ALPS avec bouton poussoir type EC12.
La base de temps étant bien sûr réalisée avec un chip RTC et ses composants associés.
Pour le moment seul le LM35 et l'afficheur fonctionnent ,mais le codeur rotatif est dans les choux ,malgré tous les posts que j'ai trouvé sur "Rotary Encoder" ici ,au début les comptages défilent bien puis ils s'emballent.
Je ne sais pas non plus comment à l'aide d'un codeur rotatif ,créer et me balader dans des menus ainsi que régler l'heure et stocker mes paramètres.

Merci de me donner un petit coup de main si quelqu'un a des infos.

regarde la lib des menus.

Par contre, je sais pas si tu fais pour la satisfaction intellectuel ("c'est moi qui l'ai fait") ou par intérêt financier ("ça m'a pas couter trop cher"), mais dans le second cas, va chez un grossiste en chauffage ou au bricotruc du coin, ça te coutera moins cher :wink:

Pour ton encodeur : montre ton code, les boules de cristal sont en panne ces jours ci :wink:

Salut et merci pour ta réponse Taddot.
Pour la lib menus.. je vais la creuser un peu pour essayer de comprendre.
En ce qui concerne le codeur rotatif ,désolé mais pas eu le temps de joindre une syntaxe ce matin,la voici donc tirée de l'Url :
http://www.arduino.cc/playground/Main/RotaryEncoders

et le code :

/* Read Quadrature Encoder

  • Connect Encoder to Pins encoder0PinA, encoder0PinB, and +5V.
  • Sketch by max wolf / www.meso.net
  • v. 0.1 - very basic functions - mw 20061220

*/

int val;
int encoder0PinA = 3;
int encoder0PinB = 4;
int encoder0Pos = 0;
int encoder0PinALast = LOW;
int n = LOW;

void setup() {
pinMode (encoder0PinA,INPUT);
pinMode (encoder0PinB,INPUT);
Serial.begin (9600);
}

void loop() {
n = digitalRead(encoder0PinA);
if ((encoder0PinALast == LOW) && (n == HIGH)) {
if (digitalRead(encoder0PinB) == LOW) {
encoder0Pos--;
} else {
encoder0Pos++;
}
Serial.print (encoder0Pos);
Serial.print ("/");
}
encoder0PinALast = n;
}

les premiers incréments du codeur fonctionnent puis après ça me sort des valeurs complètement erronnées.

Aurais tu une explication .??

Merci

Bonjour

Pour je verais plus quelque chose comme ça pour chercher dou vient le probléme.

int val; 
 int encoder0PinA = 3;
 int encoder0PinB = 4;
 //********************* a modifier  *********************
volatile unsigned int encoder0Pos = 0;
// int encoder0Pos = 0;
//**********************************************************
 int encoder0PinALast = LOW;
 int n = LOW;

 void setup() { 
   pinMode (encoder0PinA,INPUT);
   pinMode (encoder0PinB,INPUT);
   Serial.begin (9600);
 } 

 void loop() { 
  n = digitalRead(encoder0PinA);
  if ((encoder0PinALast == LOW) && (n == HIGH)) {
     if (digitalRead(encoder0PinB) == LOW) {
       encoder0Pos--;
     } else {
       encoder0Pos++;
     }
// ********   a modifier *********************
     Serial.print (encoder0Pos,dec);
     Serial.println ("---encoder0Pos--");
//******************************************
   } 
   encoder0PinALast = n;
 }

Salut et merci pour le code avec quelques explications ,je vais l'essayer.
A plus

bonsoir ,quelqu'un aurait d'autres idées au sujet de ce projet.??
Merci d'avance

bonjour,
pour commencer, je tiens a vous dire que je suis un débutant avec arduino , et aque ne suis pas tres fort en electronique mais cela m’intéresse bcp donc je me suis mis sur arduino.
je voudrai connecter un capteur qui délivre des micro volt donc la question: est ce que il me faut mettre un ampli ou bien il existe une méthode pour travailler sans ampli
merci de me répondre.

bonsoir ,quel type de capteur et à quelles fins.??

bonsoir ,quelqu'un aurait d'autres idées au sujet de ce projet.??
Merci d'avance