Rev 2202 Rev 2234
1 // I2C Light Sensor 1 // I2C Light Sensor
2   2  
3 #include <Wire.h> 3 #include <Wire.h>
4   4  
5 #define address 0x44 // A0 = L 5 #define address 0x44 // A0 = L
6   6  
7   7  
8 void setup() 8 void setup()
9 { 9 {
10 Wire.begin(); // join i2c bus (address optional for master) 10 Wire.begin(); // join i2c bus (address optional for master)
11 // I2C pins PD4, PD5 11 // I2C pins PD4, PD5
12 // 12 //
13 pinMode(3, OUTPUT); // LED pro blikani, aby bylo videt, ze to neco dela 13 pinMode(3, OUTPUT); // LED pro blikani, aby bylo videt, ze to neco dela
14 pinMode(5, OUTPUT); // LED pro blikani, aby bylo videt, ze to neco dela 14 pinMode(5, OUTPUT); // LED pro blikani, aby bylo videt, ze to neco dela
15 Serial.begin(9600); // Zmerena intenzita osvetleni se bude vypisovat na seriovou linku 15 Serial.begin(9600); // Zmerena intenzita osvetleni se bude vypisovat na seriovou linku
16 } 16 }
17   17  
18 int data = 0; 18 int data = 0;
19   19  
-   20 void led_blink()
-   21 {
-   22 digitalWrite(3, HIGH); // set the LED on
-   23 delay(500);
-   24 digitalWrite(3, LOW); // set the LED off
-   25 delay(500);
-   26 }
-   27  
-   28  
-   29 int set_light_sensor()
-   30 {
-   31 // Setup device
-   32 Wire.beginTransmission(address);
-   33 Wire.send(0x00); // sends address
-   34 Wire.send(0b11100000); // setup (eye light sensing; measurement range 2 [4000 lx])
-   35 Wire.endTransmission(); // stop transmitting
-   36
-   37 }
-   38  
-   39 int get_light_measurement()
-   40 {
-   41 int lux=0;
-   42  
-   43 // Connect to device and set register address
-   44 Wire.beginTransmission(address);
-   45 Wire.send(0x01); // sends address of LSB reagister
-   46 Wire.endTransmission(); // stop transmitting
-   47
-   48 // Connect to device and request one byte
-   49 Wire.beginTransmission(address);
-   50 Wire.requestFrom(address, 1);
-   51 data = Wire.receive();
-   52 Wire.endTransmission(); // stop transmitting
-   53 lux=data;
-   54
-   55 // Connect to device and set register address
-   56 Wire.beginTransmission(address);
-   57 Wire.send(0x02); // sends address of MSB register
-   58 Wire.endTransmission(); // stop transmitting
-   59
-   60 // Connect to device and request one byte
-   61 Wire.beginTransmission(address);
-   62 Wire.requestFrom(address, 1);
-   63 data = Wire.receive();
-   64 Wire.endTransmission(); // stop transmitting
-   65  
-   66 lux+=data*256;
-   67 return lux;
-   68 }
-   69  
20 void loop() 70 void loop()
21 { 71 {
22 int lux=0; 72 int lux=0;
23   73  
24 /* Serial.print("lux="); 74 /* Serial.print("lux=");
25   75  
26 // Setup device 76 // Setup device
27 digitalWrite(5, HIGH); 77 digitalWrite(5, HIGH);
28   78  
29 Wire.beginTransmission(address); 79 Wire.beginTransmission(address);
30 Wire.send(0x00); // sends address 80 Wire.send(0x00); // sends address
31 Wire.send(0b11000000); // setup (eye light sensing; one time measurement; measurement range 1) 81 Wire.send(0b11000000); // setup (eye light sensing; one time measurement; measurement range 1)
32 Wire.endTransmission(); // stop transmitting 82 Wire.endTransmission(); // stop transmitting
33   83  
34 // Delay for measurement 84 // Delay for measurement
35   85  
36 digitalWrite(5, LOW); // set the LED off 86 digitalWrite(5, LOW); // set the LED off
37 delay(500); 87 delay(500);
38 digitalWrite(5, HIGH); // set the LED on 88 digitalWrite(5, HIGH); // set the LED on
39 delay(500); 89 delay(500);
40   90  
41 // Connect to device and set register address 91 // Connect to device and set register address
42 Wire.beginTransmission(address); 92 Wire.beginTransmission(address);
43 Wire.send(0x00); // sends address 93 Wire.send(0x00); // sends address
44 Wire.endTransmission(); // stop transmitting 94 Wire.endTransmission(); // stop transmitting
45 // Connect to device and request one byte 95 // Connect to device and request one byte
46 Wire.beginTransmission(address); 96 Wire.beginTransmission(address);
47 Wire.requestFrom(address, 1); 97 Wire.requestFrom(address, 1);
48 data = Wire.receive(); 98 data = Wire.receive();
49 Wire.endTransmission(); // stop transmitting 99 Wire.endTransmission(); // stop transmitting
50 // Serial.print(data, HEX); 100 // Serial.print(data, HEX);
51   101  
52 // Serial.print(" LSB="); 102 // Serial.print(" LSB=");
53 // Connect to device and set register address 103 // Connect to device and set register address
54 Wire.beginTransmission(address); 104 Wire.beginTransmission(address);
55 Wire.send(0x01); // sends address 105 Wire.send(0x01); // sends address
56 Wire.endTransmission(); // stop transmitting 106 Wire.endTransmission(); // stop transmitting
57 // Connect to device and request one byte 107 // Connect to device and request one byte
58 Wire.beginTransmission(address); 108 Wire.beginTransmission(address);
59 Wire.requestFrom(address, 1); 109 Wire.requestFrom(address, 1);
60 data = Wire.receive(); 110 data = Wire.receive();
61 Wire.endTransmission(); // stop transmitting 111 Wire.endTransmission(); // stop transmitting
62 // Serial.print(data, HEX); 112 // Serial.print(data, HEX);
63 lux=data; 113 lux=data;
64   114  
65 // Serial.print(" MSB="); 115 // Serial.print(" MSB=");
66 // Connect to device and set register address 116 // Connect to device and set register address
67 Wire.beginTransmission(address); 117 Wire.beginTransmission(address);
68 Wire.send(0x02); // sends address 118 Wire.send(0x02); // sends address
69 Wire.endTransmission(); // stop transmitting 119 Wire.endTransmission(); // stop transmitting
70 // Connect to device and request one byte 120 // Connect to device and request one byte
71 Wire.beginTransmission(address); 121 Wire.beginTransmission(address);
72 Wire.requestFrom(address, 1); 122 Wire.requestFrom(address, 1);
73 data = Wire.receive(); 123 data = Wire.receive();
74 Wire.endTransmission(); // stop transmitting 124 Wire.endTransmission(); // stop transmitting
75 // Serial.print(data, HEX); 125 // Serial.print(data, HEX);
76 lux+=data*256; 126 lux+=data*256;
77 */ -  
78   127  
79 Serial.print((unsigned)lux, DEC); 128 Serial.print((unsigned)lux, DEC);
-   129 */
-   130  
-   131 set_light_sensor();
80 132
81 Serial.print(" luxIR="); -  
82 -  
83 // Setup device -  
84 Wire.beginTransmission(address); -  
85 Wire.send(0x00); // sends address -  
86 Wire.send(0b11100000); // setup (eye light sensing; measurement range 2 [4000 lx]) -  
87 Wire.endTransmission(); // stop transmitting -  
88 -  
89 // Delay for measurement 133 // Delay for measurement
90 digitalWrite(3, HIGH); // set the LED on -  
91 delay(500); 134 led_blink();
92 digitalWrite(3, LOW); // set the LED off -  
93 delay(500); -  
94 -  
95 135
96 // Connect to device and set register address 136 // Connect to device and set register address
97 Wire.beginTransmission(address); 137 Wire.beginTransmission(address);
98 Wire.send(0x00); // sends address 138 Wire.send(0x00); // sends address
99 Wire.endTransmission(); // stop transmitting 139 Wire.endTransmission(); // stop transmitting
100 // Connect to device and request one byte 140 // Connect to device and request one byte
101 Wire.beginTransmission(address); 141 Wire.beginTransmission(address);
102 Wire.requestFrom(address, 1); 142 Wire.requestFrom(address, 1);
103 data = Wire.receive(); 143 data = Wire.receive();
104 Wire.endTransmission(); // stop transmitting 144 Wire.endTransmission(); // stop transmitting
105 // Serial.print(data, HEX); -  
106 145  
107 // Serial.print(" LSB="); -  
108 // Connect to device and set register address -  
109 Wire.beginTransmission(address); -  
110 Wire.send(0x01); // sends address -  
111 Wire.endTransmission(); // stop transmitting -  
112 // Connect to device and request one byte -  
113 Wire.beginTransmission(address); -  
114 Wire.requestFrom(address, 1); -  
115 data = Wire.receive(); -  
116 Wire.endTransmission(); // stop transmitting -  
117 // Serial.print(data, HEX); -  
118 lux=data; 146 // data print
119 -  
120 // Serial.print(" MSB="); 147 Serial.print(" luxIR=");
121 // Connect to device and set register address -  
122 Wire.beginTransmission(address); -  
123 Wire.send(0x02); // sends address -  
124 Wire.endTransmission(); // stop transmitting -  
125 // Connect to device and request one byte -  
126 Wire.beginTransmission(address); -  
127 Wire.requestFrom(address, 1); -  
128 data = Wire.receive(); -  
129 Wire.endTransmission(); // stop transmitting -  
130 // Serial.print(data, HEX); -  
131 lux+=data*256; -  
132 Serial.println((unsigned)lux, DEC); 148 Serial.println((unsigned)get_light_measurement(), DEC);
133 } 149 }
134   150