FRDM_wahadlo_torsyjne
Dependencies: mbed BufferedSerial
Fork of FRDM_wahadlo_torsyjne by
Diff: main.cpp
- Revision:
- 9:3540ad710232
- Parent:
- 8:434d613f0929
- Child:
- 10:497e9a0da7d6
diff -r 434d613f0929 -r 3540ad710232 main.cpp --- a/main.cpp Tue Jun 10 15:32:03 2014 +0000 +++ b/main.cpp Thu Jun 12 09:07:39 2014 +0000 @@ -1,7 +1,8 @@ #include "mbed.h" #include "TSISensor.h" +#include "Timer.h" -int motor_PWM_period_us = 100; //okres sygnału PWM (w mikrosekundach) wyzwalającego kolejny krok silnika +int motor_PWM_period_us = 200; //okres sygnału PWM (w mikrosekundach) wyzwalającego kolejny krok silnika DigitalOut direction(PTC7); //zmiana wartości logicznej na wyjściu PTC7 powoduje zmianę kieruneku obrotów DigitalOut myled(LED_GREEN); //dioda zielona sygnalizuje zmianę kierunku obrotów @@ -14,6 +15,8 @@ TSISensor tsi; +Timer timer; + float get_voltage_in(AnalogIn analog_in, float zero_analog_in) { return (analog_in.read() - zero_analog_in) * 2.9035; // przesunięcie do zera i skalowanie napiecia do zakresu } @@ -21,11 +24,11 @@ int main() { motor.period_us(motor_PWM_period_us); - motor = 0.0; - pc.baud(19200); // największa szybkość standardowa, jaką można zadać + motor = 0.0; // wypełnienie PWM sygnału CLK + pc.baud(9600); // największa szybkość standardowa, jaką można zadać to 19200 int i_start = 0; - int EXC_angle = 3200/3; //360 stopni / 1 + int EXC_angle = 3200/4; //360 stopni to 3200 krok. przy mkrok. = 1.8/16 int DIR_switched = 0; int SWITCH_DIR = EXC_angle; @@ -33,13 +36,18 @@ int zero_analog_IN_0 = analog_IN_0.read(); int zero_analog_IN_1 = analog_IN_1.read(); + timer.start(); + int t0, t1; + int t0_t1 = 0; while (true) { + t0 = timer.read_us(); if (tsi.readPercentage() < 0.5) motor = 0.5; else motor = 0.0; // silnik zatrzyma się po dotknięciu prawej strony potencjometru - -// pc.printf("%.2f\n", get_voltage_in(analog_IN_0, zero_analog_IN_0)); // zbyt długo wstrzymuje procedurę + get_voltage_in(analog_IN_0, zero_analog_IN_0); + +// pc.printf("%.3f\t%d\n", get_voltage_in(analog_IN_0, zero_analog_IN_0), t0_t1); // zbyt długo trwa - wstrzymuje procedurę i_start += 1; if (i_start == SWITCH_DIR) { @@ -53,6 +61,8 @@ } } } + t1 = timer.read_us(); + t0_t1 = t1 - t0; wait_us(motor_PWM_period_us); } } \ No newline at end of file