KevinPersonnic.fr

Je ne suis pas un Kévin !

By

Arduino Capteur/Afficheur de temperature

Ça y est, j’ai craqué pour un arduino. J’ai donc commandé un arduino UNO avec un starter kit histoire d’avoir sous la main de quoi faire quelques montage utile ou inutile.

J’ai commandé tout ça sur le site snootlab qui propose des prix intéressant d’après ce que j’ai pus voir ailleurs sur internet mais surtout propose un forum où on peut facilement trouver de l’aide pour débuter. Je l’ai utilisé pour mes premiers montages, le classique clignotement d’une led ou l’utilisation d’un capteur.

J’ai ensuite voulu créer un petit montage qui puisse m’être utile, sachant que je suis dans le sud avec des ordi dans une pièce sans clim je me suis souvent demandé si il faisait réellement plus chaud dehors que dans ma chambre. Je me suis donc attelé à la création d’un petit thermomètre à affichage led en binaire (car tout geek qui se respecte peut lire au moins sur 6 bits sans réfléchir).

J’ai fait un petit schéma à l’aide du logiciel Fritzing qui permet ça très agréablement :

Au niveau du code et de son upload dans l’arduino j’utilise l’IDE arduino que l’on peut trouver dans les dépôt et qui fait très bien son job. Donc voici le code que j’ai écris pour ce petit montage.

    // Declarations de la variable relative à la résistance
    int R_value = 0;
    double Temperature = 0;
    int calc1 = 0;
    int calc2 = 0;

    // Declaration de la pin analogique reliée aux bornes de la résistance
    char R_pin = 0;

    // MAIN

    void setup(void)
    {
      pinMode(2,OUTPUT);
      pinMode(3,OUTPUT);
      pinMode(4,OUTPUT);
      pinMode(5,OUTPUT);
      pinMode(6,OUTPUT);
      pinMode(7,OUTPUT);
      Serial.begin(9600);               //Mise en place de la communication série, via l'USB, à 9600bps
      analogReference(DEFAULT);  //Positionner la référence pleine échelle du convertisseur pour : 5v=1023
    }

    void loop(void)
    {
     R_value = analogRead(R_pin);
     Temperature = ((R_value*5)*100)/1024;

     calc1 = int(Temperature)%32;
     if(int(Temperature/32)) {digitalWrite(2, HIGH);}
     calc2 = calc1%16;
     if(int(calc1/16)) {digitalWrite(3, HIGH);}
     calc1 = calc2%8;
     if(int(calc2/8)) {digitalWrite(4, HIGH);}
     calc2 = calc1%4;
     if(int(calc1/4)) {digitalWrite(5, HIGH);}
     calc1 = calc2%2;
     if(int(calc2/2)) {digitalWrite(6, HIGH);}
     calc2 = calc1%1;
     if(int(calc1/1)) {digitalWrite(7, HIGH);}

     delay(1000);                         //Attendre 1s

     digitalWrite(2, LOW);
     digitalWrite(3, LOW);
     digitalWrite(4, LOW);
     digitalWrite(5, LOW);
     digitalWrite(6, LOW);
     digitalWrite(7, LOW);
    }

Ce qui au final nous donne une fois monté ceci :

La prochaine étape est d’utiliser 2 afficheurs 7 segments pour afficher la température, en attendant j’ai mis dans une galerie des documents technique suplémentaire sur ce montage.

Be Sociable, Share!

    Laisser un commentaire

    Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

    Vous pouvez utiliser ces balises et attributs HTML : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>