Rev Author Line No. Line
2030 kakl 1 #include <OneWire.h>
2 #include <Stepper.h>
3 #include <Wire.h>
4  
2033 kakl 5 #define light0 0x44 // A0 = L (I2C light0)
6 #define light1 0x45 // A0 = H (I2C light0)
2030 kakl 7  
8 const int steps = 200; //3200; // change this to fit the number of steps
2033 kakl 9 const int sspeed = 100; // stepper motor speed
2030 kakl 10  
11 // initialize the stepper library on pins
12 Stepper myStepper(steps, 9,10,11,12);
13  
14 // DS18S20 Temperature chip
2033 kakl 15 OneWire ds(5); // 1-Wire
2030 kakl 16 byte addr[8]; // Addres
17  
18 void setup()
19 {
20 pinMode(13, OUTPUT); // LED
21 digitalWrite(13, LOW); // LED ON
22  
23 // initialize the serial port:
24 Serial.begin(9600);
25  
2033 kakl 26 Wire.begin(); // join i2c bus (light0 optional for master)
2030 kakl 27 }
28  
29  
30 byte sense=0;
31  
32 void loop()
33 {
34 byte i;
35 byte present = 0;
36 byte data[12];
37 byte inByte;
38 int dd=0;
39  
40 // if we get a valid byte
41 if (Serial.available() > 0)
42 {
43 // get incoming byte:
44 inByte = Serial.read();
45 Serial.print("Prijat znak: ");
46 Serial.print( inByte, HEX);
47 Serial.println();
48 }
49  
2034 kakl 50 //--------------------------------------------------------- Motor
2030 kakl 51 if(sense)
52 {
53 digitalWrite(13, LOW); // blik
54 // step one revolution in one direction:
55 Serial.println("clockwise");
2033 kakl 56 myStepper.setSpeed(sspeed/2);
57 myStepper.step(30);
58 myStepper.setSpeed(sspeed);
59 myStepper.step(steps-50);
60 myStepper.setSpeed(sspeed/2);
61 myStepper.step(20);
2030 kakl 62 delay(50);
63 digitalWrite(9, LOW);
64 digitalWrite(10, LOW);
65 digitalWrite(11, LOW);
66 digitalWrite(12, LOW);
67 delay(500);
68 sense=0;
69 }
70 else
71 {
72 digitalWrite(13, HIGH); // blik
73 // step one revolution in the other direction:
74 Serial.println("counterclockwise");
2033 kakl 75 myStepper.setSpeed(sspeed/2);
76 myStepper.step(-30);
77 myStepper.setSpeed(sspeed);
78 myStepper.step(-(steps-50));
79 myStepper.setSpeed(sspeed/2);
80 myStepper.step(-20);
2030 kakl 81 delay(50);
82 digitalWrite(9, LOW);
83 digitalWrite(10, LOW);
84 digitalWrite(11, LOW);
85 digitalWrite(12, LOW);
86 delay(500);
87 sense=1;
88 }
89  
2034 kakl 90 //--------------------------------------------------------- 1-Wire bus
91  
92 // search for DS
93 if ( !ds.search(addr))
94 {
95 ds.reset_search();
96 delay(250);
97 return;
98 }
99  
100 if ( OneWire::crc8( addr, 7) != addr[7])
101 {
102 Serial.print("CRC is not valid!\n");
103 return;
104 }
105  
2030 kakl 106 ds.reset();
107 ds.select(addr);
108 ds.write(0x44,1); // start conversion
2033 kakl 109  
110 // Delay for measurement, maybe 750ms is enough, maybe not
111 digitalWrite(13, HIGH); // set the LED on
112 delay(500);
113 digitalWrite(13, LOW); // set the LED off
114 delay(500);
115  
2030 kakl 116 present = ds.reset();
117 ds.select(addr);
118 ds.write(0xBE); // Read Scratchpad
119  
120 Serial.print("P=");
121 Serial.print(present,HEX);
122 Serial.print(" ");
123 for ( i = 0; i < 9; i++) // we need 9 bytes
124 {
125 data[i] = ds.read();
126 Serial.print(data[i], HEX);
127 Serial.print(" ");
128 }
129 Serial.print(" CRC=");
130 Serial.print( OneWire::crc8( data, 8), HEX);
131 Serial.println();
132  
133 Serial.print("Light0: COMMAND=");
134 // Setup device
2033 kakl 135 Wire.beginTransmission(light0);
136 Wire.send(0x00); // sends light0
2030 kakl 137 Wire.send(0b11000001); // setup (eye light sensing; measurement range 2 [4000 lx])
138 Wire.endTransmission(); // stop transmitting
139  
140 // Delay for measurement
141 digitalWrite(13, HIGH); // set the LED on
2033 kakl 142 delay(55);
2030 kakl 143 digitalWrite(13, LOW); // set the LED off
2033 kakl 144 delay(55);
2030 kakl 145  
2033 kakl 146 // Connect to device and set register light0
147 Wire.beginTransmission(light0);
148 Wire.send(0x00); // sends light0
2030 kakl 149 Wire.endTransmission(); // stop transmitting
150 // Connect to device and request one byte
2033 kakl 151 Wire.beginTransmission(light0);
152 Wire.requestFrom(light0, 1);
2030 kakl 153 dd = Wire.receive();
154 Wire.endTransmission(); // stop transmitting
155 Serial.print(dd, HEX);
156  
157 Serial.print(" LSB=");
2033 kakl 158 // Connect to device and set register light0
159 Wire.beginTransmission(light0);
160 Wire.send(0x01); // sends light0
2030 kakl 161 Wire.endTransmission(); // stop transmitting
162 // Connect to device and request one byte
2033 kakl 163 Wire.beginTransmission(light0);
164 Wire.requestFrom(light0, 1);
2030 kakl 165 dd = Wire.receive();
166 Wire.endTransmission(); // stop transmitting
167 Serial.print(dd, HEX);
168  
169 Serial.print(" MSB=");
2033 kakl 170 // Connect to device and set register light0
171 Wire.beginTransmission(light0);
172 Wire.send(0x02); // sends light0
2030 kakl 173 Wire.endTransmission(); // stop transmitting
174 // Connect to device and request one byte
2033 kakl 175 Wire.beginTransmission(light0);
176 Wire.requestFrom(light0, 1);
2030 kakl 177 dd = Wire.receive();
178 Wire.endTransmission(); // stop transmitting
2033 kakl 179 Serial.println(dd, HEX);
180  
181 Serial.print("Light1: COMMAND=");
182 // Setup device
183 Wire.beginTransmission(light1);
184 Wire.send(0x00); // sends light0
185 Wire.send(0b11000001); // setup (eye light sensing; measurement range 2 [4000 lx])
186 Wire.endTransmission(); // stop transmitting
187  
188 // Delay for measurement
189 digitalWrite(13, HIGH); // set the LED on
190 delay(55);
191 digitalWrite(13, LOW); // set the LED off
192 delay(55);
193  
194 // Connect to device and set register light0
195 Wire.beginTransmission(light1);
196 Wire.send(0x00); // sends light0
197 Wire.endTransmission(); // stop transmitting
198 // Connect to device and request one byte
199 Wire.beginTransmission(light1);
200 Wire.requestFrom(light1, 1);
201 dd = Wire.receive();
202 Wire.endTransmission(); // stop transmitting
2030 kakl 203 Serial.print(dd, HEX);
204  
2033 kakl 205 Serial.print(" LSB=");
206 // Connect to device and set register light0
207 Wire.beginTransmission(light1);
208 Wire.send(0x01); // sends light0
209 Wire.endTransmission(); // stop transmitting
210 // Connect to device and request one byte
211 Wire.beginTransmission(light1);
212 Wire.requestFrom(light1, 1);
213 dd = Wire.receive();
214 Wire.endTransmission(); // stop transmitting
215 Serial.print(dd, HEX);
2030 kakl 216  
2033 kakl 217 Serial.print(" MSB=");
218 // Connect to device and set register light0
219 Wire.beginTransmission(light1);
220 Wire.send(0x02); // sends light0
221 Wire.endTransmission(); // stop transmitting
222 // Connect to device and request one byte
223 Wire.beginTransmission(light1);
224 Wire.requestFrom(light1, 1);
225 dd = Wire.receive();
226 Wire.endTransmission(); // stop transmitting
227 Serial.println(dd, HEX);
228  
229 Serial.print("X=");
2034 kakl 230 Serial.print(analogRead(A0)-512, DEC);
2033 kakl 231 Serial.print(" Y=");
2034 kakl 232 Serial.print(analogRead(A1)-512, DEC);
2033 kakl 233 Serial.print(" Z=");
2034 kakl 234 Serial.println(analogRead(A2)-512, DEC);
2030 kakl 235 }
236  
237  
238