Updated to latest version. Added in new version of the Siren

Dependencies:   mbed-src

Fork of VolundrIntroCase2015 by Volundr

Committer:
tweaker1331
Date:
Sun Aug 09 17:28:16 2015 +0000
Revision:
2:7ca8b2154664
Parent:
1:fad61b6e660b
Child:
3:ce51f3857195
Wederom meer functionaliteit. TEST TEST TEST

Who changed what in which revision?

UserRevisionLine numberNew contents of line
tweaker1331 0:9826a0b36948 1 #include "mbed.h"
tweaker1331 1:fad61b6e660b 2 /*
tweaker1331 1:fad61b6e660b 3 MOTOR A
tweaker1331 1:fad61b6e660b 4 ENA - p21
tweaker1331 1:fad61b6e660b 5 IN1 - p5 --> OUT1 - MOTORA+
tweaker1331 1:fad61b6e660b 6 IN2 - p6 --> OUT2 - MOTORA-
tweaker1331 1:fad61b6e660b 7 MOTOR B
tweaker1331 1:fad61b6e660b 8 ENB - p22
tweaker1331 1:fad61b6e660b 9 IN3 - p26 --> OUT3 - MOTORB+
tweaker1331 1:fad61b6e660b 10 IN4 - p25 --> OUT4 - MOTORB-
tweaker1331 1:fad61b6e660b 11 */
tweaker1331 1:fad61b6e660b 12
tweaker1331 2:7ca8b2154664 13 Timeout systicker;
tweaker1331 2:7ca8b2154664 14
tweaker1331 1:fad61b6e660b 15 PwmOut in1(p5);
tweaker1331 1:fad61b6e660b 16 PwmOut in2(p6);
tweaker1331 1:fad61b6e660b 17
tweaker1331 1:fad61b6e660b 18 PwmOut in3(p26);
tweaker1331 1:fad61b6e660b 19 PwmOut in4(p25);
tweaker1331 1:fad61b6e660b 20
tweaker1331 1:fad61b6e660b 21 DigitalOut en_a(p21);
tweaker1331 1:fad61b6e660b 22 DigitalOut en_b(p22);
tweaker1331 1:fad61b6e660b 23
tweaker1331 1:fad61b6e660b 24 DigitalOut LED(LED1);
tweaker1331 1:fad61b6e660b 25
tweaker1331 1:fad61b6e660b 26 Serial bluetooth(p9, p10);
tweaker1331 2:7ca8b2154664 27 Serial pc(USBTX, USBRX);
tweaker1331 2:7ca8b2154664 28
tweaker1331 1:fad61b6e660b 29
tweaker1331 2:7ca8b2154664 30 void SysTick_handler()
tweaker1331 2:7ca8b2154664 31 {
tweaker1331 2:7ca8b2154664 32 in1.write(0.5);
tweaker1331 2:7ca8b2154664 33 in2.write(0.5);
tweaker1331 2:7ca8b2154664 34 in3.write(0.5);
tweaker1331 2:7ca8b2154664 35 in4.write(0.5);
tweaker1331 2:7ca8b2154664 36 }
tweaker1331 1:fad61b6e660b 37
tweaker1331 1:fad61b6e660b 38 /* Initialize timers for the H-bridge*/
tweaker1331 1:fad61b6e660b 39 int init_drive()
tweaker1331 1:fad61b6e660b 40 {
tweaker1331 1:fad61b6e660b 41 // Set PWM frequency to 10 kHz
tweaker1331 1:fad61b6e660b 42 in1.period_us(100);
tweaker1331 1:fad61b6e660b 43 in2.period_us(100);
tweaker1331 1:fad61b6e660b 44 in3.period_us(100);
tweaker1331 1:fad61b6e660b 45 in4.period_us(100);
tweaker1331 1:fad61b6e660b 46 /* Set enable pin high. NEVER set this pins low during driving.
tweaker1331 1:fad61b6e660b 47 There are no protection diodes and with EN low, H-bridge is in Hi-Z mode.
tweaker1331 1:fad61b6e660b 48 This can generate a high voltage that breaks the H-bridge.*/
tweaker1331 1:fad61b6e660b 49 en_a.write(1);
tweaker1331 1:fad61b6e660b 50 en_b.write(1);
tweaker1331 1:fad61b6e660b 51
tweaker1331 1:fad61b6e660b 52 return 1;
tweaker1331 1:fad61b6e660b 53 }
tweaker1331 1:fad61b6e660b 54
tweaker1331 1:fad61b6e660b 55 /*Handler for Bluetooth messages*/
tweaker1331 1:fad61b6e660b 56 void rxCallback()
tweaker1331 1:fad61b6e660b 57 {
tweaker1331 1:fad61b6e660b 58 char a;
tweaker1331 1:fad61b6e660b 59 a = bluetooth.getc();
tweaker1331 1:fad61b6e660b 60 if(a == 'g') {
tweaker1331 1:fad61b6e660b 61 LED = 1;
tweaker1331 1:fad61b6e660b 62 }
tweaker1331 1:fad61b6e660b 63 }
tweaker1331 1:fad61b6e660b 64
tweaker1331 2:7ca8b2154664 65 void rxPCCallback()
tweaker1331 2:7ca8b2154664 66 {
tweaker1331 2:7ca8b2154664 67 int i;
tweaker1331 2:7ca8b2154664 68 char c;
tweaker1331 2:7ca8b2154664 69 c = pc.getc();
tweaker1331 2:7ca8b2154664 70 switch (c) {
tweaker1331 2:7ca8b2154664 71 // Forward direction
tweaker1331 2:7ca8b2154664 72 case 'w':
tweaker1331 2:7ca8b2154664 73 in1.write(1.0);
tweaker1331 2:7ca8b2154664 74 in2.write(0.0);
tweaker1331 2:7ca8b2154664 75 in3.write(1.0);
tweaker1331 2:7ca8b2154664 76 in4.write(0.0);
tweaker1331 2:7ca8b2154664 77 systicker.attach(&SysTick_handler, 0.6);
tweaker1331 2:7ca8b2154664 78 break;
tweaker1331 2:7ca8b2154664 79 // Backward direction
tweaker1331 2:7ca8b2154664 80 case 's':
tweaker1331 2:7ca8b2154664 81 in1.write(0.0);
tweaker1331 2:7ca8b2154664 82 in2.write(1.0);
tweaker1331 2:7ca8b2154664 83 in3.write(0.0);
tweaker1331 2:7ca8b2154664 84 in4.write(1.0);
tweaker1331 2:7ca8b2154664 85 break;
tweaker1331 2:7ca8b2154664 86 // Left direction
tweaker1331 2:7ca8b2154664 87 case 'a':
tweaker1331 2:7ca8b2154664 88 in1.write(1.0);
tweaker1331 2:7ca8b2154664 89 in2.write(0.0);
tweaker1331 2:7ca8b2154664 90 in3.write(0.0);
tweaker1331 2:7ca8b2154664 91 in4.write(0.0);
tweaker1331 2:7ca8b2154664 92 break;
tweaker1331 2:7ca8b2154664 93 case 'd':
tweaker1331 2:7ca8b2154664 94 in1.write(0.0);
tweaker1331 2:7ca8b2154664 95 in2.write(1.0);
tweaker1331 2:7ca8b2154664 96 in3.write(0.0);
tweaker1331 2:7ca8b2154664 97 in4.write(0.0);
tweaker1331 2:7ca8b2154664 98 break;
tweaker1331 2:7ca8b2154664 99 default:
tweaker1331 2:7ca8b2154664 100 in1.write(0.5);
tweaker1331 2:7ca8b2154664 101 in2.write(0.5);
tweaker1331 2:7ca8b2154664 102 in3.write(0.5);
tweaker1331 2:7ca8b2154664 103 in4.write(0.5);
tweaker1331 2:7ca8b2154664 104 }
tweaker1331 2:7ca8b2154664 105
tweaker1331 2:7ca8b2154664 106
tweaker1331 2:7ca8b2154664 107 }
tweaker1331 2:7ca8b2154664 108
tweaker1331 1:fad61b6e660b 109 /* Initialize the bluetooth module*/
tweaker1331 1:fad61b6e660b 110 int init_bluetooth()
tweaker1331 1:fad61b6e660b 111 {
tweaker1331 1:fad61b6e660b 112 bluetooth.baud(9600);
tweaker1331 1:fad61b6e660b 113 //wait(0.2);
tweaker1331 1:fad61b6e660b 114 //bluetooth.printf("AT+NAMETHOR1\r\n");
tweaker1331 1:fad61b6e660b 115 bluetooth.attach(&rxCallback, Serial::RxIrq);
tweaker1331 2:7ca8b2154664 116
tweaker1331 0:9826a0b36948 117 return 1;
tweaker1331 1:fad61b6e660b 118 }
tweaker1331 1:fad61b6e660b 119
tweaker1331 1:fad61b6e660b 120 /* Initialize ADC ports*/
tweaker1331 1:fad61b6e660b 121 int init_ADC()
tweaker1331 1:fad61b6e660b 122 {
tweaker1331 1:fad61b6e660b 123 return 1;
tweaker1331 1:fad61b6e660b 124 }
tweaker1331 1:fad61b6e660b 125
tweaker1331 1:fad61b6e660b 126
tweaker1331 1:fad61b6e660b 127 /* Initialize GPIO's*/
tweaker1331 1:fad61b6e660b 128 int init_GPIO()
tweaker1331 1:fad61b6e660b 129 {
tweaker1331 1:fad61b6e660b 130 return 1;
tweaker1331 0:9826a0b36948 131 }
tweaker1331 0:9826a0b36948 132
tweaker1331 1:fad61b6e660b 133 int main()
tweaker1331 1:fad61b6e660b 134 {
tweaker1331 2:7ca8b2154664 135 pc.baud(9600);
tweaker1331 2:7ca8b2154664 136 //wait(0.2);
tweaker1331 2:7ca8b2154664 137 //bluetooth.printf("AT+NAMETHOR1\r\n");
tweaker1331 2:7ca8b2154664 138 pc.attach(&rxPCCallback, Serial::RxIrq);
tweaker1331 0:9826a0b36948 139
tweaker1331 0:9826a0b36948 140 init_drive();
tweaker1331 2:7ca8b2154664 141 // init_bluetooth();
tweaker1331 2:7ca8b2154664 142
tweaker1331 0:9826a0b36948 143
tweaker1331 2:7ca8b2154664 144
tweaker1331 0:9826a0b36948 145 while(1) {
tweaker1331 2:7ca8b2154664 146
tweaker1331 2:7ca8b2154664 147 /* if(pc.readable()) {
tweaker1331 2:7ca8b2154664 148 bluetooth.putc(pc.getc());
tweaker1331 2:7ca8b2154664 149 }
tweaker1331 2:7ca8b2154664 150 if(bluetooth.readable()) {
tweaker1331 2:7ca8b2154664 151 pc.putc(bluetooth.getc());
tweaker1331 2:7ca8b2154664 152 }*/
tweaker1331 2:7ca8b2154664 153 }
tweaker1331 1:fad61b6e660b 154
tweaker1331 1:fad61b6e660b 155 }