1 | /* mbed specific header files. */
|
2 | #include "mbed.h"
|
3 |
|
4 | /* Helper header files. */
|
5 | #include "DevSPI.h"
|
6 |
|
7 | /* Expansion Board specific header files. */
|
8 | #include "XNucleoIHM02A1.h"
|
9 |
|
10 | #define maxBoards 3
|
11 | XNucleoIHM02A1 *x_nucleo_ihm02a1[maxBoards];
|
12 | PinName const board_CS[4] = {D5,D2,A2,D10};
|
13 |
|
14 | L6470 **motors[maxBoards];
|
15 |
|
16 | int main()
|
17 | {
|
18 | DevSPI dev_spi(D11, D12, D13); // MISO,MOSI,SCK
|
19 |
|
20 | DigitalOut active(D6);
|
21 | active=false;
|
22 |
|
23 | /* Initializing Motor Control Expansion Boards. */
|
24 | for (b = 0; b<maxBoards; ++b) {
|
25 | active=true;
|
26 | x_nucleo_ihm02a1[b] = new XNucleoIHM02A1(&init[0], &init[1], A4, A5, D4, board_CS[b], &dev_spi);
|
27 | active=false;
|
28 | pcTerminal.printf("Board %d %d (%d) initalized\r\n",b,board_CS[b],x_nucleo_ihm02a1[b]);
|
29 | motors[b] = x_nucleo_ihm02a1[b]->get_components();
|
30 | for (m=0; m<2; ++m) {
|
31 | motors[b][m]->hard_hiz(); // shutdown H-bridge
|
32 | result = motors[b] [m] -> get_status();
|
33 | pcTerminal.printf(" Init B:%d M:%d Result:%d\r\n",b,m,result);
|
34 | // wait(1);
|
35 | }
|
36 | // wait(2);
|
37 | }
|
38 |
|
39 | // Move all Motors forward
|
40 |
|
41 | for (b=0; b<maxBoards; ++b) {
|
42 | for (m=0; m<2; ++m) {
|
43 | pcTerminal.printf("Board %d Motor %d Steps %d",b,m,STEPS_1);
|
44 | motors[b][m]->move(StepperMotor::FWD, STEPS_1);
|
45 | motors[b][m]->wait_while_active();
|
46 | motors[b][m]->hard_hiz();
|
47 | result = motors[b][m] -> get_status();
|
48 | pcTerminal.printf(" Result: %d\r\n",result);
|
49 | wait(1);
|
50 | }
|
51 | }
|
52 |
|
53 | // Move all Motors backward
|
54 |
|
55 | for (b=0; b<maxBoards; ++b) {
|
56 | for (m=0; m<2; ++m) {
|
57 | pcTerminal.printf("Board %d Motor %d Steps -%d",b,m,STEPS_1);
|
58 | motors[b][m]->move(StepperMotor::BWD, STEPS_1);
|
59 | motors[b][m]->wait_while_active();
|
60 | motors[b][m]->hard_hiz();
|
61 | result = motors[b][m] -> get_status();
|
62 | pcTerminal.printf(" Result: %d\r\n",result);
|
63 | wait(1);
|
64 | }
|
65 | }
|
66 |
|
67 | /* Printing to the console. */
|
68 | pcTerminal.printf("terminate.\r\n");
|
69 |
|
70 |
|
71 |
|
72 | }
|