First Draft, serial print change based on distance

Committer:
liam94
Date:
Fri Jan 21 13:51:49 2022 +0000
Revision:
2:3ace5b4ae9a7
Parent:
1:a1795335ef8c
Child:
3:0b0fbddb6f51
added bus output for LEDs on board and switch states to cycle through

Who changed what in which revision?

UserRevisionLine numberNew contents of line
liam94 0:506531d0531c 1 #include "mbed.h"
liam94 0:506531d0531c 2 #include "ultrasonic.h"
liam94 0:506531d0531c 3 #include "N5110.h"
liam94 0:506531d0531c 4
liam94 2:3ace5b4ae9a7 5 // LEDs on PCB to be connected (1 to 6) - active-low 0 = on and 1 = off
liam94 2:3ace5b4ae9a7 6 BusOut output(PTA1,PTA2,PTC2,PTC3,PTC4,PTD3);
liam94 2:3ace5b4ae9a7 7
liam94 2:3ace5b4ae9a7 8 // array of states in the FSM, each element is the output of the counter
liam94 2:3ace5b4ae9a7 9 // set the output in binary to make it easier, 0 is LED on, 1 is LED off
liam94 2:3ace5b4ae9a7 10 int fsm[6] = {0b111110, 0b111101, 0b111011, 0b110111, 0b101111, 0b011111};
liam94 2:3ace5b4ae9a7 11
liam94 2:3ace5b4ae9a7 12 void dist(int distance);
liam94 2:3ace5b4ae9a7 13
liam94 2:3ace5b4ae9a7 14
liam94 2:3ace5b4ae9a7 15 ultrasonic mu(PTD0, PTC12, .5, 1, &dist); //Set the trigger pin to PTD0 and the echo pin to PTC12
liam94 2:3ace5b4ae9a7 16 //have updates every .5 seconds and a timeout after 1
liam94 2:3ace5b4ae9a7 17 //second, and call dist when the distance changes
liam94 2:3ace5b4ae9a7 18
liam94 2:3ace5b4ae9a7 19 int main()
liam94 1:a1795335ef8c 20 {
liam94 2:3ace5b4ae9a7 21 // set inital state
liam94 2:3ace5b4ae9a7 22 int state = 0;
liam94 2:3ace5b4ae9a7 23
liam94 2:3ace5b4ae9a7 24 mu.startUpdates();//start mesuring the distance
liam94 2:3ace5b4ae9a7 25 while(1)
liam94 2:3ace5b4ae9a7 26 {
liam94 2:3ace5b4ae9a7 27 output = fsm[state]; // output current state
liam94 2:3ace5b4ae9a7 28 // check which state we are in and see which the next state should be
liam94 2:3ace5b4ae9a7 29 switch(state) {
liam94 2:3ace5b4ae9a7 30 case 0:
liam94 2:3ace5b4ae9a7 31 state = 1;
liam94 2:3ace5b4ae9a7 32 break;
liam94 2:3ace5b4ae9a7 33 case 1:
liam94 2:3ace5b4ae9a7 34 state = 2;
liam94 2:3ace5b4ae9a7 35 break;
liam94 2:3ace5b4ae9a7 36 case 2:
liam94 2:3ace5b4ae9a7 37 state = 3;
liam94 2:3ace5b4ae9a7 38 break;
liam94 2:3ace5b4ae9a7 39 case 3:
liam94 2:3ace5b4ae9a7 40 state = 4;
liam94 2:3ace5b4ae9a7 41 break;
liam94 2:3ace5b4ae9a7 42 case 4:
liam94 2:3ace5b4ae9a7 43 state = 5;
liam94 2:3ace5b4ae9a7 44 break;
liam94 2:3ace5b4ae9a7 45 case 5:
liam94 2:3ace5b4ae9a7 46 state = 0;
liam94 2:3ace5b4ae9a7 47 break;
liam94 2:3ace5b4ae9a7 48 default:
liam94 2:3ace5b4ae9a7 49 error("Invalid state"); //invalid state - call error routine
liam94 2:3ace5b4ae9a7 50 // or could jump to starting state i.e. state = 0
liam94 2:3ace5b4ae9a7 51 break;
liam94 2:3ace5b4ae9a7 52 }
liam94 2:3ace5b4ae9a7 53 ThisThread::sleep_for(500);
liam94 2:3ace5b4ae9a7 54
liam94 2:3ace5b4ae9a7 55 mu.checkDistance(); //call checkDistance() as much as possible, as this is where
liam94 2:3ace5b4ae9a7 56 //the class checks if dist needs to be called.
liam94 2:3ace5b4ae9a7 57 }
liam94 2:3ace5b4ae9a7 58 }
liam94 2:3ace5b4ae9a7 59
liam94 2:3ace5b4ae9a7 60 void dist(int distance){
liam94 2:3ace5b4ae9a7 61
liam94 1:a1795335ef8c 62 if (distance > 250){
liam94 1:a1795335ef8c 63 printf("Safe Distance %dmm\r\n", distance);
liam94 1:a1795335ef8c 64 }
liam94 1:a1795335ef8c 65 else if (distance <= 250 and distance > 150){
liam94 1:a1795335ef8c 66 printf("object detected %dmm\r\n", distance);
liam94 1:a1795335ef8c 67 }
liam94 1:a1795335ef8c 68 else if (distance <= 150 and distance > 80){
liam94 1:a1795335ef8c 69 printf("object detected Closer %dmm\r\n", distance);
liam94 1:a1795335ef8c 70 }
liam94 1:a1795335ef8c 71 else if (distance <= 80 and distance > 60){
liam94 1:a1795335ef8c 72 printf("Even Closer %dmm\r\n", distance);
liam94 1:a1795335ef8c 73 }
liam94 1:a1795335ef8c 74 else if (distance <= 60 and distance > 40){
liam94 1:a1795335ef8c 75 printf("Very Very Close %dmm\r\n", distance);
liam94 1:a1795335ef8c 76 }
liam94 1:a1795335ef8c 77 else if (distance <= 40 and distance > 0){
liam94 2:3ace5b4ae9a7 78 printf("You've Hit a Wall %dmm\r\n", distance);
liam94 1:a1795335ef8c 79 }
liam94 2:3ace5b4ae9a7 80 }