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