Ruprecht Altenburger
/
mirror_actuator_V1
Mirror actuator for RT2 lab
Diff: main.cpp
- Revision:
- 13:1bf960928a93
- Parent:
- 11:d43f8b421d6d
--- a/main.cpp Wed Apr 28 12:51:02 2021 +0000 +++ b/main.cpp Sat May 01 20:08:24 2021 +0000 @@ -1,76 +1,13 @@ #include "mbed.h" -#include "math.h" -//------------------------------------------ -#define PI 3.1415927f -//------------------------------------------ -#include "EncoderCounter.h" -#include "EncoderCounterIndex.h" -#include "DiffCounter.h" -#include "IIR_filter.h" #include "LinearCharacteristics.h" -#include "PID_Cntrl.h" -#include "Unwrapper_2pi.h" -#include "path_1d.h" -#include "GPA.h" #include "ControllerLoop.h" -#include "Mirror_Kinematic.h" -#include "data_structs.h" -#include "uart_comm_thread.h" -#include "FastPWM.h" - static BufferedSerial serial_port(USBTX, USBRX); -DigitalIn big_button(PC_3); // Enable button an backside -bool key_was_pressed = false; // -float Ts=.0002f; // sampling time -void pressed(void); -void released(void); -//------------- DEFINE FILTERS ---------------- -// missing -//------------- Define In/Out ----------------- -AnalogOut i_des1(PA_5); -AnalogOut i_des2(PA_4); -//AnalogIn i_act1(PA_3); -//AnalogIn i_act2(PC_0); -//FastPWM i_des1(PB_10); -//FastPWM i_des2(PA_15); -DigitalOut i_enable(PC_4); -DigitalOut laser_on(PB_0); -///------------- Encoder ----------------------- -EncoderCounter counter1(PA_6, PC_7); // initialize counter on PA_6 and PC_7 -InterruptIn indexpulse1(PA_8); -EncoderCounterIndex index1(counter1,indexpulse1); -// ------------------------------------ -EncoderCounter counter2(PB_6, PB_7); // initialize counter on PB_6 and PB_7 -InterruptIn indexpulse2(PB_4); -EncoderCounterIndex index2(counter2,indexpulse2); // initialize counter on PA_6 and PC_7 -// ------------------------------------ -DiffCounter diff1(0.0005f,Ts,4000); // discrete differentiate, based on encoder data -DiffCounter diff2(0.0005f,Ts,4000); // discrete differentiate, based on encoder data -//LinearCharacteristics i2pwm(-1.0,1.0,0.02,0.98,.02,.98); -LinearCharacteristics i2u(-.80,.80,0.0f,1.0f); -LinearCharacteristics u2i(0.0,1.0,-1.0,1.0); +DigitalOut led(LED1); +// The controller Thread +float Ts = 0.2; +LinearCharacteristics gyro(0,1,-400,400); -Unwrapper_2pi uw2pi1; -Unwrapper_2pi uw2pi2; -//------------------------------------------ -// ----- User defined functions ----------- ControllerLoop loop(Ts); // this is forthe main controller loop -uart_comm_thread uart_com(&serial_port,.05f); // this is the communication thread -Timer glob_ti; // the global timer -path_1d p1; // pathplanner (under constr.) -path_1d p2; // pathplanner (under constr.) -path_1d *current_path; -// --------- GPA ----------------------------- -//init values: f0, f1, nbPts, A0, A1, Ts -GPA myGPA(5 , 2400, 40, 25, 25, Ts); -float exc=0.0; // excitation GPA -//------------------------------------------------------------------------------ -// --------- Mirror kinematik, define values, trafos etc there -Mirror_Kinematic mk; -//------------------------------------------------------------------------------ -// --------- data: overall data structure for x-change -DATA_Xchange data; - //****************************************************************************** //---------- main loop ------------- //****************************************************************************** @@ -82,42 +19,12 @@ /* parity */ BufferedSerial::None, /* stop bit */ 1 ); + printf("gyro ( 0.2) = %f\r\n",gyro(0.2)); serial_port.set_blocking(false); // force to send whenever possible and data is there - i_enable = 0; // disable current first - counter1.reset(); // encoder reset - counter2.reset(); // encoder reset - mk.set_offsets(1401,1510); // individal set values for global position - glob_ti.start(); - glob_ti.reset(); - loop.init_controllers(); - uart_com.start_uart(); loop.start_loop(); - i_des1.write(i2u(0)); - i_des2.write(i2u(0)); - ThisThread::sleep_for(200); - uart_com.send_text((char *)"Start Mirroractuator 1.0"); - /* p1.initialize(300,10,A,0,0,0); - p2.initialize(300,10,-A,0,0,A);*/ - laser_on = 0; - //for(int wk =0;wk<5;wk++) - while(0) - { - short c1 = counter1; // get counts from Encoder - short c2 = counter2; // get counts from Encoder - current_path = &p1; - current_path->start(glob_ti.read()); - while(!current_path->finished) - ThisThread::sleep_for(100); - current_path = &p2; - current_path->start(glob_ti.read()); - while(!current_path->finished) - ThisThread::sleep_for(100); - ThisThread::sleep_for(100); - laser_on = !laser_on; - } // end of while(..) - i_enable = 0; + while(1) - { - ThisThread::sleep_for(200); + { + ThisThread::sleep_for(1000); } } // END OF main