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.

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers PisanjeNaEkran.cpp Source File

PisanjeNaEkran.cpp

00001 #include "PisanjeNaEkran.h"
00002 #include "mbed.h"
00003 #include "CriusOLED.h"
00004 
00005 
00006 PisanjeNaEkran::PisanjeNaEkran(PinName pin) :ain(pin)
00007 {
00008     i2c.frequency(40000);
00009     init_OLED();
00010     displayOn();
00011     reset_display();
00012 };
00013 
00014 void PisanjeNaEkran::ekran(int brzina_1, int brzina_2, int frekvencija, bool smjer, bool smot)
00015 {
00016     char buf[9];
00017     char brz1[9];
00018     char brz2[9];
00019     char frekv[9];
00020     float dataAI;
00021 
00022     dataAI=ain*100;
00023     sprintf(buf, "%.2f ", dataAI);
00024     sprintf(brz1, "%drpm ", brzina_1);
00025     sprintf(brz2, "%drpm ", brzina_2);
00026     sprintf(frekv, "%dHz  ", frekvencija);
00027 
00028     sendStrXY( buf,0,0);
00029     if(smjer==0) {
00030         sendStrXY( "ljevo",1,0);
00031     } else {
00032         sendStrXY( "desno",1,0);
00033     }
00034 
00035     if(brzina_1==0) {
00036         sendStrXY( "0rpm   ",2,0);
00037     } else {
00038         sendStrXY( brz1,2,0);
00039     }
00040     if(brzina_2==0) {
00041         sendStrXY( "0rpm   ",3,0);
00042     } else {
00043         sendStrXY( brz2,3,0);
00044     }
00045     if(frekvencija==0) {
00046         sendStrXY( "0Hz    ",4,0);
00047     } else {
00048         sendStrXY( frekv,4,0);
00049     }
00050 
00051     if(smot==0) {
00052         sendStrXY( "ljevo",5,0);
00053     } else {
00054         sendStrXY( "desno  ",5,0);
00055     }
00056 
00057 }