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

Revision:
0:aac2e8a1b6e1
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Fri May 07 08:11:51 2021 +0000
@@ -0,0 +1,34 @@
+#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
+        }
+    }
+}