Programskim kodom se upravlja maketom malog DC motora koji je spojen na inkrementalni enkoder. Sa inkrementalnog enkodera se čitaju dvije faze impulsa pomoću kojih se računa brzina vrtnje iz impusla u vrenenu i smjer vrtnje iz odnosa stanja faza enkodera. Popunjenost PWM-a se zadaje potenciometrom a promjena smjera i pokretanje je se upravlja tipkalima.
Diff: PisanjeNaEkran.cpp
- Revision:
- 0:a19b3eba5b1b
diff -r 000000000000 -r a19b3eba5b1b PisanjeNaEkran.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/PisanjeNaEkran.cpp Tue Feb 11 09:55:03 2020 +0000 @@ -0,0 +1,57 @@ +#include "PisanjeNaEkran.h" +#include "mbed.h" +#include "CriusOLED.h" + + +PisanjeNaEkran::PisanjeNaEkran(PinName pin) :ain(pin) +{ + i2c.frequency(40000); + init_OLED(); + displayOn(); + reset_display(); +}; + +void PisanjeNaEkran::ekran(int brzina_1, int brzina_2, int frekvencija, bool smjer, bool smot) +{ + char buf[9]; + char brz1[9]; + char brz2[9]; + char frekv[9]; + float dataAI; + + dataAI=ain*100; + sprintf(buf, "%.2f ", dataAI); + sprintf(brz1, "%drpm ", brzina_1); + sprintf(brz2, "%drpm ", brzina_2); + sprintf(frekv, "%dHz ", frekvencija); + + sendStrXY( buf,0,0); + if(smjer==0) { + sendStrXY( "ljevo",1,0); + } else { + sendStrXY( "desno",1,0); + } + + if(brzina_1==0) { + sendStrXY( "0rpm ",2,0); + } else { + sendStrXY( brz1,2,0); + } + if(brzina_2==0) { + sendStrXY( "0rpm ",3,0); + } else { + sendStrXY( brz2,3,0); + } + if(frekvencija==0) { + sendStrXY( "0Hz ",4,0); + } else { + sendStrXY( frekv,4,0); + } + + if(smot==0) { + sendStrXY( "ljevo",5,0); + } else { + sendStrXY( "desno ",5,0); + } + +}