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.
Dependencies: mbed BufferedSerial
Fork of FRDM_wahadlo_torsyjne by
Revision 11:b3bd4b86f914, committed 2014-06-14
- Comitter:
- wojtekmir
- Date:
- Sat Jun 14 11:15:33 2014 +0000
- Parent:
- 10:497e9a0da7d6
- Child:
- 12:103f3fbeab78
- Commit message:
- Poprawione przerwania
Changed in this revision
| main.cpp | Show annotated file Show diff for this revision Revisions of this file |
--- a/main.cpp Thu Jun 12 17:30:39 2014 +0000
+++ b/main.cpp Sat Jun 14 11:15:33 2014 +0000
@@ -2,49 +2,35 @@
#include "TSISensor.h"
#include "Timer.h"
-Ticker triger1;
-Ticker triger2;
+Ticker triger1; //przerwanie sterowania silnikiem
+Ticker triger2; //przerwanie wysyłania danych
+TSISensor tsi; //sensor dotykowy
-int motor_PWM_period_us = 200; //okres sygnału PWM (w mikrosekundach) wyzwalającego kolejny krok silnika
-int i_start = 0;
-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);
-int DIR_switched = 0;
+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;
-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ęć z wejść analogowych (kąty obrotu)
-AnalogIn analog_IN_1(PTB1);
-
-PwmOut motor(PTA5); //sygnał PWM do sterowania sterownikiem silnika krokowego
-Serial pc(USBTX,USBRX); //komunikacja z PC
-
-TSISensor tsi;
+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)
+AnalogIn analog_IN_1(PTB1); //odczyt napięcia z wejścia analogowego 1 (kąt obrotu ciała swobodnego)
+PwmOut motor(PTA5); //sygnał PWM do sterowania sterownikiem silnika krokowego
+Serial pc(USBTX,USBRX); //komunikacja z PC
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
+ return (analog_in.read() - zero_analog_in) * 2.9035; //przesunięcie do zera i skalowanie napiecia do zakresu
}
void task1() {
- //i_start += 1;1
- //if (i_start == SWITCH_DIR) {
- // i_start = 0;
myled = !myled;
direction = !direction;
- /*if (DIR_switched == 0) {
- if (SWITCH_DIR == EXC_angle) {
- SWITCH_DIR = 2*EXC_angle;
- DIR_switched = 1;
- }
- }*/
- //}
}
void task2() {
- //wyslij dane
int zero_analog_IN_0 = analog_IN_0.read();
int zero_analog_IN_1 = analog_IN_1.read();
@@ -54,32 +40,16 @@
int main() {
motor.period_us(motor_PWM_period_us);
- motor = 0.0; // wypełnienie PWM sygnału CLK
- pc.baud(115200); // największa szybkość standardowa, jaką można zadać to 19200
-
- wait(5); //czas na ustawienia początkowe 15 sek.
-
- triger2.attach(&task2, 0.02); //1/1000000);
-
-
- motor = 0.5;
-
- //wait(switch_dir_time/2); //tu jest teoretyczna ćwiartka obrotu
- //direction = !direction;
-
- triger1.attach(&task1, switch_dir_time); //motor_PWM_period_us/1000000);
-
+ 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();
+ wait(5); //czas na ustawienia początkowe 5 sek.
+ triger2.attach(&task2, 0.02);
+ triger1.attach(&task1, switch_dir_time);
while (true) {
- // t0 = timer.read_us();
- //if (tsi.readPercentage() < 0.5)
-
- //else motor = 0.0; // silnik zatrzyma się po dotknięciu prawej strony potencjometru
wait(10); // "nic nierobienie, żeby się nie zawiesił"
-
- //t1 = timer.read_us();
- //t0_t1 = t1 - t0;
- //wait_us(motor_PWM_period_us);
}
-}
-
+}
\ No newline at end of file
