| Line 15... |
Line 15... |
| 15 |
#define SDIN PIN_D4 // seriovy vstup |
15 |
#define SDIN PIN_D4 // seriovy vstup |
| 16 |
#define SDOUT input(PIN_B2) // seriovy vystup |
16 |
#define SDOUT input(PIN_B2) // seriovy vystup |
| 17 |
#define SCLK PIN_D5 // takt |
17 |
#define SCLK PIN_D5 // takt |
| 18 |
|
18 |
|
| 19 |
// pro komunikaci s OLSA, prvni se posila LSB |
19 |
// pro komunikaci s OLSA, prvni se posila LSB |
| 20 |
int main_reset[8]={1,1,0,1,1,0,0,0}; // hlavni reset 0x1B |
20 |
int main_reset[8]={1,1,0,1,1,0,0,0}; // hlavni reset 0x1B |
| 21 |
int set_mode_rg[8]={1,1,1,1,1,0,1,0}; // zapis do MODE registru 0x5F |
21 |
int set_mode_rg[8]={1,1,1,1,1,0,1,0}; // zapis do MODE registru 0x5F |
| 22 |
int clear_mode_rg[8]={0,0,0,0,0,0,0,0}; // nulovani MODE registru 0x00 |
22 |
int clear_mode_rg[8]={0,0,0,0,0,0,0,0}; // nulovani MODE registru 0x00 |
| 23 |
int test[8]={1,0,1,0,1,0,1,0,}; |
23 |
int test[8]={1,0,1,0,1,0,1,0,}; |
| 24 |
|
24 |
|
| 25 |
int left_offset[8]={0,0,0,0,0,0,1,0}; // offset leveho segmentu senzoru 0x40 |
25 |
int left_offset[8]={0,0,0,0,0,0,1,0}; // offset leveho segmentu senzoru 0x40 |
| 26 |
int mid_offset[8]={0,1,0,0,0,0,1,0}; // offset prostredniho segmentu senzoru 0x42 |
26 |
int mid_offset[8]={0,1,0,0,0,0,1,0}; // offset prostredniho segmentu senzoru 0x42 |
| 27 |
int right_offset[8]={0,0,1,0,0,0,1,0}; // offset praveho segmentu senzoru 0x44 |
27 |
int right_offset[8]={0,0,1,0,0,0,1,0}; // offset praveho segmentu senzoru 0x44 |
| 28 |
int offset[8]={1,0,0,0,0,0,0,1}; // minus jedna - pouzit pro vsechny segmenty 0x81 |
28 |
int offset[8]={1,0,0,0,0,0,0,1}; // minus jedna - pouzit pro vsechny segmenty 0x81 |
| 29 |
|
29 |
|
| 30 |
int left_gain[8]={1,0,0,0,0,0,1,0}; // zisk leveho segmentu 0x41 |
30 |
int left_gain[8]={1,0,0,0,0,0,1,0}; // zisk leveho segmentu 0x41 |
| 31 |
int mid_gain[8]={1,1,0,0,0,0,1,0}; // zisk leveho segmentu 0x43 |
31 |
int mid_gain[8]={1,1,0,0,0,0,1,0}; // zisk leveho segmentu 0x43 |
| 32 |
int right_gain[8]={1,0,1,0,0,0,1,0}; // zisk leveho segmentu 0x45 |
32 |
int right_gain[8]={1,0,1,0,0,0,1,0}; // zisk leveho segmentu 0x45 |
| 33 |
int gain[8]={1,0,1,0,0,0,0,0}; // zisk = 5 - pouzit pro vsechny segmenty 0x5 |
33 |
int gain[8]={1,0,1,0,0,0,0,0}; // zisk = 5 - pouzit pro vsechny segmenty 0x5 |
| 34 |
|
34 |
|
| 35 |
int start_int[8]={0,0,0,1,0,0,0,0}; // zacatek integrace 0x08 |
35 |
int start_int[8]={0,0,0,1,0,0,0,0}; // zacatek integrace 0x08 |
| 36 |
int stop_int[8]={0,0,0,0,1,0,0,0}; // konec integrace 0x10 |
36 |
int stop_int[8]={0,0,0,0,1,0,0,0}; // konec integrace 0x10 |
| 37 |
int readout[8]={0,1,0,0,0,0,0,0}; // cteni senzoru 0x02 |
37 |
int readout[8]={0,1,0,0,0,0,0,0}; // cteni senzoru 0x02 |
| 38 |
|
38 |
|
| 39 |
int olsa_lseg[51]={0}; // leva cast radky (pixely 0 - 50) |
39 |
int olsa_lseg[51]={0}; // leva cast radky (pixely 0 - 50) |
| 40 |
int olsa_rseg[51]={0}; // prava cast radky (pixely 51 - 101) |
40 |
int olsa_rseg[51]={0}; // prava cast radky (pixely 51 - 101) |
| 41 |
int8 *line_lp=&olsa_lseg; // ukazatel na levou cast radky |
41 |
int8 *line_lp=&olsa_lseg; // ukazatel na levou cast radky |
| 42 |
int8 *line_rp=&olsa_rseg; // ukazatel na pravou cast radky |
42 |
int8 *line_rp=&olsa_rseg; // ukazatel na pravou cast radky |
| 43 |
|
43 |
|
| 44 |
int8 pixel; // dec hodnota jednoho pixelu |
44 |
int8 pixel_dec; // dec hodnota jednoho pixelu |
| 45 |
int1 bpixel[8]={0}; // bin hodnota jednoho pixelu |
45 |
int1 pixel_bin[8]={0}; // bin hodnota jednoho pixelu |
| 46 |
int8 rpx; // pocet prectenych pixelu |
46 |
int8 pixel_counter; // pocet prectenych pixelu |
| 47 |
int8 rbit; // pocet prectenych bitu |
47 |
int8 rbit; // pocet prectenych bitu |
| 48 |
int8 cbit; // pocet prevedenych pixelu |
48 |
int8 cbit; // pocet prevedenych pixelu |
| 49 |
|
49 |
|
| 50 |
//naraznik |
50 |
//naraznik |
| 51 |
#define BUMPL input(PIN_D6) |
51 |
#define BUMPL input(PIN_D6) |
| Line 70... |
Line 70... |
| 70 |
|
70 |
|
| 71 |
//PODPROGRAMY |
71 |
//PODPROGRAMY |
| 72 |
//SENZORY |
72 |
//SENZORY |
| 73 |
//OLSA01A |
73 |
//OLSA01A |
| 74 |
void olsa_pulses(int count) // vytvori impulzy pro ridici logiku |
74 |
void olsa_pulses(int count) // vytvori impulzy pro ridici logiku |
| 75 |
{ |
75 |
{ |
| 76 |
int8 ct; |
76 |
int8 ct; |
| 77 |
for(ct=0;ct<=count;ct++) |
77 |
for(ct=0;ct<=count;ct++) |
| 78 |
{ |
78 |
{ |
| 79 |
output_high(SCLK); |
79 |
output_high(SCLK); |
| 80 |
output_low(SCLK); |
80 |
output_low(SCLK); |
| 81 |
} |
81 |
} |
| 82 |
} |
82 |
} |
| 83 |
|
83 |
|
| 84 |
void olsa_pulse() // vytvori jeden impulz |
84 |
void olsa_pulse() // vytvori jeden impulz |
| 85 |
{ |
85 |
{ |
| 86 |
output_high(SCLK); |
86 |
output_high(SCLK); |
| 87 |
output_low(SCLK); |
87 |
output_low(SCLK); |
| 88 |
} |
88 |
} |
| 89 |
|
89 |
|
| 90 |
void olsa_send(int8 info[8]) // USART komunikace s modulem OLSA01A - poslani zpravy |
90 |
void olsa_send(int8 info[8]) // USART komunikace s modulem OLSA01A - poslani zpravy |
| 91 |
{ |
91 |
{ |
| 92 |
int *ip; // ukazatel na pole s informaci |
92 |
int *ip; // ukazatel na pole s informaci |
| 93 |
int8 i; // pomocna promenna pro nastaveni 0 nebo 1 na SDIN |
93 |
int8 i; // pomocna promenna pro nastaveni 0 nebo 1 na SDIN |
| 94 |
output_low(SDIN); // start bit |
94 |
output_low(SDIN); // start bit |
| 95 |
olsa_pulse(); |
95 |
olsa_pulse(); |
| 96 |
for(ip=0;ip<8;ip++) // predani informace - 8 bit, LSB prvni > MSB posledni |
96 |
for(ip=0;ip<8;ip++) // predani informace - 8 bit, LSB prvni > MSB posledni |
| 97 |
{ |
97 |
{ |
| 98 |
i=info[ip]; // ziskani hodnoty z pole |
98 |
i=info[ip]; // ziskani hodnoty z pole |
| 99 |
if(i==1) // vyhodnoceni obsahu informace - nastav 1 |
99 |
if(i==1) // vyhodnoceni obsahu informace - nastav 1 |
| 100 |
{ |
100 |
{ |
| 101 |
output_high(SDIN); |
101 |
output_high(SDIN); |
| 102 |
} |
102 |
} |
| 103 |
else // vyhodnoceni obsahu informace - nastav 0 |
103 |
else // vyhodnoceni obsahu informace - nastav 0 |
| 104 |
{ |
104 |
{ |
| 105 |
output_low(SDIN); |
105 |
output_low(SDIN); |
| 106 |
} |
- |
|
| 107 |
olsa_pulse(); |
- |
|
| 108 |
} |
106 |
} |
| - |
|
107 |
olsa_pulse(); |
| - |
|
108 |
} |
| 109 |
output_high(SDIN); // stop bit |
109 |
output_high(SDIN); // stop bit |
| 110 |
olsa_pulse(); |
110 |
olsa_pulse(); |
| 111 |
} |
111 |
} |
| 112 |
|
112 |
|
| 113 |
void olsa_reset() // hlavni RESET - provadi se po zapnuti |
113 |
void olsa_reset() // hlavni RESET - provadi se po zapnuti |
| 114 |
{ |
114 |
{ |
| 115 |
output_low(SDIN); |
115 |
output_low(SDIN); |
| 116 |
output_low(SCLK); |
116 |
output_low(SCLK); |
| 117 |
olsa_pulses(30); // reset radkoveho senzoru |
117 |
olsa_pulses(30); // reset radkoveho senzoru |
| 118 |
output_high(SDIN); |
118 |
output_high(SDIN); |
| 119 |
olsa_pulses(10); // start bit - synchronizace |
119 |
olsa_pulses(10); // start bit - synchronizace |
| 120 |
olsa_send(main_reset); |
120 |
olsa_send(main_reset); |
| 121 |
olsa_pulses(5); |
121 |
olsa_pulses(5); |
| 122 |
olsa_send(set_mode_rg); |
122 |
olsa_send(set_mode_rg); |
| 123 |
olsa_send(clear_mode_rg); |
123 |
olsa_send(clear_mode_rg); |
| 124 |
} |
124 |
} |
| 125 |
|
125 |
|
| 126 |
void olsa_setup() // kompletni nastaveni, provadi se po resetu |
126 |
void olsa_setup() // kompletni nastaveni, provadi se po resetu |
| 127 |
{ |
127 |
{ |
| 128 |
olsa_send(left_offset); // nastaveni leveho segmentu (offset a zisk) |
128 |
olsa_send(left_offset); // nastaveni leveho segmentu (offset a zisk) |
| 129 |
olsa_send(offset); |
129 |
olsa_send(offset); |
| 130 |
olsa_send(left_gain); |
130 |
olsa_send(left_gain); |
| 131 |
olsa_send(gain); |
131 |
olsa_send(gain); |
| 132 |
olsa_send(mid_offset); // nastaveni prostredniho segmentu (offset a zisk) |
132 |
olsa_send(mid_offset); // nastaveni prostredniho segmentu (offset a zisk) |
| Line 135... |
Line 135... |
| 135 |
olsa_send(gain); |
135 |
olsa_send(gain); |
| 136 |
olsa_send(right_offset); // nastaveni praveho segmentu (offset a zisk) |
136 |
olsa_send(right_offset); // nastaveni praveho segmentu (offset a zisk) |
| 137 |
olsa_send(offset); |
137 |
olsa_send(offset); |
| 138 |
olsa_send(right_gain); |
138 |
olsa_send(right_gain); |
| 139 |
olsa_send(gain); |
139 |
olsa_send(gain); |
| 140 |
} |
140 |
} |
| 141 |
|
141 |
|
| 142 |
void olsa_integration() // snimani pixelu |
142 |
void olsa_integration() // snimani pixelu |
| 143 |
{ |
143 |
{ |
| 144 |
olsa_send(start_int); // zacatek integrace senzoru |
144 |
olsa_send(start_int); // zacatek integrace senzoru |
| 145 |
olsa_pulses(22); |
145 |
olsa_pulses(22); |
| 146 |
olsa_send(stop_int); // konec integrace senzoru |
146 |
olsa_send(stop_int); // konec integrace senzoru |
| 147 |
olsa_pulses(5); |
147 |
olsa_pulses(5); |
| 148 |
} |
- |
|
| 149 |
|
- |
|
| 150 |
void olsa_bit_save() // ukladani jednotlivych bitu pixelu |
- |
|
| 151 |
{ |
- |
|
| 152 |
t_bit_save: |
- |
|
| 153 |
if(SDOUT==0) // zacatek prenosu |
- |
|
| 154 |
{ |
- |
|
| 155 |
do // prijimej zpravy |
- |
|
| 156 |
{ |
- |
|
| 157 |
if(SDOUT==1) // zapise do bitu 1 |
- |
|
| 158 |
{ |
- |
|
| 159 |
bpixel[rbit]=1; |
- |
|
| 160 |
} |
- |
|
| 161 |
else // zapise do bitu 0 |
- |
|
| 162 |
{ |
- |
|
| 163 |
bpixel[rbit]=0; |
- |
|
| 164 |
} |
- |
|
| 165 |
rbit++; // zapocita precteni bitu 0 - 7 |
- |
|
| 166 |
} |
- |
|
| 167 |
while(rbit==7); |
- |
|
| 168 |
goto e_bit_save; // skoc na konec prenosu |
- |
|
| 169 |
} |
- |
|
| 170 |
else // posli impulz a cekej na prenos |
- |
|
| 171 |
{ |
- |
|
| 172 |
olsa_pulse(); |
- |
|
| 173 |
goto t_bit_save; // skoci na zacatek prenosu, pokud SDOUT == 1 |
- |
|
| 174 |
} |
- |
|
| 175 |
e_bit_save: |
- |
|
| 176 |
olsa_pulse(); // posle impulz pro generovani stop bitu |
- |
|
| 177 |
} |
- |
|
| 178 |
|
- |
|
| 179 |
void olsa_convert() // prevede pole prijmutych bitu na pixel |
- |
|
| 180 |
{ |
- |
|
| 181 |
pixel=0; // vynuluje pixel |
- |
|
| 182 |
for(cbit=0;cbit<8;cbit++) |
- |
|
| 183 |
{ |
- |
|
| 184 |
pixel|=bpixel[cbit]<<cbit; // prevadi bity do pixelu |
- |
|
| 185 |
} |
- |
|
| 186 |
} |
- |
|
| 187 |
|
148 |
} |
| 188 |
void olsa_byte_save() // zapis pixelu do pole |
- |
|
| 189 |
{ |
- |
|
| 190 |
if(rpx<=51) // leva polovina radky |
- |
|
| 191 |
{ |
- |
|
| 192 |
olsa_lseg[line_lp]=pixel; // zapis do pole |
- |
|
| 193 |
line_lp++; |
- |
|
| 194 |
} |
- |
|
| 195 |
else // prava polovina radky |
- |
|
| 196 |
{ |
- |
|
| 197 |
olsa_rseg[line_rp]=pixel; // zapis od pole |
- |
|
| 198 |
line_rp++; |
- |
|
| 199 |
} |
- |
|
| 200 |
} |
- |
|
| 201 |
|
- |
|
| 202 |
void olsa_evaluate() // vyhodnoceni polohy |
- |
|
| 203 |
{ |
- |
|
| 204 |
} |
- |
|
| 205 |
|
- |
|
| 206 |
void olsa_read() // precist senzor |
- |
|
| 207 |
{ |
- |
|
| 208 |
rpx=0; // cteny pixel = 0 |
- |
|
| 209 |
line_lp=0; // ukazatel na levou cast radky = 0 |
- |
|
| 210 |
line_rp=0; // ukazatel na pravou cast radky = 0 |
- |
|
| 211 |
olsa_send(readout); // prikaz pro cteni ze senzoru |
- |
|
| 212 |
do |
- |
|
| 213 |
{ |
- |
|
| 214 |
olsa_bit_save(); // precte a ulozi bity |
- |
|
| 215 |
olsa_convert(); // prevede bity do jednoho bytu |
- |
|
| 216 |
olsa_byte_save(); // zapise byte do pole |
- |
|
| 217 |
rpx++; |
- |
|
| 218 |
} |
- |
|
| 219 |
while(rpx==101); |
- |
|
| 220 |
olsa_evaluate(); // zjisti pozici cary |
- |
|
| 221 |
} |
- |
|
| 222 |
|
149 |
|
| 223 |
//ZACHRANNE SENZORY |
150 |
//ZACHRANNE SENZORY |
| 224 |
void read_blue_sensors() // cteni nouzovych senzoru |
151 |
void read_blue_sensors() // cteni nouzovych senzoru |
| 225 |
{ |
152 |
{ |
| 226 |
set_adc_channel(LINEL); // cti levy nouzovy senzor |
153 |
set_adc_channel(LINEL); // cti levy nouzovy senzor |
| 227 |
delay_us(10); |
154 |
delay_us(10); |
| 228 |
line_l=read_adc(); |
155 |
line_l=read_adc(); |
| 229 |
set_adc_channel(LINER); // cti pravy nouzovy senzor |
156 |
set_adc_channel(LINER); // cti pravy nouzovy senzor |
| 230 |
delay_us(10); |
157 |
delay_us(10); |
| 231 |
line_r=read_adc(); |
158 |
line_r=read_adc(); |
| 232 |
} |
159 |
} |
| 233 |
|
160 |
|
| 234 |
//PIPAK |
161 |
//PIPAK |
| 235 |
void beep(int16 period,int16 length) |
162 |
void beep(int16 period,int16 length) |
| 236 |
{ |
163 |
{ |
| 237 |
int16 bp; //promenna pro nastaveni delky |
164 |
int16 bp; //promenna pro nastaveni delky |
| 238 |
|
- |
|
| 239 |
for(bp=length;bp>0;bp--) |
165 |
for(bp=length;bp>0;bp--) |
| 240 |
{ |
166 |
{ |
| 241 |
output_high(SOUND_HI); |
167 |
output_high(SOUND_HI); |
| 242 |
output_low(SOUND_LO); |
168 |
output_low(SOUND_LO); |
| 243 |
delay_us(period); |
169 |
delay_us(period); |
| 244 |
output_high(SOUND_LO); |
170 |
output_high(SOUND_LO); |
| 245 |
output_low(SOUND_HI); |
171 |
output_low(SOUND_HI); |
| 246 |
delay_us(period); |
172 |
delay_us(period); |
| 247 |
} |
173 |
} |
| 248 |
} |
174 |
} |
| 249 |
//MOTORY |
175 |
//MOTORY |
| 250 |
void l_motor_fwd(int8 speedl) // levy motor dopredu |
176 |
void l_motor_fwd(int8 speedl) // levy motor dopredu |
| 251 |
{ |
177 |
{ |
| 252 |
output_high(LMF); |
178 |
output_high(LMF); |
| 253 |
output_low(LMB); |
179 |
output_low(LMB); |
| 254 |
set_pwm2_duty(speedl); |
180 |
set_pwm2_duty(speedl); |
| 255 |
} |
181 |
} |
| 256 |
|
182 |
|
| 257 |
void l_motor_bwd(int8 speedl) // levy motor dozadu |
183 |
void l_motor_bwd(int8 speedl) // levy motor dozadu |
| 258 |
{ |
184 |
{ |
| 259 |
output_high(LMB); |
185 |
output_high(LMB); |
| 260 |
output_low(LMF); |
186 |
output_low(LMF); |
| 261 |
set_pwm2_duty(speedl); |
187 |
set_pwm2_duty(speedl); |
| 262 |
} |
188 |
} |
| 263 |
|
189 |
|
| 264 |
void r_motor_fwd(int8 speedr) // pravy motor dopredu |
190 |
void r_motor_fwd(int8 speedr) // pravy motor dopredu |
| 265 |
{ |
191 |
{ |
| 266 |
output_high(RMF); |
192 |
output_high(RMF); |
| 267 |
output_low(RMB); |
193 |
output_low(RMB); |
| 268 |
set_pwm1_duty(speedr); |
194 |
set_pwm1_duty(speedr); |
| 269 |
} |
195 |
} |
| 270 |
|
196 |
|
| 271 |
void r_motor_bwd(int8 speedr) // pravy motor dozadu |
197 |
void r_motor_bwd(int8 speedr) // pravy motor dozadu |
| 272 |
{ |
198 |
{ |
| 273 |
output_high(RMB); |
199 |
output_high(RMB); |
| 274 |
output_low(RMF); |
200 |
output_low(RMF); |
| 275 |
set_pwm1_duty(speedr); |
201 |
set_pwm1_duty(speedr); |
| 276 |
} |
202 |
} |
| 277 |
|
203 |
|
| 278 |
void l_motor_off() // levy motor vypnut |
204 |
void l_motor_off() // levy motor vypnut |
| 279 |
{ |
205 |
{ |
| 280 |
output_low(LMF); |
206 |
output_low(LMF); |
| 281 |
output_low(LMB); |
207 |
output_low(LMB); |
| 282 |
set_pwm2_duty(0); |
208 |
set_pwm2_duty(0); |
| 283 |
} |
209 |
} |
| 284 |
|
210 |
|
| 285 |
void r_motor_off() // pravy motor vypnut |
211 |
void r_motor_off() // pravy motor vypnut |
| 286 |
{ |
212 |
{ |
| 287 |
output_low(RMF); |
213 |
output_low(RMF); |
| 288 |
output_low(RMB); |
214 |
output_low(RMB); |
| 289 |
set_pwm1_duty(0); |
215 |
set_pwm1_duty(0); |
| 290 |
} |
216 |
} |
| 291 |
|
217 |
|
| 292 |
void motor_test() // test motoru |
218 |
void motor_test() // test motoru |
| 293 |
{ |
219 |
{ |
| 294 |
int8 i; |
220 |
int8 i; |
| 295 |
beep(100,200); |
221 |
beep(100,200); |
| 296 |
printf("TEST MOTORU\r\n"); |
222 |
printf("TEST MOTORU\r\n"); |
| 297 |
delay_ms(1000); |
223 |
delay_ms(1000); |
| 298 |
printf("LEVY MOTOR DOPREDU\r\n"); |
224 |
printf("LEVY MOTOR DOPREDU\r\n"); |
| 299 |
delay_ms(1000); |
225 |
delay_ms(1000); |
| 300 |
for(i=0;i<255;i++) |
226 |
for(i=0;i<255;i++) |
| 301 |
{ |
227 |
{ |
| 302 |
l_motor_fwd(i); |
228 |
l_motor_fwd(i); |
| 303 |
printf("RYCHLOST: %u\r\n",i); |
229 |
printf("RYCHLOST: %u\r\n",i); |
| 304 |
delay_ms(5); |
230 |
delay_ms(5); |
| 305 |
} |
231 |
} |
| 306 |
for(i=255;i>0;i--) |
232 |
for(i=255;i>0;i--) |
| 307 |
{ |
233 |
{ |
| 308 |
l_motor_fwd(i); |
234 |
l_motor_fwd(i); |
| 309 |
printf("RYCHLOST: %u\r\n",i); |
235 |
printf("RYCHLOST: %u\r\n",i); |
| 310 |
delay_ms(5); |
236 |
delay_ms(5); |
| 311 |
} |
237 |
} |
| 312 |
printf("LEVY MOTOR DOZADU\r\n"); |
238 |
printf("LEVY MOTOR DOZADU\r\n"); |
| 313 |
delay_ms(1000); |
239 |
delay_ms(1000); |
| 314 |
for(i=0;i<255;i++) |
240 |
for(i=0;i<255;i++) |
| 315 |
{ |
241 |
{ |
| 316 |
l_motor_bwd(i); |
242 |
l_motor_bwd(i); |
| 317 |
printf("RYCHLOST: %u\r\n",i); |
243 |
printf("RYCHLOST: %u\r\n",i); |
| 318 |
delay_ms(5); |
244 |
delay_ms(5); |
| 319 |
} |
245 |
} |
| 320 |
for(i=255;i>0;i--) |
246 |
for(i=255;i>0;i--) |
| 321 |
{ |
247 |
{ |
| 322 |
l_motor_bwd(i); |
248 |
l_motor_bwd(i); |
| 323 |
printf("RYCHLOST: %u\r\n",i); |
249 |
printf("RYCHLOST: %u\r\n",i); |
| 324 |
delay_ms(5); |
250 |
delay_ms(5); |
| 325 |
} |
251 |
} |
| 326 |
printf("PRAVY MOTOR DOPREDU\r\n"); |
252 |
printf("PRAVY MOTOR DOPREDU\r\n"); |
| 327 |
delay_ms(1000); |
253 |
delay_ms(1000); |
| 328 |
for(i=0;i<255;i++) |
254 |
for(i=0;i<255;i++) |
| 329 |
{ |
255 |
{ |
| 330 |
r_motor_fwd(i); |
256 |
r_motor_fwd(i); |
| 331 |
printf("RYCHLOST: %u\r\n",i); |
257 |
printf("RYCHLOST: %u\r\n",i); |
| 332 |
delay_ms(5); |
258 |
delay_ms(5); |
| 333 |
} |
259 |
} |
| 334 |
for(i=255;i>0;i--) |
260 |
for(i=255;i>0;i--) |
| 335 |
{ |
261 |
{ |
| 336 |
r_motor_fwd(i); |
262 |
r_motor_fwd(i); |
| 337 |
printf("RYCHLOST: %u\r\n",i); |
263 |
printf("RYCHLOST: %u\r\n",i); |
| 338 |
delay_ms(5); |
264 |
delay_ms(5); |
| 339 |
} |
265 |
} |
| 340 |
printf("PRAVY MOTOR DOZADU\r\n"); |
266 |
printf("PRAVY MOTOR DOZADU\r\n"); |
| 341 |
delay_ms(1000); |
267 |
delay_ms(1000); |
| 342 |
for(i=0;i<255;i++) |
268 |
for(i=0;i<255;i++) |
| 343 |
{ |
269 |
{ |
| 344 |
r_motor_bwd(i); |
270 |
r_motor_bwd(i); |
| 345 |
printf("RYCHLOST: %u\r\n",i); |
271 |
printf("RYCHLOST: %u\r\n",i); |
| 346 |
delay_ms(5); |
272 |
delay_ms(5); |
| 347 |
} |
273 |
} |
| 348 |
for(i=255;i>0;i--) |
274 |
for(i=255;i>0;i--) |
| 349 |
{ |
275 |
{ |
| 350 |
r_motor_bwd(i); |
276 |
r_motor_bwd(i); |
| 351 |
printf("RYCHLOST: %u\r\n",i); |
277 |
printf("RYCHLOST: %u\r\n",i); |
| 352 |
delay_ms(5); |
278 |
delay_ms(5); |
| 353 |
} |
279 |
} |
| 354 |
l_motor_off(); |
280 |
l_motor_off(); |
| 355 |
r_motor_off(); |
281 |
r_motor_off(); |
| 356 |
printf("KONEC TESTU MOTORU\r\n"); |
282 |
printf("KONEC TESTU MOTORU\r\n"); |
| 357 |
delay_ms(1000); |
283 |
delay_ms(1000); |
| 358 |
} |
284 |
} |
| 359 |
|
285 |
|
| 360 |
void diagnostika() // diagnostika - vypis senzoru s moznosti prepnuti na test motoru |
286 |
void diagnostika() // diagnostika - vypis senzoru s moznosti prepnuti na test motoru |
| 361 |
{ |
287 |
{ |
| 362 |
read_blue_sensors(); |
288 |
read_blue_sensors(); |
| 363 |
printf("LEVA: %u \t",line_l); |
289 |
printf("LEVA: %u \t",line_l); |
| Line 374... |
Line 300... |
| 374 |
} |
300 |
} |
| 375 |
} |
301 |
} |
| 376 |
|
302 |
|
| 377 |
// HLAVNI SMYCKA |
303 |
// HLAVNI SMYCKA |
| 378 |
void main() |
304 |
void main() |
| 379 |
{ |
305 |
{ |
| 380 |
|
- |
|
| 381 |
printf("POWER ON \r\n"); |
306 |
printf("POWER ON \r\n"); |
| 382 |
// NASTAVENI > provede se pouze pri zapnuti |
307 |
// NASTAVENI > provede se pouze pri zapnuti |
| 383 |
setup_adc_ports(sAN0-sAN1-sAN2); |
308 |
setup_adc_ports(sAN0-sAN1-sAN2); |
| 384 |
setup_adc(ADC_CLOCK_INTERNAL); // interni hodniny pro AD prevodnik |
309 |
setup_adc(ADC_CLOCK_INTERNAL); // interni hodniny pro AD prevodnik |
| 385 |
setup_spi(SPI_SS_DISABLED); |
310 |
setup_spi(SPI_SS_DISABLED); |
| Line 394... |
Line 319... |
| 394 |
r_motor_off(); // vypne pravy motor |
319 |
r_motor_off(); // vypne pravy motor |
| 395 |
olsa_reset(); // reset logiky radkoveho senzoru |
320 |
olsa_reset(); // reset logiky radkoveho senzoru |
| 396 |
olsa_setup(); // nastaveni segmentu radkoveho senzoru (offset a zisk) |
321 |
olsa_setup(); // nastaveni segmentu radkoveho senzoru (offset a zisk) |
| 397 |
output_high(LED1); // zhasne LED1 |
322 |
output_high(LED1); // zhasne LED1 |
| 398 |
output_high(LED2); // zhasne LED2 |
323 |
output_high(LED2); // zhasne LED2 |
| - |
|
324 |
olsa_reset(); |
| - |
|
325 |
olsa_setup(); |
| 399 |
beep(500,200); // pipni pri startu |
326 |
beep(500,200); // pipni pri startu |
| 400 |
printf("OK! \r\n"); |
327 |
printf("OK! \r\n"); |
| 401 |
delay_ms(500); |
328 |
delay_ms(500); |
| 402 |
printf("VYBRAT MOD... \r\n"); |
329 |
printf("VYBRAT MOD... \r\n"); |
| 403 |
|
- |
|
| 404 |
while(true) |
330 |
while(true) |
| 405 |
{ |
331 |
{ |
| 406 |
olsa_send(main_reset); |
332 |
olsa_integration(); |
| 407 |
} |
- |
|
| 408 |
} |
333 |
} |
| - |
|
334 |
} |