Lab 1 Task 1

Dependencies:   mbed m3pi

Fork of 3pi_Lab1_Task2 by Craig Evans

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?

UserRevisionLine numberNew 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 }