Ce site contient essentiellement des notes de travail. Le contenu est en constante évolution, et loin d'être achevé. (+ d'infos)
La plupart des documentations informatiques sont orientées Debian / Ubuntu.

Electronique/Hardware/Sensors/DS1621/Arduino

De Ordinoscope.net
Sauter à la navigation Sauter à la recherche

Introduction

Le DS1621 est un thermomètre digital en I2C. Ce projet consiste à relever la température en °C depuis un Arduino UNO.

Connexions

I2C hardware sur un Ardino UNO - DS1621
Schéma fait avec Fritzing
Couleur Fonction Arduino UNO Arduino Mega (1280)
Noir GND GND GND
Rouge Vpp +5V +5V
Jaune SDA 4 20
Gris SCL 5 21

Code

#include <Wire.h>

// Simple DS1621 demo
// -- 2007-12-19 - by Jon McPhalen (www.jonmcphalen.com)
// -- 2010-10-23 - by J.-C. Heger (www.ordinoscope.net) - added half celcius degrees

// Pinout:
// Arduino Uno: 4 (SDA) / 5 (SCL)
// Arduino Mega: 20 (SDA) / 21 (SCL)
// DS1621 has A2, A1, and A0 pins connected to GND

#define DEV_ID 0x90 >> 1                    // shift required by wire.h

void setup() {
  Serial.begin (9600);

  Wire.begin ();
  Wire.beginTransmission (DEV_ID);           // connect to DS1621 (#0)
  Wire.send (0xAC);                          // Access Config
  Wire.send (0x02);                          // set for continuous conversion
  Wire.beginTransmission (DEV_ID);           // restart
  Wire.send (0xEE);                          // start conversions
  Wire.endTransmission ();
}


void loop() {
  unsigned int data;

  Wire.beginTransmission (DEV_ID);
  Wire.send (0xAA);                          // read temperature
  Wire.endTransmission ();
  Wire.requestFrom (DEV_ID, 2);              // request 2 bytes from DS1621
  if (Wire.available ()) data  = Wire.receive () << 8;
  if (Wire.available ()) data |= Wire.receive ();

  Serial.print (data >> 8);
  Serial.print (data & 0xFF ? ".5" : ".0");
  Serial.println("");
  
  delay (1000);
}

Références