TVZ2020 / Mbed OS Upravljanje_motorom

Dependencies:   TextLCD

Committer:
fsamardzi
Date:
Mon Mar 01 17:58:32 2021 +0000
Revision:
0:b0a083935928
123

Who changed what in which revision?

UserRevisionLine numberNew contents of line
fsamardzi 0:b0a083935928 1 #include "mbed.h"
fsamardzi 0:b0a083935928 2 #include "TextLCD.h"
fsamardzi 0:b0a083935928 3
fsamardzi 0:b0a083935928 4 InterruptIn Tipkalo(PB_3); //Tipkalo za uključivanje i iskjučivanje sustava
fsamardzi 0:b0a083935928 5 DigitalOut Stanje_Sustava(PA_10); //Crvena LED-ica koja svijetli kada je sustav uključen
fsamardzi 0:b0a083935928 6 DigitalOut Motor_U_Radu(PA_7); //Zelena LED-ica koja svijetli kada je motor u radu
fsamardzi 0:b0a083935928 7 PwmOut Pokreni_Motor(PA_6); //PWM izlaz kojim reguliramo brzinu vrtnje motora
fsamardzi 0:b0a083935928 8
fsamardzi 0:b0a083935928 9 Timer Debounce_Timer; //Timer za debounce tipkala
fsamardzi 0:b0a083935928 10 Ticker Refresh; //Ticker koji poziva funkciju za signalizaciju
fsamardzi 0:b0a083935928 11
fsamardzi 0:b0a083935928 12 TextLCD lcd(PB_4, PB_10, PA_8, PA_9, PC_7, PB_6); //Inicijalizacija LCD-a
fsamardzi 0:b0a083935928 13 Serial pc(USBTX, USBRX); //Inicijalizacija serijske komunikacije sa PC-em
fsamardzi 0:b0a083935928 14
fsamardzi 0:b0a083935928 15 void Ukljuci_Iskljuci_Sustav(void);
fsamardzi 0:b0a083935928 16 void Racunanje_Brzine_Motora(void);
fsamardzi 0:b0a083935928 17 void Signalizacija_Rada(void);
fsamardzi 0:b0a083935928 18
fsamardzi 0:b0a083935928 19 float Brzina_Motora = 0.0; //Globalna varijabla brzine motora
fsamardzi 0:b0a083935928 20
fsamardzi 0:b0a083935928 21 int main() {
fsamardzi 0:b0a083935928 22
fsamardzi 0:b0a083935928 23 Tipkalo.mode(PullUp);
fsamardzi 0:b0a083935928 24
fsamardzi 0:b0a083935928 25 Debounce_Timer.start();
fsamardzi 0:b0a083935928 26 Tipkalo.fall(&Ukljuci_Iskljuci_Sustav);
fsamardzi 0:b0a083935928 27 Refresh.attach(&Signalizacija_Rada, 0.5);
fsamardzi 0:b0a083935928 28
fsamardzi 0:b0a083935928 29 Pokreni_Motor.period(0.01);
fsamardzi 0:b0a083935928 30 Pokreni_Motor = 0.0;
fsamardzi 0:b0a083935928 31
fsamardzi 0:b0a083935928 32 while(1){
fsamardzi 0:b0a083935928 33
fsamardzi 0:b0a083935928 34 Racunanje_Brzine_Motora();
fsamardzi 0:b0a083935928 35
fsamardzi 0:b0a083935928 36 if(Stanje_Sustava==1){
fsamardzi 0:b0a083935928 37 Pokreni_Motor = Brzina_Motora;
fsamardzi 0:b0a083935928 38 }
fsamardzi 0:b0a083935928 39
fsamardzi 0:b0a083935928 40 lcd.cls();
fsamardzi 0:b0a083935928 41 lcd.printf("Brzina: %2.2f ", Brzina_Motora);
fsamardzi 0:b0a083935928 42
fsamardzi 0:b0a083935928 43 }
fsamardzi 0:b0a083935928 44 }
fsamardzi 0:b0a083935928 45
fsamardzi 0:b0a083935928 46 void Ukljuci_Iskljuci_Sustav() {
fsamardzi 0:b0a083935928 47 if (Debounce_Timer.read_ms()>200){
fsamardzi 0:b0a083935928 48 Stanje_Sustava=!Stanje_Sustava;
fsamardzi 0:b0a083935928 49 Debounce_Timer.reset();
fsamardzi 0:b0a083935928 50
fsamardzi 0:b0a083935928 51 if(Stanje_Sustava==1){
fsamardzi 0:b0a083935928 52 Pokreni_Motor = Brzina_Motora;
fsamardzi 0:b0a083935928 53 }
fsamardzi 0:b0a083935928 54 else{
fsamardzi 0:b0a083935928 55 Pokreni_Motor = 0.0;
fsamardzi 0:b0a083935928 56 }
fsamardzi 0:b0a083935928 57 }
fsamardzi 0:b0a083935928 58 }
fsamardzi 0:b0a083935928 59
fsamardzi 0:b0a083935928 60 void Racunanje_Brzine_Motora() {
fsamardzi 0:b0a083935928 61 char c = pc.getc();
fsamardzi 0:b0a083935928 62 wait(0.001);
fsamardzi 0:b0a083935928 63 if((c == '+') && (Brzina_Motora < 1.0)) {
fsamardzi 0:b0a083935928 64 Brzina_Motora += 0.1;
fsamardzi 0:b0a083935928 65 }
fsamardzi 0:b0a083935928 66 if((c == '-') && (Brzina_Motora > 0.0)) {
fsamardzi 0:b0a083935928 67 Brzina_Motora -= 0.1;
fsamardzi 0:b0a083935928 68 }
fsamardzi 0:b0a083935928 69 }
fsamardzi 0:b0a083935928 70
fsamardzi 0:b0a083935928 71 void Signalizacija_Rada() {
fsamardzi 0:b0a083935928 72 if(Pokreni_Motor > 0.0){
fsamardzi 0:b0a083935928 73 Motor_U_Radu = 1;
fsamardzi 0:b0a083935928 74 }
fsamardzi 0:b0a083935928 75 else{
fsamardzi 0:b0a083935928 76 Motor_U_Radu = 0;
fsamardzi 0:b0a083935928 77 }
fsamardzi 0:b0a083935928 78 }