PURS_ZI_011
Rotirka.cpp@0:a66df824999a, 2017-02-15 (annotated)
- Committer:
- tbjazic
- Date:
- Wed Feb 15 16:11:29 2017 +0000
- Revision:
- 0:a66df824999a
Initial.
Who changed what in which revision?
User | Revision | Line number | New 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 | } |