Seminarski rad na temu brzinomjera za bicikl. Tipkalom na ploćici se simulira rad magnetne sklopke koja detektira okretanje kotača, te se mjerenjem vremena između svakog impulsa sklopke i podatkom opsega kotača računa brzina. Podatak o brzini se ispisuje na računalu u terminalu Tera Term.

Dependencies:   mbed

main.cpp

Committer:
markowirnsberger
Date:
2021-05-07
Revision:
0:aac2e8a1b6e1

File content as of revision 0:aac2e8a1b6e1:

#include "mbed.h"
Serial pc(USBTX, USBRX);                //Deklariranje USB serijske komunikacije
DigitalIn button1(PC_13);               //Deklariranje pina PC_13 (ujedno i tipkalo na ploćici) kao digitalni ulaz
DigitalOut led1(PA_5);                  //Deklariranje pina PA_5 (ujedno i LED dioda na ploćici) kao digitalni izlaz
Timer broji;                            //Deklariranje timera "broji"
Ticker sekunda;                         //Deklariranje tickera "sekunda"
float t=0;                              //Deklariranje varijable za vrijeme "t" i dodjeljivanje vrijednosti 0 sekunda
float v=0;                              //Deklariranje varijable za brzinu "v" i dodjeljivanje vrijednosti 0 km/h
float o=2;                              //Deklariranje konstante za opseg kotača "o" i dodjeljivanje vrijednosti 2 metra
bool prije=0;                           //Deklariranje varijable za stanje tipkala "prije" i dodjeljivanje vrijednosti 0

void prikaz()                           //funkcija "prikaz" koja izračunava i prikazuje podatak o brzini
{
//   pc.printf("%f \t",t);
    v=(o/t)*3.6*1000;                   //računanje brzine
    pc.printf("%.1f km/h \n\r",v);      //ispisivanje brzine
}

int main()                              //glavna funkcija
{
    broji.start();                      //pokretanje timera "broji"
    sekunda.attach(&prikaz, 0.2);       //pokretanje tickera "sekunda" i pokretanje funkcije "prikaz"
    while(1) {                          //beskonačna petlja
        if((button1==0)&&(prije==0)&&(broji.read_ms()>50)) {    //ako je pritisnuta tipka I stanje varijebale "prije" je 0 I timer "broji" je odbrojao više od 50ms, onda se...
            t=broji.read_ms();          //...u varijablu "t" će se upisati vrijeme brojila "broji"...
            broji.reset();              //...brojilo će se resetirati...
            prije=1;                    //...varijabla "prije" če se postaviti u vrijednost 1...
            led1=!led1;                 //...stanje LED diode će se invertirati
        }
        if(button1==1) {                //ako tipkalo nije pritisnuto...
            prije=0;                    //...vrijednost varijable "prije" se postavlja u vrijednost 0
        }
    }
}