Updated to latest version. Added in new version of the Siren
Dependencies: mbed-src
Fork of VolundrIntroCase2015 by
main.cpp@2:7ca8b2154664, 2015-08-09 (annotated)
- 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?
User | Revision | Line number | New 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 | } |