Inverted Pendulum / Mbed 2 deprecated IP-Interface

Dependencies:   mbed QEI

Committer:
dlweakley
Date:
Fri Nov 11 01:54:18 2016 +0000
Revision:
4:41bbbaecd322
Parent:
1:b0fc2c9a5d06
Child:
5:74fcd196ff96
motor methods

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Snay22 0:44fc57e03a56 1 #include "mbed.h"
Snay22 0:44fc57e03a56 2
Snay22 0:44fc57e03a56 3 AnalogIn ain(A0);
Snay22 0:44fc57e03a56 4 Serial pc(USBTX, USBRX);
Snay22 0:44fc57e03a56 5 DigitalOut dout(LED1);
dlweakley 4:41bbbaecd322 6
dlweakley 4:41bbbaecd322 7 //motor pins
dlweakley 4:41bbbaecd322 8 DigitalOut d2(PTB23);
dlweakley 4:41bbbaecd322 9 DigitalOut M1PWM(PTC4);
dlweakley 4:41bbbaecd322 10 DigitalOut M2PWM(PTD0);
dlweakley 4:41bbbaecd322 11 DigitalOut M1DIR(PTC3);
dlweakley 4:41bbbaecd322 12 DigitalOut M2DIR(PTC12);
dlweakley 4:41bbbaecd322 13
dlweakley 4:41bbbaecd322 14 void anticlockwise(int steps){
dlweakley 4:41bbbaecd322 15 for (int i = 0; i < 8; i++) {
dlweakley 4:41bbbaecd322 16 switch (i) { // activate the ports A0, A2, A3, A3 in a binary sequence for steps
dlweakley 4:41bbbaecd322 17 case 0: {
dlweakley 4:41bbbaecd322 18 M1PWM=1;
dlweakley 4:41bbbaecd322 19 M1DIR=0;
dlweakley 4:41bbbaecd322 20 M2PWM=0;
dlweakley 4:41bbbaecd322 21 M2DIR=0;
dlweakley 4:41bbbaecd322 22 //wait_ms(1);
dlweakley 4:41bbbaecd322 23 }
dlweakley 4:41bbbaecd322 24 break;
dlweakley 4:41bbbaecd322 25 case 1: {
dlweakley 4:41bbbaecd322 26 M1PWM=1;
dlweakley 4:41bbbaecd322 27 M1DIR=0;
dlweakley 4:41bbbaecd322 28 M2PWM=1;
dlweakley 4:41bbbaecd322 29 M2DIR=0;
dlweakley 4:41bbbaecd322 30 //wait_ms(1);
dlweakley 4:41bbbaecd322 31 }
dlweakley 4:41bbbaecd322 32 break;
dlweakley 4:41bbbaecd322 33 case 2: {
dlweakley 4:41bbbaecd322 34 M1PWM=0;
dlweakley 4:41bbbaecd322 35 M1DIR=0;
dlweakley 4:41bbbaecd322 36 M2PWM=1;
dlweakley 4:41bbbaecd322 37 M2DIR=0;
dlweakley 4:41bbbaecd322 38 //wait_ms(1);
dlweakley 4:41bbbaecd322 39 }
dlweakley 4:41bbbaecd322 40 break;
dlweakley 4:41bbbaecd322 41 case 3: {
dlweakley 4:41bbbaecd322 42 M1PWM=1;
dlweakley 4:41bbbaecd322 43 M1DIR=1;
dlweakley 4:41bbbaecd322 44 M2PWM=1;
dlweakley 4:41bbbaecd322 45 M2DIR=0;
dlweakley 4:41bbbaecd322 46 //wait_ms(1);
dlweakley 4:41bbbaecd322 47 }
dlweakley 4:41bbbaecd322 48 break;
dlweakley 4:41bbbaecd322 49 case 4: {
dlweakley 4:41bbbaecd322 50 M1PWM=1;
dlweakley 4:41bbbaecd322 51 M1DIR=1;
dlweakley 4:41bbbaecd322 52 M2PWM=0;
dlweakley 4:41bbbaecd322 53 M2DIR=0;
dlweakley 4:41bbbaecd322 54 //wait_ms(1);
dlweakley 4:41bbbaecd322 55 }
dlweakley 4:41bbbaecd322 56 break;
dlweakley 4:41bbbaecd322 57 case 5: {
dlweakley 4:41bbbaecd322 58 M1PWM=1;
dlweakley 4:41bbbaecd322 59 M1DIR=1;
dlweakley 4:41bbbaecd322 60 M2PWM=1;
dlweakley 4:41bbbaecd322 61 M2DIR=1;
dlweakley 4:41bbbaecd322 62 //wait_ms(1);
dlweakley 4:41bbbaecd322 63 }
dlweakley 4:41bbbaecd322 64 break;
dlweakley 4:41bbbaecd322 65 case 6: {
dlweakley 4:41bbbaecd322 66 M1PWM=0;
dlweakley 4:41bbbaecd322 67 M1DIR=0;
dlweakley 4:41bbbaecd322 68 M2PWM=1;
dlweakley 4:41bbbaecd322 69 M2DIR=1;
dlweakley 4:41bbbaecd322 70 //wait_ms(1);
dlweakley 4:41bbbaecd322 71 }
dlweakley 4:41bbbaecd322 72 break;
dlweakley 4:41bbbaecd322 73 case 7: {
dlweakley 4:41bbbaecd322 74 M1PWM=1;
dlweakley 4:41bbbaecd322 75 M1DIR=0;
dlweakley 4:41bbbaecd322 76 M2PWM=1;
dlweakley 4:41bbbaecd322 77 M2DIR=1;
dlweakley 4:41bbbaecd322 78 //wait_ms(1);
dlweakley 4:41bbbaecd322 79 }
dlweakley 4:41bbbaecd322 80 break;
dlweakley 4:41bbbaecd322 81 }
dlweakley 4:41bbbaecd322 82 wait_us(500);
dlweakley 4:41bbbaecd322 83 }
dlweakley 4:41bbbaecd322 84
dlweakley 4:41bbbaecd322 85
dlweakley 4:41bbbaecd322 86 // wait time defines the speed
dlweakley 4:41bbbaecd322 87
dlweakley 4:41bbbaecd322 88
dlweakley 4:41bbbaecd322 89 }
dlweakley 4:41bbbaecd322 90
dlweakley 4:41bbbaecd322 91 void clockwise(){
dlweakley 4:41bbbaecd322 92 for (int i = 0; i < 8; i++) {
dlweakley 4:41bbbaecd322 93 switch (i) { // activate the ports A0, A2, A3, A3 in a binary sequence for steps
dlweakley 4:41bbbaecd322 94 case 0: {
dlweakley 4:41bbbaecd322 95 M1PWM=1;
dlweakley 4:41bbbaecd322 96 M1DIR=0;
dlweakley 4:41bbbaecd322 97 M2PWM=1;
dlweakley 4:41bbbaecd322 98 M2DIR=1;
dlweakley 4:41bbbaecd322 99 //wait_us(20);
dlweakley 4:41bbbaecd322 100 }
dlweakley 4:41bbbaecd322 101 break;
dlweakley 4:41bbbaecd322 102 case 1: {
dlweakley 4:41bbbaecd322 103 M1PWM=0;
dlweakley 4:41bbbaecd322 104 M1DIR=0;
dlweakley 4:41bbbaecd322 105 M2PWM=1;
dlweakley 4:41bbbaecd322 106 M2DIR=1;
dlweakley 4:41bbbaecd322 107 //wait_us(20);
dlweakley 4:41bbbaecd322 108 }
dlweakley 4:41bbbaecd322 109 break;
dlweakley 4:41bbbaecd322 110 case 2: {
dlweakley 4:41bbbaecd322 111 M1PWM=1;
dlweakley 4:41bbbaecd322 112 M1DIR=1;
dlweakley 4:41bbbaecd322 113 M2PWM=1;
dlweakley 4:41bbbaecd322 114 M2DIR=1;
dlweakley 4:41bbbaecd322 115 //wait_us(20);
dlweakley 4:41bbbaecd322 116 }
dlweakley 4:41bbbaecd322 117 break;
dlweakley 4:41bbbaecd322 118 case 3: {
dlweakley 4:41bbbaecd322 119 M1PWM=1;
dlweakley 4:41bbbaecd322 120 M1DIR=1;
dlweakley 4:41bbbaecd322 121 M2PWM=0;
dlweakley 4:41bbbaecd322 122 M2DIR=0;
dlweakley 4:41bbbaecd322 123 //wait_us(20);
dlweakley 4:41bbbaecd322 124 }
dlweakley 4:41bbbaecd322 125 break;
dlweakley 4:41bbbaecd322 126 case 4: {
dlweakley 4:41bbbaecd322 127 M1PWM=1;
dlweakley 4:41bbbaecd322 128 M1DIR=1;
dlweakley 4:41bbbaecd322 129 M2PWM=1;
dlweakley 4:41bbbaecd322 130 M2DIR=0;
dlweakley 4:41bbbaecd322 131 //wait_us(20);
dlweakley 4:41bbbaecd322 132 }
dlweakley 4:41bbbaecd322 133 break;
dlweakley 4:41bbbaecd322 134 case 5: {
dlweakley 4:41bbbaecd322 135 M1PWM=0;
dlweakley 4:41bbbaecd322 136 M1DIR=0;
dlweakley 4:41bbbaecd322 137 M2PWM=1;
dlweakley 4:41bbbaecd322 138 M2DIR=0;
dlweakley 4:41bbbaecd322 139 //wait_us(20);
dlweakley 4:41bbbaecd322 140 }
dlweakley 4:41bbbaecd322 141 break;
dlweakley 4:41bbbaecd322 142 case 6: {
dlweakley 4:41bbbaecd322 143 M1PWM=1;
dlweakley 4:41bbbaecd322 144 M1DIR=0;
dlweakley 4:41bbbaecd322 145 M2PWM=1;
dlweakley 4:41bbbaecd322 146 M2DIR=0;
dlweakley 4:41bbbaecd322 147 //wait_us(20);
dlweakley 4:41bbbaecd322 148 }
dlweakley 4:41bbbaecd322 149 break;
dlweakley 4:41bbbaecd322 150 case 7: {
dlweakley 4:41bbbaecd322 151 M1PWM=1;
dlweakley 4:41bbbaecd322 152 M1DIR=0;
dlweakley 4:41bbbaecd322 153 M2PWM=0;
dlweakley 4:41bbbaecd322 154 M2DIR=0;
dlweakley 4:41bbbaecd322 155 //wait_us(20);
dlweakley 4:41bbbaecd322 156 }
dlweakley 4:41bbbaecd322 157 break;
dlweakley 4:41bbbaecd322 158 }
dlweakley 4:41bbbaecd322 159 wait_us(500);
dlweakley 4:41bbbaecd322 160 }
dlweakley 4:41bbbaecd322 161
dlweakley 4:41bbbaecd322 162
dlweakley 4:41bbbaecd322 163 // wait time defines the speed
dlweakley 4:41bbbaecd322 164
dlweakley 4:41bbbaecd322 165
dlweakley 4:41bbbaecd322 166 }
Snay22 0:44fc57e03a56 167
Snay22 0:44fc57e03a56 168 int main() {
Snay22 0:44fc57e03a56 169 pc.baud(9600);
Snay22 1:b0fc2c9a5d06 170 pc.printf("Getting values\r\n");
Snay22 0:44fc57e03a56 171 while(1)
Snay22 0:44fc57e03a56 172 {
Snay22 0:44fc57e03a56 173 if(ain > 0.3f) {
Snay22 0:44fc57e03a56 174 dout = 1;
Snay22 0:44fc57e03a56 175 } else {
Snay22 0:44fc57e03a56 176 dout = 0;
Snay22 0:44fc57e03a56 177 }
Snay22 0:44fc57e03a56 178 wait(0.1);
Snay22 1:b0fc2c9a5d06 179 pc.printf("The value is %f\r\n", ain.read());
Snay22 0:44fc57e03a56 180 }
Snay22 0:44fc57e03a56 181 }