Program for testing the ES20X board (version 2.0/2.1) I/O servo ports, motor driver ports, analog inputs, RS232 serial, digital port p5,p6,p7,p8,p11 as digital outputs
Dependencies: MotCon ServoOut mbed-rtos mbed
Fork of mbed_ES20X_V21_Tester by
main.cpp@1:2e28e28f45ba, 2018-09-19 (annotated)
- Committer:
- jebradshaw
- Date:
- Wed Sep 19 15:15:05 2018 +0000
- Revision:
- 1:2e28e28f45ba
- Parent:
- 0:1e2fda723825
updated rtos library
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
jebradshaw | 1:2e28e28f45ba | 1 | // J. Bradshaw 20180918 |
jebradshaw | 0:1e2fda723825 | 2 | // Program for testing I/O on mbed ES201 Dev Board V1.1 |
jebradshaw | 0:1e2fda723825 | 3 | #include "mbed.h" |
jebradshaw | 0:1e2fda723825 | 4 | #include "ServoOut.h" //uses ServoOut.h library for generating servo pulses |
jebradshaw | 0:1e2fda723825 | 5 | #include "MotCon.h" //uses the MotCon.h library for controlling the motor ports |
jebradshaw | 0:1e2fda723825 | 6 | #include "rtos.h" |
jebradshaw | 0:1e2fda723825 | 7 | |
jebradshaw | 0:1e2fda723825 | 8 | #define PI 3.1415926 |
jebradshaw | 0:1e2fda723825 | 9 | |
jebradshaw | 0:1e2fda723825 | 10 | char DB9_M_char; |
jebradshaw | 0:1e2fda723825 | 11 | |
jebradshaw | 0:1e2fda723825 | 12 | DigitalOut led1(LED1); |
jebradshaw | 0:1e2fda723825 | 13 | DigitalOut led3(LED3); |
jebradshaw | 0:1e2fda723825 | 14 | |
jebradshaw | 0:1e2fda723825 | 15 | //PC serial connection |
jebradshaw | 0:1e2fda723825 | 16 | Serial pc(USBTX, USBRX); //tx, rx via USB connection |
jebradshaw | 0:1e2fda723825 | 17 | I2C i2c(p9,p10); //SDA, SCL |
jebradshaw | 0:1e2fda723825 | 18 | Serial DB9_male(p13, p14); //DB9 serial male |
jebradshaw | 0:1e2fda723825 | 19 | |
jebradshaw | 0:1e2fda723825 | 20 | //Port J5 |
jebradshaw | 0:1e2fda723825 | 21 | BusOut bus_J5(p5, p6, p7, p8, p11); |
jebradshaw | 0:1e2fda723825 | 22 | |
jebradshaw | 0:1e2fda723825 | 23 | //header for J5 |
jebradshaw | 0:1e2fda723825 | 24 | DigitalOut J5_p5(p5); |
jebradshaw | 0:1e2fda723825 | 25 | DigitalOut J5_p6(p6); |
jebradshaw | 0:1e2fda723825 | 26 | DigitalOut J5_p7(p7); |
jebradshaw | 0:1e2fda723825 | 27 | DigitalOut J5_p8(p8); |
jebradshaw | 0:1e2fda723825 | 28 | DigitalOut J5_p11(p11); |
jebradshaw | 0:1e2fda723825 | 29 | |
jebradshaw | 0:1e2fda723825 | 30 | //Analog port in J6 |
jebradshaw | 0:1e2fda723825 | 31 | AnalogIn J6_P16(p16); |
jebradshaw | 0:1e2fda723825 | 32 | AnalogIn J6_P17(p17); |
jebradshaw | 0:1e2fda723825 | 33 | AnalogIn J6_P18(p18); |
jebradshaw | 0:1e2fda723825 | 34 | AnalogIn J6_P19(p19); |
jebradshaw | 0:1e2fda723825 | 35 | AnalogIn J6_P20(p20); |
jebradshaw | 0:1e2fda723825 | 36 | |
jebradshaw | 0:1e2fda723825 | 37 | // servo ports p21 - p24 |
jebradshaw | 0:1e2fda723825 | 38 | ServoOut sv1(p21); |
jebradshaw | 0:1e2fda723825 | 39 | ServoOut sv2(p22); |
jebradshaw | 0:1e2fda723825 | 40 | ServoOut sv3(p23); |
jebradshaw | 0:1e2fda723825 | 41 | ServoOut sv4(p24); |
jebradshaw | 0:1e2fda723825 | 42 | |
jebradshaw | 0:1e2fda723825 | 43 | /* |
jebradshaw | 0:1e2fda723825 | 44 | DigitalOut mot1_ph1(p28); |
jebradshaw | 0:1e2fda723825 | 45 | DigitalOut mot1_ph2(p27); |
jebradshaw | 0:1e2fda723825 | 46 | PwmOut mot_en1(p25); |
jebradshaw | 0:1e2fda723825 | 47 | |
jebradshaw | 0:1e2fda723825 | 48 | DigitalOut mot2_ph1(p29); |
jebradshaw | 0:1e2fda723825 | 49 | DigitalOut mot2_ph2(p30); |
jebradshaw | 0:1e2fda723825 | 50 | PwmOut mot_en2(p26); |
jebradshaw | 0:1e2fda723825 | 51 | */ |
jebradshaw | 0:1e2fda723825 | 52 | |
jebradshaw | 0:1e2fda723825 | 53 | MotCon m1(p25, p27, p28); |
jebradshaw | 0:1e2fda723825 | 54 | MotCon m2(p26, p29, p30); |
jebradshaw | 0:1e2fda723825 | 55 | |
jebradshaw | 0:1e2fda723825 | 56 | void mot1_thread(void const *args){ |
jebradshaw | 0:1e2fda723825 | 57 | while(1){ |
jebradshaw | 0:1e2fda723825 | 58 | // Run PWM and servo command signals |
jebradshaw | 0:1e2fda723825 | 59 | for(float cycle=0;cycle<2.0*PI;cycle+=.078){ |
jebradshaw | 0:1e2fda723825 | 60 | sv1 = 1500 + (int)(sin(cycle)*500); |
jebradshaw | 0:1e2fda723825 | 61 | sv2 = 1500 + (int)(cos(cycle)*500); |
jebradshaw | 0:1e2fda723825 | 62 | sv3 = 1500 + (int)(sin(cycle)*500); |
jebradshaw | 0:1e2fda723825 | 63 | sv4 = 1500 + (int)(sin(cycle)*500); |
jebradshaw | 0:1e2fda723825 | 64 | |
jebradshaw | 0:1e2fda723825 | 65 | m1.mot_control(.85*sin(cycle)); |
jebradshaw | 0:1e2fda723825 | 66 | m2.mot_control(.85*cos(cycle)); |
jebradshaw | 0:1e2fda723825 | 67 | |
jebradshaw | 0:1e2fda723825 | 68 | pc.printf("cycle = %.2f \r", cycle); |
jebradshaw | 0:1e2fda723825 | 69 | Thread::wait(10); |
jebradshaw | 0:1e2fda723825 | 70 | } |
jebradshaw | 0:1e2fda723825 | 71 | }//while(1) |
jebradshaw | 0:1e2fda723825 | 72 | } |
jebradshaw | 0:1e2fda723825 | 73 | |
jebradshaw | 0:1e2fda723825 | 74 | void digOut_thread(void const *args){ |
jebradshaw | 0:1e2fda723825 | 75 | //toggle bus I/O for testing |
jebradshaw | 0:1e2fda723825 | 76 | while(1){ |
jebradshaw | 0:1e2fda723825 | 77 | bus_J5 = 0x1f; |
jebradshaw | 0:1e2fda723825 | 78 | Thread::wait(500); |
jebradshaw | 0:1e2fda723825 | 79 | bus_J5 = 0xAA; |
jebradshaw | 0:1e2fda723825 | 80 | Thread::wait(100); |
jebradshaw | 0:1e2fda723825 | 81 | bus_J5 = 0x55; |
jebradshaw | 0:1e2fda723825 | 82 | Thread::wait(100); |
jebradshaw | 0:1e2fda723825 | 83 | bus_J5 = 0xAA; |
jebradshaw | 0:1e2fda723825 | 84 | Thread::wait(100); |
jebradshaw | 0:1e2fda723825 | 85 | bus_J5 = 0x55; |
jebradshaw | 0:1e2fda723825 | 86 | Thread::wait(100); |
jebradshaw | 0:1e2fda723825 | 87 | bus_J5 = 0; //all off |
jebradshaw | 0:1e2fda723825 | 88 | Thread::wait(500); |
jebradshaw | 0:1e2fda723825 | 89 | } |
jebradshaw | 0:1e2fda723825 | 90 | } |
jebradshaw | 0:1e2fda723825 | 91 | |
jebradshaw | 0:1e2fda723825 | 92 | void led1_flash(void const *args){ |
jebradshaw | 0:1e2fda723825 | 93 | while(1){ |
jebradshaw | 0:1e2fda723825 | 94 | led1 = !led1; |
jebradshaw | 0:1e2fda723825 | 95 | Thread::wait(500); |
jebradshaw | 0:1e2fda723825 | 96 | } |
jebradshaw | 0:1e2fda723825 | 97 | } |
jebradshaw | 0:1e2fda723825 | 98 | |
jebradshaw | 0:1e2fda723825 | 99 | void serial_DB9M_test(void const *args){ |
jebradshaw | 0:1e2fda723825 | 100 | while(1){ |
jebradshaw | 0:1e2fda723825 | 101 | for(char tx_char='a';tx_char <= 'z';tx_char++){ |
jebradshaw | 0:1e2fda723825 | 102 | DB9_male.printf("%c", tx_char); |
jebradshaw | 0:1e2fda723825 | 103 | |
jebradshaw | 0:1e2fda723825 | 104 | if(DB9_male.readable()){ |
jebradshaw | 0:1e2fda723825 | 105 | DB9_M_char = DB9_male.getc(); |
jebradshaw | 0:1e2fda723825 | 106 | } |
jebradshaw | 0:1e2fda723825 | 107 | Thread::wait(100); |
jebradshaw | 0:1e2fda723825 | 108 | } |
jebradshaw | 0:1e2fda723825 | 109 | } |
jebradshaw | 0:1e2fda723825 | 110 | } |
jebradshaw | 0:1e2fda723825 | 111 | |
jebradshaw | 0:1e2fda723825 | 112 | void i2c_test(void const *args){ |
jebradshaw | 0:1e2fda723825 | 113 | while(1){ |
jebradshaw | 0:1e2fda723825 | 114 | //i2c.write(0x55); |
jebradshaw | 0:1e2fda723825 | 115 | Thread::wait(10); |
jebradshaw | 0:1e2fda723825 | 116 | } |
jebradshaw | 0:1e2fda723825 | 117 | } |
jebradshaw | 0:1e2fda723825 | 118 | //------------ Main ------------------------------ |
jebradshaw | 0:1e2fda723825 | 119 | int main() { |
jebradshaw | 0:1e2fda723825 | 120 | float analogVal[6]; |
jebradshaw | 0:1e2fda723825 | 121 | |
jebradshaw | 0:1e2fda723825 | 122 | i2c.frequency(100000); |
jebradshaw | 0:1e2fda723825 | 123 | pc.baud(9600); |
jebradshaw | 0:1e2fda723825 | 124 | DB9_male.baud(9600); |
jebradshaw | 0:1e2fda723825 | 125 | |
jebradshaw | 0:1e2fda723825 | 126 | Thread t1(mot1_thread); |
jebradshaw | 0:1e2fda723825 | 127 | Thread t2(digOut_thread); |
jebradshaw | 0:1e2fda723825 | 128 | Thread t3(led1_flash); |
jebradshaw | 0:1e2fda723825 | 129 | Thread t4(serial_DB9M_test); |
jebradshaw | 0:1e2fda723825 | 130 | Thread t5(i2c_test); |
jebradshaw | 0:1e2fda723825 | 131 | |
jebradshaw | 0:1e2fda723825 | 132 | while(1) { |
jebradshaw | 0:1e2fda723825 | 133 | analogVal[0] = J6_P16; |
jebradshaw | 0:1e2fda723825 | 134 | analogVal[1] = J6_P17; |
jebradshaw | 0:1e2fda723825 | 135 | analogVal[2] = J6_P18; |
jebradshaw | 0:1e2fda723825 | 136 | analogVal[3] = J6_P19; |
jebradshaw | 0:1e2fda723825 | 137 | analogVal[4] = J6_P20; |
jebradshaw | 0:1e2fda723825 | 138 | pc.printf("%.2f %.2f %.2f %.2f %.2f DB9M=%c\r\n", analogVal[0],analogVal[1],analogVal[2],analogVal[3],analogVal[4], DB9_M_char); |
jebradshaw | 0:1e2fda723825 | 139 | wait(.05); |
jebradshaw | 0:1e2fda723825 | 140 | } |
jebradshaw | 0:1e2fda723825 | 141 | } |