EE149
/
FinalProject
Final Project files for mBed development.
control.c@12:1aa6b8a74136, 2014-11-16 (annotated)
- Committer:
- lsaristo
- Date:
- Sun Nov 16 09:11:34 2014 +0000
- Revision:
- 12:1aa6b8a74136
- Parent:
- 11:a30f30d3066e
- Child:
- 14:41fa8b95a9ab
Added user-gui python file for drawing surface and file generation. Tried fixing weird wait() issue in direction functions
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
lsaristo | 10:94b068b2ce1d | 1 | /** |
lsaristo | 10:94b068b2ce1d | 2 | * @file control.c |
lsaristo | 10:94b068b2ce1d | 3 | * @brief Implemention of robot control algorithms. |
lsaristo | 10:94b068b2ce1d | 4 | * |
lsaristo | 10:94b068b2ce1d | 5 | * This file should also contain the logic needed to parse |
lsaristo | 10:94b068b2ce1d | 6 | * any drawing file and issue motor commands through functions |
lsaristo | 10:94b068b2ce1d | 7 | * defined in main.h |
lsaristo | 10:94b068b2ce1d | 8 | * |
lsaristo | 10:94b068b2ce1d | 9 | * @author John Wilkey |
lsaristo | 10:94b068b2ce1d | 10 | */ |
lsaristo | 10:94b068b2ce1d | 11 | #include "control.h" |
lsaristo | 10:94b068b2ce1d | 12 | #include "main.h" |
lsaristo | 10:94b068b2ce1d | 13 | extern m3pi pi; |
lsaristo | 10:94b068b2ce1d | 14 | extern DigitalIn start_button; |
lsaristo | 11:a30f30d3066e | 15 | extern DigitalOut oled_2; |
lsaristo | 10:94b068b2ce1d | 16 | |
lsaristo | 10:94b068b2ce1d | 17 | void get_ps_file(char* moves) |
lsaristo | 10:94b068b2ce1d | 18 | { |
lsaristo | 10:94b068b2ce1d | 19 | char* contents; |
lsaristo | 10:94b068b2ce1d | 20 | FILE* fp = fopen(_CANVAS_FILE, "r"); |
lsaristo | 10:94b068b2ce1d | 21 | fseek(fp, 0L, SEEK_END); |
lsaristo | 10:94b068b2ce1d | 22 | int size = ftell(fp); |
lsaristo | 10:94b068b2ce1d | 23 | fseek(fp, 0L, SEEK_SET); |
lsaristo | 10:94b068b2ce1d | 24 | contents = (char*)malloc(size); |
lsaristo | 10:94b068b2ce1d | 25 | fread(contents, size, 1, fp); |
lsaristo | 12:1aa6b8a74136 | 26 | memcpy(moves, contents, size); |
lsaristo | 10:94b068b2ce1d | 27 | fclose(fp); |
lsaristo | 10:94b068b2ce1d | 28 | } |
lsaristo | 10:94b068b2ce1d | 29 | |
lsaristo | 10:94b068b2ce1d | 30 | void robot_loop() |
lsaristo | 10:94b068b2ce1d | 31 | { |
lsaristo | 10:94b068b2ce1d | 32 | start: |
lsaristo | 11:a30f30d3066e | 33 | pi.cls(); |
lsaristo | 11:a30f30d3066e | 34 | pi.locate(0,0); |
lsaristo | 11:a30f30d3066e | 35 | pi.printf("PiCO"); |
lsaristo | 11:a30f30d3066e | 36 | pi.locate(0,1); |
lsaristo | 11:a30f30d3066e | 37 | pi.printf("%f mV", pi.battery()); |
lsaristo | 11:a30f30d3066e | 38 | wait(.5); |
lsaristo | 11:a30f30d3066e | 39 | while(start_button) { |
lsaristo | 11:a30f30d3066e | 40 | oled_2 = 1; |
lsaristo | 11:a30f30d3066e | 41 | wait(.5); |
lsaristo | 11:a30f30d3066e | 42 | pi.locate(0,0); |
lsaristo | 11:a30f30d3066e | 43 | pi.printf("Ready"); |
lsaristo | 11:a30f30d3066e | 44 | oled_2 = 0; |
lsaristo | 11:a30f30d3066e | 45 | } |
lsaristo | 11:a30f30d3066e | 46 | pi.cls(); |
lsaristo | 11:a30f30d3066e | 47 | pi.locate(0,0); |
lsaristo | 11:a30f30d3066e | 48 | pi.printf("GO!"); |
lsaristo | 11:a30f30d3066e | 49 | wait(.5); |
lsaristo | 11:a30f30d3066e | 50 | |
lsaristo | 10:94b068b2ce1d | 51 | while(1) { |
lsaristo | 12:1aa6b8a74136 | 52 | if(!start_button) { |
lsaristo | 10:94b068b2ce1d | 53 | pi.stop(); |
lsaristo | 10:94b068b2ce1d | 54 | goto start; |
lsaristo | 10:94b068b2ce1d | 55 | } |
lsaristo | 12:1aa6b8a74136 | 56 | forward(10); |
lsaristo | 12:1aa6b8a74136 | 57 | right(90); |
lsaristo | 10:94b068b2ce1d | 58 | // |
lsaristo | 10:94b068b2ce1d | 59 | // Right now the robot controller is clearly a very basic |
lsaristo | 12:1aa6b8a74136 | 60 | // 'hello world' loop that must be changed. |
lsaristo | 10:94b068b2ce1d | 61 | } |
lsaristo | 10:94b068b2ce1d | 62 | } |