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.
PisanjeNaEkran.cpp@0:a19b3eba5b1b, 2020-02-11 (annotated)
- Committer:
- mlucan
- Date:
- Tue Feb 11 09:55:03 2020 +0000
- Revision:
- 0:a19b3eba5b1b
I2c oled, pisanje na ekran;
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
mlucan | 0:a19b3eba5b1b | 1 | #include "PisanjeNaEkran.h" |
mlucan | 0:a19b3eba5b1b | 2 | #include "mbed.h" |
mlucan | 0:a19b3eba5b1b | 3 | #include "CriusOLED.h" |
mlucan | 0:a19b3eba5b1b | 4 | |
mlucan | 0:a19b3eba5b1b | 5 | |
mlucan | 0:a19b3eba5b1b | 6 | PisanjeNaEkran::PisanjeNaEkran(PinName pin) :ain(pin) |
mlucan | 0:a19b3eba5b1b | 7 | { |
mlucan | 0:a19b3eba5b1b | 8 | i2c.frequency(40000); |
mlucan | 0:a19b3eba5b1b | 9 | init_OLED(); |
mlucan | 0:a19b3eba5b1b | 10 | displayOn(); |
mlucan | 0:a19b3eba5b1b | 11 | reset_display(); |
mlucan | 0:a19b3eba5b1b | 12 | }; |
mlucan | 0:a19b3eba5b1b | 13 | |
mlucan | 0:a19b3eba5b1b | 14 | void PisanjeNaEkran::ekran(int brzina_1, int brzina_2, int frekvencija, bool smjer, bool smot) |
mlucan | 0:a19b3eba5b1b | 15 | { |
mlucan | 0:a19b3eba5b1b | 16 | char buf[9]; |
mlucan | 0:a19b3eba5b1b | 17 | char brz1[9]; |
mlucan | 0:a19b3eba5b1b | 18 | char brz2[9]; |
mlucan | 0:a19b3eba5b1b | 19 | char frekv[9]; |
mlucan | 0:a19b3eba5b1b | 20 | float dataAI; |
mlucan | 0:a19b3eba5b1b | 21 | |
mlucan | 0:a19b3eba5b1b | 22 | dataAI=ain*100; |
mlucan | 0:a19b3eba5b1b | 23 | sprintf(buf, "%.2f ", dataAI); |
mlucan | 0:a19b3eba5b1b | 24 | sprintf(brz1, "%drpm ", brzina_1); |
mlucan | 0:a19b3eba5b1b | 25 | sprintf(brz2, "%drpm ", brzina_2); |
mlucan | 0:a19b3eba5b1b | 26 | sprintf(frekv, "%dHz ", frekvencija); |
mlucan | 0:a19b3eba5b1b | 27 | |
mlucan | 0:a19b3eba5b1b | 28 | sendStrXY( buf,0,0); |
mlucan | 0:a19b3eba5b1b | 29 | if(smjer==0) { |
mlucan | 0:a19b3eba5b1b | 30 | sendStrXY( "ljevo",1,0); |
mlucan | 0:a19b3eba5b1b | 31 | } else { |
mlucan | 0:a19b3eba5b1b | 32 | sendStrXY( "desno",1,0); |
mlucan | 0:a19b3eba5b1b | 33 | } |
mlucan | 0:a19b3eba5b1b | 34 | |
mlucan | 0:a19b3eba5b1b | 35 | if(brzina_1==0) { |
mlucan | 0:a19b3eba5b1b | 36 | sendStrXY( "0rpm ",2,0); |
mlucan | 0:a19b3eba5b1b | 37 | } else { |
mlucan | 0:a19b3eba5b1b | 38 | sendStrXY( brz1,2,0); |
mlucan | 0:a19b3eba5b1b | 39 | } |
mlucan | 0:a19b3eba5b1b | 40 | if(brzina_2==0) { |
mlucan | 0:a19b3eba5b1b | 41 | sendStrXY( "0rpm ",3,0); |
mlucan | 0:a19b3eba5b1b | 42 | } else { |
mlucan | 0:a19b3eba5b1b | 43 | sendStrXY( brz2,3,0); |
mlucan | 0:a19b3eba5b1b | 44 | } |
mlucan | 0:a19b3eba5b1b | 45 | if(frekvencija==0) { |
mlucan | 0:a19b3eba5b1b | 46 | sendStrXY( "0Hz ",4,0); |
mlucan | 0:a19b3eba5b1b | 47 | } else { |
mlucan | 0:a19b3eba5b1b | 48 | sendStrXY( frekv,4,0); |
mlucan | 0:a19b3eba5b1b | 49 | } |
mlucan | 0:a19b3eba5b1b | 50 | |
mlucan | 0:a19b3eba5b1b | 51 | if(smot==0) { |
mlucan | 0:a19b3eba5b1b | 52 | sendStrXY( "ljevo",5,0); |
mlucan | 0:a19b3eba5b1b | 53 | } else { |
mlucan | 0:a19b3eba5b1b | 54 | sendStrXY( "desno ",5,0); |
mlucan | 0:a19b3eba5b1b | 55 | } |
mlucan | 0:a19b3eba5b1b | 56 | |
mlucan | 0:a19b3eba5b1b | 57 | } |