Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
main.cpp@1:3d46a0660d05, 2019-04-12 (annotated)
- Committer:
- DanielleKruijver
- Date:
- Fri Apr 12 09:55:53 2019 +0000
- Revision:
- 1:3d46a0660d05
- Parent:
- 0:3fbb3fa4ff64
Main SBT controllll
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Awiegmink | 0:3fbb3fa4ff64 | 1 | /* |
Awiegmink | 0:3fbb3fa4ff64 | 2 | * To change this license header, choose License Headers in Project Properties. |
Awiegmink | 0:3fbb3fa4ff64 | 3 | * To change this template file, choose Tools | Templates |
Awiegmink | 0:3fbb3fa4ff64 | 4 | * and open the template in the editor. |
Awiegmink | 0:3fbb3fa4ff64 | 5 | */ |
Awiegmink | 0:3fbb3fa4ff64 | 6 | |
Awiegmink | 0:3fbb3fa4ff64 | 7 | /* |
Awiegmink | 0:3fbb3fa4ff64 | 8 | * File: main.cpp |
Awiegmink | 0:3fbb3fa4ff64 | 9 | * Author: kwieg |
Awiegmink | 0:3fbb3fa4ff64 | 10 | * |
Awiegmink | 0:3fbb3fa4ff64 | 11 | * Created on February 28, 2019, 7:54 PM |
Awiegmink | 0:3fbb3fa4ff64 | 12 | */ |
Awiegmink | 0:3fbb3fa4ff64 | 13 | |
Awiegmink | 0:3fbb3fa4ff64 | 14 | #include <cstdlib> |
Awiegmink | 0:3fbb3fa4ff64 | 15 | #include <math.h> |
Awiegmink | 0:3fbb3fa4ff64 | 16 | #include "mbed.h" |
DanielleKruijver | 1:3d46a0660d05 | 17 | #include "rtos.h" |
Awiegmink | 0:3fbb3fa4ff64 | 18 | #include "Sensor.h" |
Awiegmink | 0:3fbb3fa4ff64 | 19 | #include "Filtered_data.h" |
Awiegmink | 0:3fbb3fa4ff64 | 20 | #include "DataStore.h" |
Awiegmink | 0:3fbb3fa4ff64 | 21 | #include "ComplementaryFilter.h" |
Awiegmink | 0:3fbb3fa4ff64 | 22 | #include "PID_caller.h" |
Awiegmink | 0:3fbb3fa4ff64 | 23 | #include "Force_to_wing_angle.h" |
DanielleKruijver | 1:3d46a0660d05 | 24 | #include "Daan_Test1_maxon.h" |
DanielleKruijver | 1:3d46a0660d05 | 25 | #include "Move.h" |
DanielleKruijver | 1:3d46a0660d05 | 26 | |
Awiegmink | 0:3fbb3fa4ff64 | 27 | //DigitalIn button(USER_BUTTON); |
Awiegmink | 0:3fbb3fa4ff64 | 28 | DigitalOut led(LED2); |
Awiegmink | 0:3fbb3fa4ff64 | 29 | using namespace std; |
Awiegmink | 0:3fbb3fa4ff64 | 30 | |
DanielleKruijver | 1:3d46a0660d05 | 31 | RawSerial pc(SERIAL_TX,SERIAL_RX); |
DanielleKruijver | 1:3d46a0660d05 | 32 | CAN can(PB_8,PB_9); //NOG CHECKEN!!! |
DanielleKruijver | 1:3d46a0660d05 | 33 | |
DanielleKruijver | 1:3d46a0660d05 | 34 | EPOS epos1(1); |
DanielleKruijver | 1:3d46a0660d05 | 35 | EPOS epos2(2); |
DanielleKruijver | 1:3d46a0660d05 | 36 | EPOS epos4(4); |
DanielleKruijver | 1:3d46a0660d05 | 37 | |
DanielleKruijver | 1:3d46a0660d05 | 38 | Thread thread1; |
DanielleKruijver | 1:3d46a0660d05 | 39 | Thread thread2; |
DanielleKruijver | 1:3d46a0660d05 | 40 | Thread thread4; |
DanielleKruijver | 1:3d46a0660d05 | 41 | /* ----------------------------------------------------------------------------- |
DanielleKruijver | 1:3d46a0660d05 | 42 | Main |
DanielleKruijver | 1:3d46a0660d05 | 43 | ----------------------------------------------------------------------------- */ |
Awiegmink | 0:3fbb3fa4ff64 | 44 | int main(int argc, char** argv) { |
DanielleKruijver | 1:3d46a0660d05 | 45 | pc.baud(921600); |
DanielleKruijver | 1:3d46a0660d05 | 46 | can.frequency(250000); //NOG AANPASSEN IN EPOS COMPUTER PROGRAMMA ZODAT DE CAN FREQUENCY OP MOTORCONTROLLER OVEREENKOMT MET DIE VAN DE MASTER!! -> value 3 |
DanielleKruijver | 1:3d46a0660d05 | 47 | pc.printf("startup: \r\n"); |
DanielleKruijver | 1:3d46a0660d05 | 48 | |
Awiegmink | 0:3fbb3fa4ff64 | 49 | // Maak de objecten. |
Awiegmink | 0:3fbb3fa4ff64 | 50 | DataStore * ruwe_data = new DataStore(); |
Awiegmink | 0:3fbb3fa4ff64 | 51 | DataStore * filtered_data = new DataStore(); |
Awiegmink | 0:3fbb3fa4ff64 | 52 | DataStore * complementary_data= new DataStore(); |
Awiegmink | 0:3fbb3fa4ff64 | 53 | DataStore * pid_data = new DataStore(); |
Awiegmink | 0:3fbb3fa4ff64 | 54 | DataStore * FtoW_data = new DataStore(); |
Awiegmink | 0:3fbb3fa4ff64 | 55 | Sensor * de_sensor = new Sensor(); |
Awiegmink | 0:3fbb3fa4ff64 | 56 | RuwDataFilter * filter = new RuwDataFilter(); |
Awiegmink | 0:3fbb3fa4ff64 | 57 | ComplementaryFilter * com_filter = new ComplementaryFilter(); |
DanielleKruijver | 1:3d46a0660d05 | 58 | PID_caller * PID = new PID_caller(); |
Awiegmink | 0:3fbb3fa4ff64 | 59 | control::ForceToWingAngle * FtoW = new control::ForceToWingAngle(); |
DanielleKruijver | 1:3d46a0660d05 | 60 | MOVE * moving = new MOVE(); |
Awiegmink | 0:3fbb3fa4ff64 | 61 | |
Awiegmink | 0:3fbb3fa4ff64 | 62 | // De associaties, de verbindingen tussen de objecten. |
Awiegmink | 0:3fbb3fa4ff64 | 63 | de_sensor->m_ruwe_state_data = ruwe_data; // (1) |
Awiegmink | 0:3fbb3fa4ff64 | 64 | filter->m_ruwe_state_data = ruwe_data; // (2) |
Awiegmink | 0:3fbb3fa4ff64 | 65 | filter->m_filtered_data = filtered_data; // (3) |
Awiegmink | 0:3fbb3fa4ff64 | 66 | com_filter->m_filtered_data = filtered_data; //(4) |
Awiegmink | 0:3fbb3fa4ff64 | 67 | com_filter->m_complementary_data = complementary_data; //(5) |
DanielleKruijver | 1:3d46a0660d05 | 68 | PID->m_complementary_data = complementary_data; //(6) |
DanielleKruijver | 1:3d46a0660d05 | 69 | PID->m_PID_data = pid_data; //(7) |
DanielleKruijver | 1:3d46a0660d05 | 70 | FtoW->m_complementary_data = complementary_data; //(8) |
DanielleKruijver | 1:3d46a0660d05 | 71 | FtoW->m_PID_data = pid_data; //(9) |
DanielleKruijver | 1:3d46a0660d05 | 72 | FtoW->m_FtoW_data = FtoW_data; //(10) |
DanielleKruijver | 1:3d46a0660d05 | 73 | moving->m_FtoW_data = FtoW_data; //(11) |
DanielleKruijver | 1:3d46a0660d05 | 74 | |
DanielleKruijver | 1:3d46a0660d05 | 75 | /* ----------------------------------------------------------------------------- |
DanielleKruijver | 1:3d46a0660d05 | 76 | All three motors are going to home. |
DanielleKruijver | 1:3d46a0660d05 | 77 | ----------------------------------------------------------------------------- */ |
DanielleKruijver | 1:3d46a0660d05 | 78 | thread4.start(&epos4,&EPOS::Homing); |
DanielleKruijver | 1:3d46a0660d05 | 79 | wait(15); |
DanielleKruijver | 1:3d46a0660d05 | 80 | |
DanielleKruijver | 1:3d46a0660d05 | 81 | thread2.start(&epos2,&EPOS::Homing); //start de functie Homing |
DanielleKruijver | 1:3d46a0660d05 | 82 | wait(15); |
DanielleKruijver | 1:3d46a0660d05 | 83 | //Thread::wait(1); |
DanielleKruijver | 1:3d46a0660d05 | 84 | |
DanielleKruijver | 1:3d46a0660d05 | 85 | thread1.start(&epos1,&EPOS::Homing); //start de functie Homing |
DanielleKruijver | 1:3d46a0660d05 | 86 | wait(20);//Thread::wait(100); //was 100 |
DanielleKruijver | 1:3d46a0660d05 | 87 | |
DanielleKruijver | 1:3d46a0660d05 | 88 | thread4.join(); |
DanielleKruijver | 1:3d46a0660d05 | 89 | thread2.join(); |
DanielleKruijver | 1:3d46a0660d05 | 90 | thread1.join(); |
DanielleKruijver | 1:3d46a0660d05 | 91 | wait(20); |
DanielleKruijver | 1:3d46a0660d05 | 92 | |
DanielleKruijver | 1:3d46a0660d05 | 93 | /* ----------------------------------------------------------------------------- |
DanielleKruijver | 1:3d46a0660d05 | 94 | All three motors are going in the startpositionmode. |
DanielleKruijver | 1:3d46a0660d05 | 95 | ----------------------------------------------------------------------------- */ |
DanielleKruijver | 1:3d46a0660d05 | 96 | thread1.start(&epos1,&EPOS::StartPositionMode); |
DanielleKruijver | 1:3d46a0660d05 | 97 | Thread::wait(1000); //was 1000 |
Awiegmink | 0:3fbb3fa4ff64 | 98 | |
Awiegmink | 0:3fbb3fa4ff64 | 99 | |
DanielleKruijver | 1:3d46a0660d05 | 100 | thread2.start(&epos2,&EPOS::StartPositionMode); |
DanielleKruijver | 1:3d46a0660d05 | 101 | Thread::wait(1000); //was 1000 |
DanielleKruijver | 1:3d46a0660d05 | 102 | |
DanielleKruijver | 1:3d46a0660d05 | 103 | |
DanielleKruijver | 1:3d46a0660d05 | 104 | thread4.start(&epos4,&EPOS::StartPositionMode); |
DanielleKruijver | 1:3d46a0660d05 | 105 | Thread::wait(1000); |
DanielleKruijver | 1:3d46a0660d05 | 106 | |
DanielleKruijver | 1:3d46a0660d05 | 107 | thread4.join(); |
DanielleKruijver | 1:3d46a0660d05 | 108 | thread2.join(); |
DanielleKruijver | 1:3d46a0660d05 | 109 | thread1.join(); |
DanielleKruijver | 1:3d46a0660d05 | 110 | wait(20); |
DanielleKruijver | 1:3d46a0660d05 | 111 | |
Awiegmink | 0:3fbb3fa4ff64 | 112 | de_sensor->get_data(); |
Awiegmink | 0:3fbb3fa4ff64 | 113 | int N=0; |
DanielleKruijver | 1:3d46a0660d05 | 114 | while (N < 2) { |
Awiegmink | 0:3fbb3fa4ff64 | 115 | led = !led; |
Awiegmink | 0:3fbb3fa4ff64 | 116 | filter->FilterIt(); |
Awiegmink | 0:3fbb3fa4ff64 | 117 | com_filter->CalculateRealHeight(); |
Awiegmink | 0:3fbb3fa4ff64 | 118 | PID->PID_in(); |
Awiegmink | 0:3fbb3fa4ff64 | 119 | FtoW->MMA(); |
DanielleKruijver | 1:3d46a0660d05 | 120 | moving->Move(); |
Awiegmink | 0:3fbb3fa4ff64 | 121 | de_sensor->get_data(); |
Awiegmink | 0:3fbb3fa4ff64 | 122 | N=N+1; |
Awiegmink | 0:3fbb3fa4ff64 | 123 | } |
Awiegmink | 0:3fbb3fa4ff64 | 124 | |
Awiegmink | 0:3fbb3fa4ff64 | 125 | // Als de klus klaar is ruim de objecten op. |
Awiegmink | 0:3fbb3fa4ff64 | 126 | delete (ruwe_data); |
Awiegmink | 0:3fbb3fa4ff64 | 127 | delete (filtered_data); |
Awiegmink | 0:3fbb3fa4ff64 | 128 | delete (pid_data); |
Awiegmink | 0:3fbb3fa4ff64 | 129 | delete (de_sensor); |
Awiegmink | 0:3fbb3fa4ff64 | 130 | delete (filter); |
Awiegmink | 0:3fbb3fa4ff64 | 131 | delete (complementary_data); |
Awiegmink | 0:3fbb3fa4ff64 | 132 | delete (PID); |
Awiegmink | 0:3fbb3fa4ff64 | 133 | delete (com_filter); |
Awiegmink | 0:3fbb3fa4ff64 | 134 | delete (FtoW); |
DanielleKruijver | 1:3d46a0660d05 | 135 | delete (moving); |
Awiegmink | 0:3fbb3fa4ff64 | 136 | |
Awiegmink | 0:3fbb3fa4ff64 | 137 | return 0; |
Awiegmink | 0:3fbb3fa4ff64 | 138 | } |