TVZ2020 / Mbed OS Upravljanje_motorom

Dependencies:   TextLCD

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

00001 #include "mbed.h"
00002 #include "TextLCD.h"
00003 
00004 InterruptIn Tipkalo(PB_3); //Tipkalo za uključivanje i iskjučivanje sustava
00005 DigitalOut Stanje_Sustava(PA_10); //Crvena LED-ica koja svijetli kada je sustav uključen
00006 DigitalOut Motor_U_Radu(PA_7); //Zelena LED-ica koja svijetli kada je motor u radu
00007 PwmOut Pokreni_Motor(PA_6); //PWM izlaz kojim reguliramo brzinu vrtnje motora
00008 
00009 Timer Debounce_Timer; //Timer za debounce tipkala
00010 Ticker Refresh; //Ticker koji poziva funkciju za signalizaciju
00011 
00012 TextLCD lcd(PB_4, PB_10, PA_8, PA_9, PC_7, PB_6); //Inicijalizacija LCD-a
00013 Serial pc(USBTX, USBRX); //Inicijalizacija serijske komunikacije sa PC-em
00014 
00015 void Ukljuci_Iskljuci_Sustav(void);
00016 void Racunanje_Brzine_Motora(void);
00017 void Signalizacija_Rada(void);
00018 
00019 float Brzina_Motora = 0.0; //Globalna varijabla brzine motora
00020 
00021 int main() {
00022     
00023     Tipkalo.mode(PullUp);
00024     
00025     Debounce_Timer.start();
00026     Tipkalo.fall(&Ukljuci_Iskljuci_Sustav);
00027     Refresh.attach(&Signalizacija_Rada, 0.5);
00028     
00029     Pokreni_Motor.period(0.01);
00030     Pokreni_Motor = 0.0;
00031     
00032     while(1){
00033         
00034         Racunanje_Brzine_Motora();
00035         
00036         if(Stanje_Sustava==1){
00037             Pokreni_Motor = Brzina_Motora;
00038         }
00039         
00040         lcd.cls();
00041         lcd.printf("Brzina: %2.2f ", Brzina_Motora);
00042         
00043     }
00044 }
00045 
00046 void Ukljuci_Iskljuci_Sustav() {
00047     if (Debounce_Timer.read_ms()>200){
00048         Stanje_Sustava=!Stanje_Sustava;
00049         Debounce_Timer.reset();
00050         
00051         if(Stanje_Sustava==1){
00052             Pokreni_Motor = Brzina_Motora;
00053         }
00054         else{
00055             Pokreni_Motor = 0.0;
00056         }
00057     }
00058 }
00059 
00060 void Racunanje_Brzine_Motora() {
00061     char c = pc.getc();
00062     wait(0.001);
00063     if((c == '+') && (Brzina_Motora < 1.0)) {
00064         Brzina_Motora += 0.1;
00065     }
00066     if((c == '-') && (Brzina_Motora > 0.0)) {
00067         Brzina_Motora -= 0.1;
00068     }
00069 }
00070 
00071 void Signalizacija_Rada() {
00072     if(Pokreni_Motor > 0.0){
00073         Motor_U_Radu = 1;
00074     }
00075     else{
00076         Motor_U_Radu = 0;
00077     }
00078 }