BertlDrive_V2

Dependencies:   mbed ur_Bertl

Committer:
bulmecisco
Date:
Sun Apr 26 20:05:33 2015 +0000
Revision:
2:1115b3fa7fde
Parent:
1:ca7fdf2e285d
Child:
4:ae6da6b26fc9
Follow Line and BT support for App EV3 Numeric

Who changed what in which revision?

UserRevisionLine numberNew contents of line
DoTTi 0:6d28be2dcb7c 1 #include "mbed.h"
DoTTi 0:6d28be2dcb7c 2 #include "const.h"
DoTTi 0:6d28be2dcb7c 3 #include "ur_Bertl.h"
DoTTi 0:6d28be2dcb7c 4
bulmecisco 2:1115b3fa7fde 5 Serial bt(p9, p10);
bulmecisco 2:1115b3fa7fde 6
bulmecisco 2:1115b3fa7fde 7 const int blinkTime = 200; // ms
bulmecisco 2:1115b3fa7fde 8
bulmecisco 2:1115b3fa7fde 9 class BlinkBertl : public Bertl
bulmecisco 2:1115b3fa7fde 10 {
bulmecisco 2:1115b3fa7fde 11 public:
bulmecisco 2:1115b3fa7fde 12 void BlinkLeftLed();
bulmecisco 2:1115b3fa7fde 13 void BlinkRigthLed();
bulmecisco 2:1115b3fa7fde 14 };
bulmecisco 2:1115b3fa7fde 15
bulmecisco 2:1115b3fa7fde 16 void BlinkBertl::BlinkLeftLed()
bulmecisco 2:1115b3fa7fde 17 {
bulmecisco 2:1115b3fa7fde 18 for(int i = 0; i < 3; i++) {
bulmecisco 2:1115b3fa7fde 19 TurnLedOn(LED_FL2 | LED_BL1);
bulmecisco 2:1115b3fa7fde 20 wait_ms(blinkTime);
bulmecisco 2:1115b3fa7fde 21 TurnLedOff(LED_ALL);
bulmecisco 2:1115b3fa7fde 22 wait_ms(blinkTime);
bulmecisco 2:1115b3fa7fde 23 }
bulmecisco 2:1115b3fa7fde 24 }
bulmecisco 2:1115b3fa7fde 25
bulmecisco 2:1115b3fa7fde 26 void BlinkBertl::BlinkRigthLed()
bulmecisco 2:1115b3fa7fde 27 {
bulmecisco 2:1115b3fa7fde 28 for(int i = 0; i < 3; i++) {
bulmecisco 2:1115b3fa7fde 29 TurnLedOn(LED_FR2 | LED_BR1);
bulmecisco 2:1115b3fa7fde 30 wait_ms(blinkTime);
bulmecisco 2:1115b3fa7fde 31 TurnLedOff(LED_ALL);
bulmecisco 2:1115b3fa7fde 32 wait_ms(blinkTime);
bulmecisco 2:1115b3fa7fde 33 }
bulmecisco 2:1115b3fa7fde 34 }
bulmecisco 2:1115b3fa7fde 35
DoTTi 0:6d28be2dcb7c 36 int main()
DoTTi 0:6d28be2dcb7c 37 {
bulmecisco 2:1115b3fa7fde 38 char cmd, b1, b3;
bulmecisco 2:1115b3fa7fde 39 bool turn = false;
bulmecisco 2:1115b3fa7fde 40
bulmecisco 2:1115b3fa7fde 41 BlinkBertl karel;
bulmecisco 2:1115b3fa7fde 42
bulmecisco 2:1115b3fa7fde 43 bt.printf("Kommands 1:Move, 3:TurnLeft, 5:TurnRight, 7:MoveBack, 6 and 8 stepwise turns \n");
bulmecisco 2:1115b3fa7fde 44 /* karel.Move();
bulmecisco 2:1115b3fa7fde 45 karel.TurnLeft();
bulmecisco 2:1115b3fa7fde 46 karel.TurnRigth();
bulmecisco 2:1115b3fa7fde 47 karel.MoveBackwards();
bulmecisco 2:1115b3fa7fde 48 */
bulmecisco 2:1115b3fa7fde 49 karel.TurnLedOn(LED_ALL);
bulmecisco 2:1115b3fa7fde 50 wait_ms(200);
bulmecisco 2:1115b3fa7fde 51 karel.TurnLedOff(LED_ALL);
bulmecisco 2:1115b3fa7fde 52 wait_ms(200);
bulmecisco 2:1115b3fa7fde 53 while(karel.WaitUntilButtonPressed()) {}
bulmecisco 2:1115b3fa7fde 54 wait(1);
bulmecisco 2:1115b3fa7fde 55 while(karel.WaitUntilButtonPressed())
bulmecisco 2:1115b3fa7fde 56 {
bulmecisco 2:1115b3fa7fde 57 karel.NibbleLeds(karel.GetLineValues());
bulmecisco 2:1115b3fa7fde 58 switch(karel.GetLineValues())
bulmecisco 2:1115b3fa7fde 59 {
bulmecisco 2:1115b3fa7fde 60 case 0x00:
bulmecisco 2:1115b3fa7fde 61 karel.TurnLeftStep(50);
bulmecisco 2:1115b3fa7fde 62 break;
bulmecisco 2:1115b3fa7fde 63 case 0x03: case 0x01: case 0x07:
bulmecisco 2:1115b3fa7fde 64 karel.TurnLeftStep(20);
bulmecisco 2:1115b3fa7fde 65 break;
bulmecisco 2:1115b3fa7fde 66 case 0x0E: case 0x0A: case 0x08:
bulmecisco 2:1115b3fa7fde 67 karel.TurnRigthStep(20);
bulmecisco 2:1115b3fa7fde 68 break;
bulmecisco 2:1115b3fa7fde 69 default:
bulmecisco 2:1115b3fa7fde 70 karel.Move(20);
bulmecisco 2:1115b3fa7fde 71 break;
bulmecisco 2:1115b3fa7fde 72 }
bulmecisco 2:1115b3fa7fde 73 if(!karel.FrontIsClear())
bulmecisco 2:1115b3fa7fde 74 karel.TurnLeftStep(1000);
bulmecisco 2:1115b3fa7fde 75 }
bulmecisco 2:1115b3fa7fde 76 while(true) {
bulmecisco 2:1115b3fa7fde 77 if (bt.readable()) {
bulmecisco 2:1115b3fa7fde 78 b1 = bt.getc();
bulmecisco 2:1115b3fa7fde 79 cmd = bt.getc();
bulmecisco 2:1115b3fa7fde 80 b3 = bt.getc();
bulmecisco 2:1115b3fa7fde 81 //bt.printf("3 Getchar: %x %x %x\n", b1, cmd ,b3);
bulmecisco 2:1115b3fa7fde 82 karel.NibbleLeds(karel.GetLineValues());
bulmecisco 2:1115b3fa7fde 83 switch (cmd) {
bulmecisco 2:1115b3fa7fde 84 case '1':
bulmecisco 2:1115b3fa7fde 85 karel.Move();
bulmecisco 2:1115b3fa7fde 86 break;
bulmecisco 2:1115b3fa7fde 87 case '3':
bulmecisco 2:1115b3fa7fde 88 karel.TurnLeft();
bulmecisco 2:1115b3fa7fde 89 break;
bulmecisco 2:1115b3fa7fde 90 case '5':
bulmecisco 2:1115b3fa7fde 91 karel.TurnRigth();
bulmecisco 2:1115b3fa7fde 92 break;
bulmecisco 2:1115b3fa7fde 93 case '7':
bulmecisco 2:1115b3fa7fde 94 karel.MoveBackwards();
bulmecisco 2:1115b3fa7fde 95 break;
bulmecisco 2:1115b3fa7fde 96 case '6':
bulmecisco 2:1115b3fa7fde 97 karel.TurnLeftStep();
bulmecisco 2:1115b3fa7fde 98 break;
bulmecisco 2:1115b3fa7fde 99 case '8':
bulmecisco 2:1115b3fa7fde 100 karel.TurnRigthStep();
bulmecisco 2:1115b3fa7fde 101 break;
bulmecisco 2:1115b3fa7fde 102 case '0':
bulmecisco 2:1115b3fa7fde 103 karel.BlinkLeftLed();
bulmecisco 2:1115b3fa7fde 104 break;
bulmecisco 2:1115b3fa7fde 105 case '2':
bulmecisco 2:1115b3fa7fde 106 karel.BlinkRigthLed();
bulmecisco 2:1115b3fa7fde 107 break;
bulmecisco 2:1115b3fa7fde 108 default:
bulmecisco 2:1115b3fa7fde 109 break;
bulmecisco 2:1115b3fa7fde 110 }
bulmecisco 2:1115b3fa7fde 111 if(cmd == '9' && turn)
bulmecisco 2:1115b3fa7fde 112 {
bulmecisco 2:1115b3fa7fde 113 turn = !turn;
bulmecisco 2:1115b3fa7fde 114 karel.TurnLedOff(LED_ALL);
bulmecisco 2:1115b3fa7fde 115 } else if(cmd == '9' && !turn)
bulmecisco 2:1115b3fa7fde 116 {
bulmecisco 2:1115b3fa7fde 117 turn = !turn;
bulmecisco 2:1115b3fa7fde 118 karel.TurnLedOn(LED_ALL);
bulmecisco 2:1115b3fa7fde 119 }
bulmecisco 2:1115b3fa7fde 120
bulmecisco 2:1115b3fa7fde 121 }
DoTTi 0:6d28be2dcb7c 122 }
DoTTi 0:6d28be2dcb7c 123 }