
FRDM_wahadlo_torsyjne
Dependencies: mbed BufferedSerial
Fork of FRDM_wahadlo_torsyjne by
Diff: main.cpp
- Revision:
- 12:103f3fbeab78
- Parent:
- 11:b3bd4b86f914
- Child:
- 13:8810ad3ccc04
--- a/main.cpp Sat Jun 14 11:15:33 2014 +0000 +++ b/main.cpp Sat Jun 14 11:52:02 2014 +0000 @@ -1,18 +1,17 @@ #include "mbed.h" #include "TSISensor.h" -#include "Timer.h" +//#include "Timer.h" Ticker triger1; //przerwanie sterowania silnikiem Ticker triger2; //przerwanie wysyłania danych -TSISensor tsi; //sensor dotykowy +//TSISensor tsi; //sensor dotykowy int motor_PWM_period_us = 200; //okres sygnału PWM (w mikrosekundach) wyzwalającego kolejny krok silnika int EXC_angle = 3200/4; //360 stopni to 3200 krok. przy mkrok. = 1.8/16 float switch_dir_time=(float)((float)EXC_angle/500.0)*((float)motor_PWM_period_us/1000.0); - //czas po któym następuje zmiana obrotów (żeby nie liczyć po każdej zmianie kierunku w pętli) -int DIR_switched = 0; -int SWITCH_DIR = EXC_angle; - +int zero_analog_IN_0 = 0; +int zero_analog_IN_1 = 0; + 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 AnalogIn analog_IN_0(PTB0); //odczyt napięcia z wejścia analogowego 0 (kąt obrotu kolumny) @@ -20,7 +19,7 @@ PwmOut motor(PTA5); //sygnał PWM do sterowania sterownikiem silnika krokowego Serial pc(USBTX,USBRX); //komunikacja z PC -Timer timer; +//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 @@ -31,11 +30,9 @@ } void task2() { - int zero_analog_IN_0 = analog_IN_0.read(); - int zero_analog_IN_1 = analog_IN_1.read(); - get_voltage_in(analog_IN_0, zero_analog_IN_0); - pc.printf("%.3f\t\n", get_voltage_in(analog_IN_0, zero_analog_IN_0)); + get_voltage_in(analog_IN_1, zero_analog_IN_1); + pc.printf("%.3f\t%.3f\n", get_voltage_in(analog_IN_0, zero_analog_IN_0), get_voltage_in(analog_IN_1, zero_analog_IN_1)); } int main() { @@ -43,13 +40,16 @@ motor = 0.5; // wypełnienie PWM sygnału CLK pc.baud(115200); // największa szybkość standardowa, jaką można zadać to 19200 //dla 115200 mamy mniejsze czasy wysyłania (możemy wysyłać częściej- co 10ms - //int zero_analog_IN_0 = analog_IN_0.read(); - //int zero_analog_IN_1 = analog_IN_1.read(); + zero_analog_IN_0 = analog_IN_0.read(); + zero_analog_IN_1 = analog_IN_1.read(); wait(5); //czas na ustawienia początkowe 5 sek. triger2.attach(&task2, 0.02); triger1.attach(&task1, switch_dir_time); while (true) { +// if (tsi.readPercentage() < 0.5) +// motor = 0.5; +// else motor = 0.0; wait(10); // "nic nierobienie, żeby się nie zawiesił" } } \ No newline at end of file