FRDM_wahadlo_torsyjne

Dependencies:   mbed BufferedSerial

Fork of FRDM_wahadlo_torsyjne by Wojciech M

Revision:
9:3540ad710232
Parent:
8:434d613f0929
Child:
10:497e9a0da7d6
--- 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