Difference between revisions of "Temp sens.c"

From eLinux.org
Jump to: navigation, search
(+cat)
 
(4 intermediate revisions by one other user not shown)
Line 5: Line 5:
  
 
<code><pre>
 
<code><pre>
 +
// Temp Sensor Talkies - Andrew Armstrong 2007
 +
 
#include <stdio.h>
 
#include <stdio.h>
 
#include <fcntl.h>
 
#include <fcntl.h>
Line 17: Line 19:
 
int i2c_read (int slaveaddr, unsigned char *buffer, int length)
 
int i2c_read (int slaveaddr, unsigned char *buffer, int length)
 
{
 
{
 +
int i2c_fd;
 +
int red;
  
int i2c_fd;
+
if( (i2c_fd = open( I2C_DEVICE, O_RDWR)) < 0)
int red;
+
{
 +
printf( "Unable to open the i2c port!\n");
 +
return 100;
 +
}
  
if( (i2c_fd = open( I2C_DEVICE, O_RDWR)) < 0)
+
if( ioctl( i2c_fd, I2C_SLAVE, slaveaddr) == -1)
{
+
{
  printf( "Unable to open the i2c port!\n");
+
close( i2c_fd);
  return 100;
+
printf( "Unable to setup the i2c port!\n");
}
+
return 101;
if( ioctl( i2c_fd, I2C_SLAVE, slaveaddr) == -1)
+
}
{
+
  close( i2c_fd);
+
  printf( "Unable to setup the i2c port!\n");
+
  return 101;
+
}
+
  
red=read( i2c_fd, buffer, length);
+
red=read( i2c_fd, buffer, length);
  
close( i2c_fd);
+
close( i2c_fd);
  
return 0;
+
return 0;
}
+
 
+
// Read From I2c
+
 
+
int i2c_write (int slaveaddr, unsigned char *buffer, int length)
+
{
+
 
+
int i2c_fd;
+
 
+
if( (i2c_fd = open( I2C_DEVICE, O_RDWR)) < 0)
+
{
+
  printf( "Unable to open the i2c port!\n");
+
  return 100;
+
}
+
if( ioctl( i2c_fd, I2C_SLAVE, slaveaddr) == -1)
+
{
+
  close( i2c_fd);
+
  printf( "Unable to setup the i2c port!\n");
+
  return 101;
+
}
+
write( i2c_fd, buffer, length);
+
close( i2c_fd);
+
 
+
return 0;
+
 
}
 
}
  
Line 87: Line 65:
  
 
</pre></code>
 
</pre></code>
 +
 +
[[Category:Software]]

Latest revision as of 19:10, 10 February 2008

Grab hold of a "Microchip TC74" temperature sensor IC, a TO220 is easy to handle, and hook it up to the bus using the pins as shown in the hardware hack section. Make sure you use a 3.3v part.


// Temp Sensor Talkies - Andrew Armstrong 2007

#include <stdio.h>
#include <fcntl.h>
#include <sys/ioctl.h>


#define I2C_DEVICE  "/dev/i2c/0"
#define I2C_SLAVE  0x0703

// Write to I2c

int i2c_read (int slaveaddr, unsigned char *buffer, int length)
{
	int i2c_fd;
	int red;

	if( (i2c_fd = open( I2C_DEVICE, O_RDWR)) < 0)
	{
		printf( "Unable to open the i2c port!\n");
		return 100;
	}

	if( ioctl( i2c_fd, I2C_SLAVE, slaveaddr) == -1)
	{
		close( i2c_fd);
		printf( "Unable to setup the i2c port!\n");
		return 101;
	}

	red=read( i2c_fd, buffer, length);

	close( i2c_fd);

	return 0;
}

//Whats the temperature

void printtemp()
{
	char dbuff[2];

	//***TEMPERATURE

	i2c_read (0x48, dbuff, 1);

	printf ("Temperature :- %d degrees C\n", dbuff[0]);
}

int main(void)
{
	printtemp();

	return 0;

}