PCF8591.c
Go to the documentation of this file.
1 #include <stdio.h>
2 #include <fcntl.h>
3 #include <unistd.h>
4 #include <sys/ioctl.h>
5 #include <linux/i2c-dev.h>
6 #include <ncurses.h> /* libncurses5-dev */
7 
8 /*
9 2014-08-26 PCF8591.c
10 
11 sudo apt-get install libncurses5-dev
12 
13 gcc -o PCF8591 PCF8591.c -lcurses -lpigpio -lpthread
14 
15 sudo ./PCF8591
16 */
17 
18 /*
19 Connect Pi 3V3 - VCC, Ground - Ground, SDA - SDA, SCL - SCL.
20 */
21 
22 #define PCF8591_I2C_ADDR 0x48
23 
24 /*
25  P4 The thermister voltage is provided at AIN 1.
26  P5 The photocell voltage is provided at AIN 0.
27  P6 The single turn 10K ohm trim pot voltage is provided at AIN 3.
28 */
29 
30 /*
31 7 6 5 4 3 2 1 0
32 0 X X X 0 X X X
33  | | | | | |
34  A B B C D D
35 
36 0 1 0 0 0 1 0 0
37 
38 A 0 D/A inactive
39  1 D/A active
40 
41 B 00 single ended inputs
42  01 differential inputs
43  10 single ended and differential
44  11 two differential inputs
45 
46 C 0 no auto inc
47  1 auto inc
48 
49 D 00 select channel 0
50  01 select channel 1
51  10 select channel 2
52  11 select channel 3
53 
54 */
55 
56 int main(int argc, char *argv[])
57 {
58  int i;
59  int r;
60  int handle;
61  char aout;
62  unsigned char command[2];
63  unsigned char value[4];
64  unsigned char str[8];
65 
66  int j;
67  int key;
68 
69  if (gpioInitialise() < 0) return 1;
70 
71  initscr();
72  noecho();
73  cbreak();
74  nodelay(stdscr, true);
75  curs_set(0);
76 
77  printw("PCF8591 + or - to change aout, any other key to quit.");
78 
79  mvaddstr(10, 0, "Brightness");
80  mvaddstr(12, 0, "Temperature");
81  mvaddstr(14, 0, "?");
82  mvaddstr(16, 0, "Resistor");
83 
84  refresh();
85 
87 
88  command[1] = 0;
89  aout = 128;
90 
91  while (1)
92  {
93  for (i=0; i<4; i++)
94  {
95  command[1] = aout;
96  command[0] = 0x40 | ((i + 1) & 0x03); // output enable | read input i
97 
99 
100  usleep(20000);
101 
102  // the read is always one step behind the selected input
103  value[i] = i2cReadByte(handle);
104 
105  sprintf(str, "%3d", value[i]);
106  mvaddstr(10+i+i, 12, str);
107  value[i] = value[i] / 4;
108  move(10 + i + i, 16);
109 
110  for(j = 0; j < 64; j++)
111  if(j < value[i]) addch('*'); else addch(' ');
112  }
113 
114  refresh();
115 
116  key = getch();
117 
118  if ((key == '+') || (key == '=')) aout++;
119  else if ((key == '-') || (key == '_')) aout--;
120  else if (key != -1) break;
121  }
122 
123  endwin();
124 
125  i2cClose(handle);
126 
127  gpioTerminate();
128 
129  return (0);
130 }
131 
DHT22.r
int r
Definition: DHT22.py:259
PCF8591_I2C_ADDR
#define PCF8591_I2C_ADDR
Definition: PCF8591.c:22
gpio_status.stdscr
stdscr
Definition: gpio_status.py:24
PCF8591.handle
handle
Definition: PCF8591.py:19
command
ROSLIB_DECL std::string command(const std::string &cmd)
gpioTerminate
void gpioTerminate(void)
Definition: pigpio.c:8495
gpioInitialise
int gpioInitialise(void)
Definition: pigpio.c:8459
i2cWriteDevice
int i2cWriteDevice(unsigned handle, char *buf, unsigned count)
Definition: pigpio.c:3884
i2cReadByte
int i2cReadByte(unsigned handle)
Definition: pigpio.c:3368
PCF8591.aout
int aout
Definition: PCF8591.py:26
i2cOpen
int i2cOpen(unsigned i2cBus, unsigned i2cAddr, unsigned i2cFlags)
Definition: pigpio.c:3942
i2cClose
int i2cClose(unsigned handle)
Definition: pigpio.c:4017
main
int main(int argc, char *argv[])
Definition: PCF8591.c:56


cob_hand_bridge
Author(s): Mathias Lüdtke
autogenerated on Fri Aug 2 2024 09:40:56