User Guide
258. case (char)0xB9:
259. do_lcd_goto_xy();
260. break;
261. case (char)0xBA:
262. auto_calibrate();
263. break;
264. case (char)0xBB:
265. set_pid();
266. break;
267. case (char)0xBC:
268. stop_pid();
269. break;
270. case (char)0xC1:
271. m1_forward();
272. break;
273. case (char)0xC2:
274. m1_backward();
275. break;
276. case (char)0xC5:
277. m2_forward();
278. break;
279. case (char)0xC6:
280. m2_backward();
281. break;
282. default:
283. clear();
284. print(“Bad cmd”);
285. lcd_goto_xy(0,1);
286. print_hex_byte(command);
287. play(“o7l16crc”);
288. continue; // bad command
289. }
290. }
291.
}
10.b Programa serie para maestro.
El programa maestro serie usado en el programa esclavo está incluido en la librería Pololu AVR
Library (ver Section 5.a) en libpololu-avr\examples\3pi-serial-master. Está diseñado para correr
con un LV-168 o en el 3pi como una demostración de lo que es posible, pero probablemente
quieras adaptarlo a tu propio controlador. Para utilizar el programa, debes hacer las siguientes
conexiones entre maestro y esclavo:
GND-GND PD0-PD1 PD1-PD0
Enciende ambos maestro y esclavo. El master mostrará un mensaje “Connect” seguido de la
versión del código esclavo (Ej. “3pi1.0”). El maestro da instrucciones al esclavo para mostrar
“Connect” y tocar una pequeña melodía. Pulsa el botón B en el maestro lo que causará que el
esclavo entre en la rutina de auto-calibración, después puedes manejar el esclavo usando los
botones a y C en el maestro, mientras ves los datos de los sensores en la LCD.
Si pulsas B el esclavo entra en seguimiento de línea PID.
Código fuente
1. #include <pololu/orangutan.h>
2. #include <string.h>
3. /*
4. * 3pi-serial-master - An example serial master program for the Pololu
5. * 3pi Robot. This can run on any board supported by the library;
6. * it is intended as an example of how to use the master/slave
7. * routines.
8. *
* http://www.pololu.com/docs/0J21
* http://www.pololu.com/docs/0J20
11. * http://www.poolu.com/
12. */
13. // Data for generating the characters used in load_custom_characters
14. // and display_readings. By reading levels[] starting at various
15. // offsets, we can generate all of the 7 extra characters needed for a
16. // bargraph. This is also stored in program space.
17. const char levels[] PROGMEM = {
18. 0b00000,










