TVZ2021 / Mbed OS Upravljanje_servo_Motorima_AJD

Dependencies:   Motor

Committer:
racedom
Date:
Thu Dec 09 20:02:42 2021 +0000
Revision:
2:ddbc5ae6d873
Parent:
0:d5f06bdc0d02
Hello :D

Who changed what in which revision?

UserRevisionLine numberNew contents of line
racedom 0:d5f06bdc0d02 1 /* Kolegij Mikroupravljači
racedom 0:d5f06bdc0d02 2 * Konstrukcijski rad - Abramušić Josip Dominik
racedom 0:d5f06bdc0d02 3 * Copyright (c)
racedom 0:d5f06bdc0d02 4 */
racedom 0:d5f06bdc0d02 5
racedom 0:d5f06bdc0d02 6 #include "mbed.h" // Osnovni MBED library
racedom 0:d5f06bdc0d02 7 #include"Motor.h" // Korisnički MOTOR library
racedom 0:d5f06bdc0d02 8
racedom 0:d5f06bdc0d02 9 Motor M1(PA_5,PA_8); // Inicijalizacija MOTOR objekta M1
racedom 0:d5f06bdc0d02 10 Motor M2(PA_6,PA_9); // Inicijalizacija MOTOR objekta M2
racedom 0:d5f06bdc0d02 11
racedom 0:d5f06bdc0d02 12 PwmOut PWM1(PA_8); // Inicijalizacija PWM objekta PWM1
racedom 0:d5f06bdc0d02 13 PwmOut PWM2(PA_9); // Inicijalizacija PWM objekta PWM2
racedom 0:d5f06bdc0d02 14
racedom 0:d5f06bdc0d02 15 Ticker Tick; // Inicjalizacija TICKER objekta Tick
racedom 0:d5f06bdc0d02 16
racedom 0:d5f06bdc0d02 17 DigitalOut ON(PA_1); // Inicijalizacija digitalnog izlaza ON
racedom 0:d5f06bdc0d02 18 DigitalOut W_LED1(PC_2); // Inicijalizacija digitalnog izlaza W_LED1
racedom 0:d5f06bdc0d02 19 DigitalOut W_LED2(PC_3); // Inicijalizacija digitalnog izlaza W_LED2
racedom 0:d5f06bdc0d02 20
racedom 0:d5f06bdc0d02 21 InterruptIn AUTO_TURN(PA_0); // Inicijalizacija hardverskog prekida AUTO_TURN
racedom 0:d5f06bdc0d02 22
racedom 0:d5f06bdc0d02 23 Timer debounce; // Inicijalizacija Timer-a za "debounce"
racedom 0:d5f06bdc0d02 24
racedom 0:d5f06bdc0d02 25 void AutoTURN (void); // Deklaracija funkcije "AutoTURN"
racedom 0:d5f06bdc0d02 26 void WhiteLED (void); // Deklaracija funkcije "WhiteLED"
racedom 0:d5f06bdc0d02 27
racedom 0:d5f06bdc0d02 28 int main() // MAIN funkcija
racedom 0:d5f06bdc0d02 29 {
racedom 0:d5f06bdc0d02 30 W_LED1 = 1; // Inicijalizacija stanja bijelih LED
racedom 0:d5f06bdc0d02 31 W_LED2 = 0;
racedom 0:d5f06bdc0d02 32
racedom 0:d5f06bdc0d02 33 Tick.attach(&WhiteLED, 2); // Pridjeljivanje funkcije "WhiteLED" TICKER-u
racedom 0:d5f06bdc0d02 34
racedom 0:d5f06bdc0d02 35 PWM1.period_ms(20); // Određivanje perioda za PWM1
racedom 0:d5f06bdc0d02 36 PWM2.period_ms(20); // Određivanje perioda za PWM2
racedom 0:d5f06bdc0d02 37
racedom 0:d5f06bdc0d02 38 AUTO_TURN.mode(PullUp); // Uklučivanje "PullUp" otpornika na Interrupt pin
racedom 0:d5f06bdc0d02 39 AUTO_TURN.fall(&AutoTURN); // Dodjeljivanje funkcije "AutoTURN"
racedom 0:d5f06bdc0d02 40
racedom 0:d5f06bdc0d02 41 while (true) {
racedom 0:d5f06bdc0d02 42
racedom 0:d5f06bdc0d02 43 debounce.start(); // Početak odbrojavanja TIMER-a "debounce"
racedom 0:d5f06bdc0d02 44 PWM1.pulsewidth_us(M1.Control()); // Pozvanje funkcije "Control"
racedom 0:d5f06bdc0d02 45 PWM2.pulsewidth_us(M2.Control()); // Pozvanje funkcije "Control"
racedom 0:d5f06bdc0d02 46 wait_us(1000); // Naredba "wait_us" za pozicioniranje motora
racedom 0:d5f06bdc0d02 47 }
racedom 0:d5f06bdc0d02 48 }
racedom 0:d5f06bdc0d02 49 /*
racedom 0:d5f06bdc0d02 50 Funkcija "AutoTURN" samostalno okreće servo motore preko Interrupt pina.
racedom 0:d5f06bdc0d02 51 Korsti se FOR petlja za prolaz PWM širine pulsa (ovdje je odabrano 10 us).
racedom 0:d5f06bdc0d02 52 */
racedom 0:d5f06bdc0d02 53
racedom 0:d5f06bdc0d02 54 void AutoTURN () // Inicijalizacija funkcije AutoTURN
racedom 0:d5f06bdc0d02 55 {
racedom 0:d5f06bdc0d02 56 if (debounce.read_ms() > 250)
racedom 0:d5f06bdc0d02 57 {
racedom 0:d5f06bdc0d02 58 ON = 1;
racedom 0:d5f06bdc0d02 59 for(int i = 900; i <=2100; i+=10)
racedom 0:d5f06bdc0d02 60 {
racedom 0:d5f06bdc0d02 61 PWM1.pulsewidth_us(i); // Pridjeljivanje širine pulsa
racedom 0:d5f06bdc0d02 62 PWM2.pulsewidth_us(i); // Pridjeljivanje širine pulsa
racedom 0:d5f06bdc0d02 63 wait_us(12000);
racedom 0:d5f06bdc0d02 64 }
racedom 0:d5f06bdc0d02 65 ON = 0;
racedom 0:d5f06bdc0d02 66 debounce.reset(); // Ponovno pokretanje TIMER-a
racedom 0:d5f06bdc0d02 67 }
racedom 0:d5f06bdc0d02 68 }
racedom 0:d5f06bdc0d02 69 /*
racedom 0:d5f06bdc0d02 70 Funkcija "WhiteLED" naizmjenično pali odnosno gasi bijele LED.
racedom 0:d5f06bdc0d02 71 Dodjeljue se TICKER objektu Tick.
racedom 0:d5f06bdc0d02 72 */
racedom 0:d5f06bdc0d02 73 void WhiteLED () // Inicijalizacija funkcije WhiteLED
racedom 0:d5f06bdc0d02 74 {
racedom 0:d5f06bdc0d02 75 W_LED1 = !W_LED1;
racedom 0:d5f06bdc0d02 76 W_LED2 = !W_LED2;
racedom 0:d5f06bdc0d02 77 wait_us(50000);
racedom 0:d5f06bdc0d02 78 }