Go Down

Topic: Logger de temperatura (Read 1 time) previous topic - next topic

flico

Jan 30, 2011, 02:48 pm Last Edit: Apr 30, 2012, 01:02 am by coleoptero Reason: 1
Buscando por la red encontre un proyecto muy bueno de un logger usando un reloj(ds1307), un termometro(ds1631) y una eeprom, entiendo casi todo pero hay un par de lineas que no entiendo que son.

Link del proyecto
http://kennethfinnegan.blogspot.com/2009/10/arduino-temperature-logger.html

Definicion de direcciones

Code: [Select]

//// I2C ADDRESSES ////
// DS1307 RTC chip
#define RTCI2C  (B1101000)
// DS1631 Temp sensor
#define TEMPI2C  (B1001000)
// AT24C1024B EEPROM
#define EEPROMI2C  (B1010000)




Leemos la SRAM del reloj DS1307

Code: [Select]

 // Extract the read count from the clock's battery backed
 // SRAM to make sure we don't overwrite data on the EEPROM
 // after power loss.
 Wire.beginTransmission(RTCI2C);
 Wire.send(0x08);
 Wire.endTransmission();
 Wire.requestFrom(RTCI2C, 2);
 tempreadcount = Wire.receive() << 8; // MSB
 tempreadcount += Wire.receive(); // LSB
 lcd.setCursor(0,0);
 lcd.print("READ CNT: 0x");
 lcd.print(tempreadcount, HEX);


Grabamos la temperatura y actualizamos el contador del reloj
Code: [Select]

void writetemp() {
 digitalWrite(LEDPIN, HIGH);
 long wordaddr = ((long)tempreadcount) * 2;
 // AT24C1024B adds the 17th addr bit to I2C addr
 byte eei2caddr = EEPROMI2C | (wordaddr>>16);
 
 // Write out tempurature to EEPROM
 Wire.beginTransmission(eei2caddr);
 Wire.send((byte)(wordaddr>>8) & 0xFF);
 Wire.send((byte)(wordaddr) & 0xFF);
 Wire.send(temp[0]);
 Wire.send(temp[1]);
 Wire.endTransmission();

 // Update read count here and in clock's SRAM
 tempreadcount++;
 Wire.beginTransmission(RTCI2C);
 Wire.send(0x08);
 Wire.send((byte)(tempreadcount>>8) & 0xFF);
 Wire.send((byte)(tempreadcount) & 0xFF);
 Wire.endTransmission();
 
 delay(10);
 digitalWrite(LEDPIN, LOW);
}


Pero en este codigo no entiendo varias lineas

Code: [Select]

Wire.send((byte)(tempreadcount>>8) & 0xFF);


Code: [Select]

tempreadcount = Wire.receive() << 8; // MSB


Code: [Select]

byte eei2caddr = EEPROMI2C | (wordaddr>>16);


Saludos
Trabajando en ...

    * Control Domotico (En montaje ...)
    http://casitadomotica.blogspot.com/
 

[url=https://bitbucket.org/fmalpartida

chiva

Échale un vistazo a estas páginas:
http://www.arduino.cc/es/Reference/BitwiseAnd
http://www.arduino.cc/es/Reference/Bitshift
http://arduino.cc/forum/index.php/topic,32364.msg236679.html#msg236679

Un saludo
Mercadillo electrónico. Kit iniciación a Arduino, shield LCD a color y más cosas!

Go Up
 


Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

Arduino
via Egeo 16
Torino, 10131
Italy