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.

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?

UserRevisionLine numberNew 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 }