tes ir atas semua
Dependencies: mbed ADS1115 StepperMotor SRF05 TPA81new
main.cpp@5:dae415fb4bad, 2018-02-09 (annotated)
- Committer:
- Ezeuz
- Date:
- Fri Feb 09 15:21:40 2018 +0000
- Revision:
- 5:dae415fb4bad
- Parent:
- 4:9932af380e56
- Child:
- 6:69c59bcab6ea
Before LIDAR & CMPS
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
dmgongora | 1:ef90d942ce78 | 1 | /***************************************************** |
dmgongora | 1:ef90d942ce78 | 2 | - Description: mbed to Dynamixel connection test using |
dmgongora | 1:ef90d942ce78 | 3 | the library |
dmgongora | 1:ef90d942ce78 | 4 | - Requirements: |
dmgongora | 1:ef90d942ce78 | 5 | Dynamixel (i.e. DX116, RX28) |
dmgongora | 1:ef90d942ce78 | 6 | MAX3088/MAX485 (RS485 transceiver) |
dmgongora | 1:ef90d942ce78 | 7 | - Connections: |
dmgongora | 1:ef90d942ce78 | 8 | MAX3088 -- mbed |
dmgongora | 1:ef90d942ce78 | 9 | ====================== |
dmgongora | 1:ef90d942ce78 | 10 | Pin 1 -- Pin 14 |
dmgongora | 1:ef90d942ce78 | 11 | Pin 2 -- Pin 15 |
dmgongora | 1:ef90d942ce78 | 12 | Pin 4 -- Pin 13 |
dmgongora | 1:ef90d942ce78 | 13 | |
dmgongora | 1:ef90d942ce78 | 14 | - Comments: |
dmgongora | 1:ef90d942ce78 | 15 | See schematic for wiring details and class |
dmgongora | 1:ef90d942ce78 | 16 | documentation for available methods. |
dmgongora | 1:ef90d942ce78 | 17 | *****************************************************/ |
Ezeuz | 4:9932af380e56 | 18 | |
dmgongora | 0:79e2a8171b16 | 19 | #include "mbed.h" |
dmgongora | 0:79e2a8171b16 | 20 | #include "Dynamixel.h" |
Ezeuz | 4:9932af380e56 | 21 | #include "TextLCD.h" |
Ezeuz | 4:9932af380e56 | 22 | #include "Uvtron.h" |
Ezeuz | 4:9932af380e56 | 23 | |
Ezeuz | 4:9932af380e56 | 24 | // Defines |
Ezeuz | 4:9932af380e56 | 25 | #define IR_CONST 1.229 |
Ezeuz | 4:9932af380e56 | 26 | |
Ezeuz | 5:dae415fb4bad | 27 | // Settings // Servo comm : tx, rx, txEn, id, baud |
Ezeuz | 5:dae415fb4bad | 28 | TextLCD lcd(PA_5, PA_11, PA_6, PB_12, PA_7, PB_6); // LCD : rs, e, d4-d7 |
Ezeuz | 5:dae415fb4bad | 29 | AnalogIn ir(PC_5); // Sharp IR : analog |
Ezeuz | 4:9932af380e56 | 30 | DigitalOut m2(PA_15); // extinguisher : 12V out M2 |
Ezeuz | 4:9932af380e56 | 31 | DigitalOut m1(PB_7); // extinguisher : 12V out M1, possibly broken |
Ezeuz | 4:9932af380e56 | 32 | DigitalOut led1(PC_13); // GPIO high is 3V3 |
Ezeuz | 4:9932af380e56 | 33 | DigitalOut led2(PC_14); |
Ezeuz | 5:dae415fb4bad | 34 | DigitalIn sound(PA_12); // Sound act : digital, active low |
Ezeuz | 5:dae415fb4bad | 35 | DigitalIn uv(PB_8); // UVTron : digital, pin 2 = active low |
Ezeuz | 5:dae415fb4bad | 36 | Serial pc(USBTX, USBRX); // tx, rx |
Ezeuz | 4:9932af380e56 | 37 | |
Ezeuz | 4:9932af380e56 | 38 | |
Ezeuz | 4:9932af380e56 | 39 | /* About interrupt |
Ezeuz | 4:9932af380e56 | 40 | Where are the interrupt pins on NUCLEO-F411RE? |
Ezeuz | 4:9932af380e56 | 41 | |
Ezeuz | 4:9932af380e56 | 42 | If you use a recent version of the mbed lib (right mouse button, update in the online compiler): |
Ezeuz | 4:9932af380e56 | 43 | Every unique numbered pin. That means you can use any pin as InterruptIn, but you cannot use multiple |
Ezeuz | 4:9932af380e56 | 44 | pins with the same number on a different port as InterruptIn. So you can use PA_1, PB_2, PA_3, PC_4, etc. |
Ezeuz | 4:9932af380e56 | 45 | But in this example you could not use also PE_1. */ |
dmgongora | 0:79e2a8171b16 | 46 | |
dmgongora | 0:79e2a8171b16 | 47 | int main() |
Ezeuz | 4:9932af380e56 | 48 | { |
Ezeuz | 5:dae415fb4bad | 49 | // Servos |
Ezeuz | 5:dae415fb4bad | 50 | for (int i = 1; i <= 18; i++) { |
Ezeuz | 5:dae415fb4bad | 51 | Dynamixel servo(PC_6, PC_7, PC_4, i, 1000000); |
Ezeuz | 5:dae415fb4bad | 52 | servo.setSpeed(100); |
Ezeuz | 5:dae415fb4bad | 53 | servo.move(512); // Midddle, thus 90 deg position |
Ezeuz | 5:dae415fb4bad | 54 | } |
Ezeuz | 5:dae415fb4bad | 55 | |
Ezeuz | 4:9932af380e56 | 56 | float meas = 0; |
Ezeuz | 4:9932af380e56 | 57 | int snd = 0; |
Ezeuz | 5:dae415fb4bad | 58 | int uvo = 0; |
dmgongora | 0:79e2a8171b16 | 59 | |
Ezeuz | 4:9932af380e56 | 60 | while (1) { |
Ezeuz | 4:9932af380e56 | 61 | // LCD |
Ezeuz | 5:dae415fb4bad | 62 | lcd.printf("%.2fcm\n", meas); |
Ezeuz | 5:dae415fb4bad | 63 | pc.printf("%.2fcm ", meas); |
Ezeuz | 5:dae415fb4bad | 64 | |
Ezeuz | 5:dae415fb4bad | 65 | lcd.printf("s%d u%d\n", snd, uvo); |
Ezeuz | 5:dae415fb4bad | 66 | pc.printf("s%d u%d\n", snd, uvo); |
Ezeuz | 4:9932af380e56 | 67 | |
Ezeuz | 4:9932af380e56 | 68 | // IR |
Ezeuz | 4:9932af380e56 | 69 | meas = ir.read(); // Converts and read the analog input value (value from 0.0 to 1.0) |
Ezeuz | 5:dae415fb4bad | 70 | meas = ((1-meas)*26+4); |
Ezeuz | 4:9932af380e56 | 71 | |
Ezeuz | 4:9932af380e56 | 72 | // Extinguisher or 12V output |
Ezeuz | 4:9932af380e56 | 73 | m2 = 1; |
Ezeuz | 4:9932af380e56 | 74 | m1 = 1; |
Ezeuz | 4:9932af380e56 | 75 | |
Ezeuz | 4:9932af380e56 | 76 | // LED |
Ezeuz | 4:9932af380e56 | 77 | led1 = 1; |
Ezeuz | 4:9932af380e56 | 78 | led2 = 1; |
Ezeuz | 4:9932af380e56 | 79 | |
Ezeuz | 4:9932af380e56 | 80 | // Sound Activator |
Ezeuz | 4:9932af380e56 | 81 | snd = sound.read(); |
Ezeuz | 5:dae415fb4bad | 82 | |
Ezeuz | 5:dae415fb4bad | 83 | // UV |
Ezeuz | 5:dae415fb4bad | 84 | uvo = uv.read(); |
Ezeuz | 4:9932af380e56 | 85 | } |
dmgongora | 0:79e2a8171b16 | 86 | } |