PURS_ZI_011

Dependents:   PURS_ZI_011

Committer:
tbjazic
Date:
Wed Feb 15 16:11:29 2017 +0000
Revision:
0:a66df824999a
Initial.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
tbjazic 0:a66df824999a 1 #include "mbed.h"
tbjazic 0:a66df824999a 2 #include "Rotirka.h"
tbjazic 0:a66df824999a 3 #include "C12832.h"
tbjazic 0:a66df824999a 4
tbjazic 0:a66df824999a 5 Rotirka::Rotirka(PinName tipkaloPin, PinName zvucnikPin) : tipkalo(tipkaloPin), zvucnik(zvucnikPin), lcd(p5, p7, p6, p8, p11), leds(LED1, LED2, LED3, LED4) {
tbjazic 0:a66df824999a 6 debounce.start();
tbjazic 0:a66df824999a 7 tipkalo.rise(this, &Rotirka::odabirModa);
tbjazic 0:a66df824999a 8 modRada = 3;
tbjazic 0:a66df824999a 9 lcd.cls();
tbjazic 0:a66df824999a 10 lcd.locate(0,3);
tbjazic 0:a66df824999a 11 lcd.printf("Mod 4.");
tbjazic 0:a66df824999a 12 zvukOn = false;
tbjazic 0:a66df824999a 13 modSvjetla = 0;
tbjazic 0:a66df824999a 14 frekvencija = 1100;
tbjazic 0:a66df824999a 15 zvucnik.period(1/2.0f/frekvencija);
tbjazic 0:a66df824999a 16 }
tbjazic 0:a66df824999a 17
tbjazic 0:a66df824999a 18 void Rotirka::odabirModa() {
tbjazic 0:a66df824999a 19 if(debounce.read_ms() > 10) {
tbjazic 0:a66df824999a 20 modRada = ++modRada % 4;
tbjazic 0:a66df824999a 21 switch(modRada+1) {
tbjazic 0:a66df824999a 22 case 1:
tbjazic 0:a66df824999a 23 ticker1.attach(this, &Rotirka::svijetli, 0.5);
tbjazic 0:a66df824999a 24 modSvjetla = 0; // opcionalno
tbjazic 0:a66df824999a 25 svijetli();
tbjazic 0:a66df824999a 26 lcd.locate(0,3);
tbjazic 0:a66df824999a 27 lcd.printf("Mod 1.");
tbjazic 0:a66df824999a 28 break;
tbjazic 0:a66df824999a 29 case 2:
tbjazic 0:a66df824999a 30 ticker1.detach();
tbjazic 0:a66df824999a 31 leds = 0;
tbjazic 0:a66df824999a 32 ticker2.attach(this, &Rotirka::sirena, 0.02);
tbjazic 0:a66df824999a 33 vrijeme.start();
tbjazic 0:a66df824999a 34 zvucnik = 0.5;
tbjazic 0:a66df824999a 35 lcd.locate(0,3);
tbjazic 0:a66df824999a 36 lcd.printf("Mod 2.");
tbjazic 0:a66df824999a 37 break;
tbjazic 0:a66df824999a 38 case 3:
tbjazic 0:a66df824999a 39 ticker1.attach(this, &Rotirka::svijetli, 0.5);
tbjazic 0:a66df824999a 40 modSvjetla = 0; // opcionalno
tbjazic 0:a66df824999a 41 lcd.locate(0,3);
tbjazic 0:a66df824999a 42 lcd.printf("Mod 3.");
tbjazic 0:a66df824999a 43 break;
tbjazic 0:a66df824999a 44 case 4:
tbjazic 0:a66df824999a 45 ticker1.detach();
tbjazic 0:a66df824999a 46 leds = 0;
tbjazic 0:a66df824999a 47 ticker2.detach();
tbjazic 0:a66df824999a 48 zvucnik = 0;
tbjazic 0:a66df824999a 49 leds = 0;
tbjazic 0:a66df824999a 50 vrijeme.reset();
tbjazic 0:a66df824999a 51 zvucnik.period(1/2.0f/1100);
tbjazic 0:a66df824999a 52 lcd.locate(0,3);
tbjazic 0:a66df824999a 53 lcd.printf("Mod 4.");
tbjazic 0:a66df824999a 54 break;
tbjazic 0:a66df824999a 55 default:
tbjazic 0:a66df824999a 56 break;
tbjazic 0:a66df824999a 57 }
tbjazic 0:a66df824999a 58 debounce.reset();
tbjazic 0:a66df824999a 59 }
tbjazic 0:a66df824999a 60 }
tbjazic 0:a66df824999a 61
tbjazic 0:a66df824999a 62 void Rotirka::svijetli() {
tbjazic 0:a66df824999a 63 switch(modSvjetla) {
tbjazic 0:a66df824999a 64 case 0:
tbjazic 0:a66df824999a 65 leds = 1;
tbjazic 0:a66df824999a 66 break;
tbjazic 0:a66df824999a 67 case 1:
tbjazic 0:a66df824999a 68 leds = 2;
tbjazic 0:a66df824999a 69 break;
tbjazic 0:a66df824999a 70 case 2:
tbjazic 0:a66df824999a 71 leds = 4;
tbjazic 0:a66df824999a 72 break;
tbjazic 0:a66df824999a 73 case 3:
tbjazic 0:a66df824999a 74 leds = 8;
tbjazic 0:a66df824999a 75 break;
tbjazic 0:a66df824999a 76 }
tbjazic 0:a66df824999a 77 modSvjetla = ++modSvjetla % 4;
tbjazic 0:a66df824999a 78 }
tbjazic 0:a66df824999a 79
tbjazic 0:a66df824999a 80 void Rotirka::sirena() {
tbjazic 0:a66df824999a 81 frekvencija = 1100 + 900*sin(2*3.14159f/5*vrijeme.read());
tbjazic 0:a66df824999a 82 zvucnik.period(1/2.0f/frekvencija);
tbjazic 0:a66df824999a 83 }