programme arduino
Hors ligneProjetvmc Le 08/04/2014 à 11:17 Profil de Projetvmc Configuration de Projetvmc

bonjour a tous . alors voila j'ai un petit problème, je suis bloquer depuis pas mal de temps .Mon projet de bac est une vmc double flux et je dois afficher deux relevé de mesure mes capteurs sont des hyt221 donc il relève la température et l'humidité . Mon problème et le suivant j'arrive a afficher sur un site web avec arduino en serveur un capteur hyt221 mais pas deux . le branchement des deux capteur sont correct mais il ya un conflit avec l'adresse i2c car il ont la même par défaut et je n'arrive pas a les changer donc si quelqu'un sait comment faire sa m'aiderais beaucoup merci d'avance :cry:

Hors ligneAnthony Le 08/04/2014 à 20:35 Profil de Anthony Configuration de Anthony

Admin

Salut :)

Tes capteurs ne sont pas reliés au même PIN donc normalement ils ont deux adresses différentes ;)

Pourrais-tu coller le code et la partie où tu récupères les données des capteurs et poster un peu le schéma physique ?

--

Hors ligneProjetvmc Le 10/04/2014 à 14:06 Profil de Projetvmc Configuration de Projetvmc

J'ai un programme pour scanner l'adresse des capteur et ils ont tous les deux l'addresse 0x28 : mon programme est le suivant : 

#include 

void setup() {

#define HYT_ADDR 0x28 // I2C address of the HYT 221, 271, 371 and most likely the rest of the family

Wire.begin(); // Join I2c Bus as master

pinMode(13, OUTPUT); // Set pin 13 to output for status LED

// I2C Pins on the Arduino Uno are A4 for SDA and A5 for SCL

Serial.begin(9600); // Start serial communication for serial console output

}


void loop() {

double humidity;

double temperature;


Wire.beginTransmission(HYT_ADDR); // Begin transmission with given device on I2C bus

Wire.requestFrom(HYT_ADDR, 4); // Request 4 bytes


// Read the bytes if they are available

// The first two bytes are humidity the last two are temperature

if(Wire.available() == 4) {

int b1 = Wire.read();

int b2 = Wire.read();

int b3 = Wire.read();

int b4 = Wire.read();


Wire.endTransmission(); // End transmission and release I2C bus


// combine humidity bytes and calculate humidity

int rawHumidity = b1 << 8 | b2;

// compound bitwise to get 14 bit measurement first two bits

// are status/stall bit (see intro text)

rawHumidity = (rawHumidity &= 0x3FFF);

humidity = 100.0 / pow(2,14) * rawHumidity;


// combine temperature bytes and calculate temperature

b4 = (b4 >> 2); // Mask away 2 least significant bits see HYT 221 doc

int rawTemperature = b3 << 6 | b4;

temperature = 165.0 / pow(2,14) * rawTemperature - 40;


Serial.print(humidity);

Serial.print("% - Temperature: ");

Serial.println(temperature);

}

else {

Serial.println("Not enough bytes available on wire.");

}

blinkWait();

}


void blinkWait() {

digitalWrite(13, HIGH);

delay(1000);

digitalWrite(13, LOW);

delay(1000);


}

Hors ligneAnthony Le 10/04/2014 à 21:29 Profil de Anthony Configuration de Anthony

Admin

Sur quels pins sont branchés tes capteurs ? Ok pour la LED qui est sur le pin 13, mais ton capteur d'humidité et de température ?

J'ai trouvé ton code exactement recopié ici : https://github.com/stylesuxx/Arduino-HYT-221-I2C/blob/master/i2c_temp/i2c_temp.ino

N'as-tu pas pris un bout de code par hasard (qui du coup ne fonctionne pas) ? tu es encadré pour ton projet ?

--

Hors ligneProjetvmc Le 13/04/2014 à 14:33 Profil de Projetvmc Configuration de Projetvmc

il sont branchés sont les broches A4 et A5 . je n'ai pas de led juste deux capteur hyt221 , je n'ai pas encore fais de programme pour les deux capteur vu qu'ils ont encore la même adresse I2c et c'est la ou je suis bloquer 

ps:désolé pour les fautes d'orthographe Merci :)

Vous avez résolu votre problème avec VIC ? Faites-le savoir sur les réseaux sociaux !
Vulgarisation-informatique.com
Cours en informatique & tutoriels