Craig Evans
/
3pi_Lab1_Task1
Lab 1 Task 1
Fork of 3pi_Lab1_Task2 by
main.cpp@4:6f8f591e5bc5, 2019-07-09 (annotated)
- Committer:
- eencae
- Date:
- Tue Jul 09 12:34:13 2019 +0000
- Revision:
- 4:6f8f591e5bc5
- Parent:
- 2:5055dddfbee2
Updated m3pi library
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
eencae | 2:5055dddfbee2 | 1 | /* 3pi Lab 1 Example 1 |
eencae | 0:127d52afa7a9 | 2 | |
eencae | 0:127d52afa7a9 | 3 | (c) Dr Craig A. Evans, University of Leeds |
eencae | 0:127d52afa7a9 | 4 | |
eencae | 0:127d52afa7a9 | 5 | June 2017 |
eencae | 0:127d52afa7a9 | 6 | |
eencae | 0:127d52afa7a9 | 7 | */ |
eencae | 0:127d52afa7a9 | 8 | |
eencae | 0:127d52afa7a9 | 9 | #include "mbed.h" |
eencae | 0:127d52afa7a9 | 10 | #include "m3pi.h" |
eencae | 0:127d52afa7a9 | 11 | |
eencae | 0:127d52afa7a9 | 12 | // API objects |
eencae | 1:3143ad629ed8 | 13 | m3pi robot; |
eencae | 2:5055dddfbee2 | 14 | DigitalIn button_enter(p24); |
eencae | 2:5055dddfbee2 | 15 | AnalogIn pot_S(p20); |
eencae | 2:5055dddfbee2 | 16 | BusOut leds(LED4,LED3,LED2,LED1); |
eencae | 2:5055dddfbee2 | 17 | |
eencae | 2:5055dddfbee2 | 18 | // Global Variables |
eencae | 2:5055dddfbee2 | 19 | const char g_song[] = "!T240 L8 a gafaeada c+adaeafa >aa>bac#ada c#adaeaf4"; |
eencae | 2:5055dddfbee2 | 20 | float speed = 0.0; |
eencae | 0:127d52afa7a9 | 21 | |
eencae | 0:127d52afa7a9 | 22 | // Function Prototypes |
eencae | 0:127d52afa7a9 | 23 | void init(); |
eencae | 0:127d52afa7a9 | 24 | |
eencae | 0:127d52afa7a9 | 25 | // Main Function |
eencae | 0:127d52afa7a9 | 26 | int main() |
eencae | 0:127d52afa7a9 | 27 | { |
eencae | 2:5055dddfbee2 | 28 | // call initialisation function - must do this first |
eencae | 0:127d52afa7a9 | 29 | init(); |
eencae | 2:5055dddfbee2 | 30 | |
eencae | 0:127d52afa7a9 | 31 | // move cursor to position (0,0) - top-left |
eencae | 1:3143ad629ed8 | 32 | robot.lcd_goto_xy(0,0); |
eencae | 2:5055dddfbee2 | 33 | robot.lcd_print("Lab 1",5); // 5 is number of characters in message (max 8) |
eencae | 2:5055dddfbee2 | 34 | robot.lcd_goto_xy(0,1); |
eencae | 2:5055dddfbee2 | 35 | robot.lcd_print("Task 1",6); |
eencae | 2:5055dddfbee2 | 36 | |
eencae | 2:5055dddfbee2 | 37 | // play song then leave a small delay for it to finish playing |
eencae | 2:5055dddfbee2 | 38 | robot.play_music(g_song,sizeof(g_song)); |
eencae | 2:5055dddfbee2 | 39 | wait(5.0); |
eencae | 2:5055dddfbee2 | 40 | |
eencae | 2:5055dddfbee2 | 41 | // loop through 0 to 15, displaying the value in binary on the leds |
eencae | 2:5055dddfbee2 | 42 | for (int value = 0; value < 16; value++) { |
eencae | 2:5055dddfbee2 | 43 | leds = value; |
eencae | 2:5055dddfbee2 | 44 | wait(0.1); |
eencae | 2:5055dddfbee2 | 45 | } |
eencae | 2:5055dddfbee2 | 46 | leds = 0; // turn them all off |
eencae | 2:5055dddfbee2 | 47 | |
eencae | 2:5055dddfbee2 | 48 | // keep looping until button has been pressed |
eencae | 2:5055dddfbee2 | 49 | while (button_enter.read() == 1) { |
eencae | 2:5055dddfbee2 | 50 | |
eencae | 2:5055dddfbee2 | 51 | } |
eencae | 0:127d52afa7a9 | 52 | |
eencae | 0:127d52afa7a9 | 53 | // main loop - this runs forever |
eencae | 0:127d52afa7a9 | 54 | while(1) { |
eencae | 0:127d52afa7a9 | 55 | |
eencae | 2:5055dddfbee2 | 56 | // clear the screen |
eencae | 2:5055dddfbee2 | 57 | robot.lcd_clear(); |
eencae | 2:5055dddfbee2 | 58 | // array to store message in |
eencae | 2:5055dddfbee2 | 59 | char buffer[8]; |
eencae | 2:5055dddfbee2 | 60 | |
eencae | 2:5055dddfbee2 | 61 | // check if enter button is pressed |
eencae | 2:5055dddfbee2 | 62 | if (button_enter.read() == 0) { |
eencae | 2:5055dddfbee2 | 63 | speed = pot_S.read(); // if so, read speed potentiometer and store in variable |
eencae | 2:5055dddfbee2 | 64 | sprintf(buffer,"S=%.3f",speed); // create message and store in array .3 means three decimal places |
eencae | 2:5055dddfbee2 | 65 | } |
eencae | 0:127d52afa7a9 | 66 | |
eencae | 2:5055dddfbee2 | 67 | // go to bottom line of LCD |
eencae | 2:5055dddfbee2 | 68 | robot.lcd_goto_xy(0,1); |
eencae | 2:5055dddfbee2 | 69 | // print the message |
eencae | 2:5055dddfbee2 | 70 | robot.lcd_print(buffer,7); |
eencae | 2:5055dddfbee2 | 71 | |
eencae | 2:5055dddfbee2 | 72 | // small delay |
eencae | 2:5055dddfbee2 | 73 | wait(0.1); |
eencae | 0:127d52afa7a9 | 74 | |
eencae | 0:127d52afa7a9 | 75 | } |
eencae | 0:127d52afa7a9 | 76 | } |
eencae | 0:127d52afa7a9 | 77 | |
eencae | 0:127d52afa7a9 | 78 | // Functions |
eencae | 0:127d52afa7a9 | 79 | void init() |
eencae | 0:127d52afa7a9 | 80 | { |
eencae | 2:5055dddfbee2 | 81 | // initialise the robot |
eencae | 1:3143ad629ed8 | 82 | robot.init(); |
eencae | 2:5055dddfbee2 | 83 | |
eencae | 2:5055dddfbee2 | 84 | // turn on the pull-up resistor on the button |
eencae | 2:5055dddfbee2 | 85 | // the button will read 1 when not pressed and 0 when pressed |
eencae | 2:5055dddfbee2 | 86 | button_enter.mode(PullUp); |
eencae | 2:5055dddfbee2 | 87 | |
eencae | 0:127d52afa7a9 | 88 | } |