Program uključuje svjetlosne efekte ovisno o modu rada koji je izabran. Program ima 4 moda rada. U 4. modu rada, sve ledice su isključene. Mod rada se izabire pomoću integriranog tipkala na razvojnoj pločici. Vanjsko tipkalo služi za povrat u 4. mod. Ledica na razvojnoj pločici služi kao indikator ispravnosti rada.

Dependencies:   flasher

Committer:
mikroupravljaci2021
Date:
Thu Sep 01 09:26:20 2022 +0000
Revision:
0:da85fd0e990d
v1.5

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mikroupravljaci2021 0:da85fd0e990d 1 //REFERENCE/Korišteni dijelovi koda:
mikroupravljaci2021 0:da85fd0e990d 2 //https://os.mbed.com/handbook/Ticker
mikroupravljaci2021 0:da85fd0e990d 3 //https://os.mbed.com/handbook/InterruptIn
mikroupravljaci2021 0:da85fd0e990d 4 //https://os.mbed.com/questions/5979/mbed-1768-Button-input/
mikroupravljaci2021 0:da85fd0e990d 5 //https://os.mbed.com/users/4180_1/notebook/pushbuttons/
mikroupravljaci2021 0:da85fd0e990d 6 //https://os.mbed.com/cookbook/Writing-a-Library
mikroupravljaci2021 0:da85fd0e990d 7
mikroupravljaci2021 0:da85fd0e990d 8 #include "mbed.h"
mikroupravljaci2021 0:da85fd0e990d 9 #include "flasher.h" //library
mikroupravljaci2021 0:da85fd0e990d 10
mikroupravljaci2021 0:da85fd0e990d 11 InterruptIn myButton(USER_BUTTON);
mikroupravljaci2021 0:da85fd0e990d 12 Flasher led1(D5);
mikroupravljaci2021 0:da85fd0e990d 13 Flasher led2(D4);
mikroupravljaci2021 0:da85fd0e990d 14 Flasher led3(D3);
mikroupravljaci2021 0:da85fd0e990d 15 DigitalOut myled(LED1);
mikroupravljaci2021 0:da85fd0e990d 16 Ticker blink1;
mikroupravljaci2021 0:da85fd0e990d 17 InterruptIn button(D6);
mikroupravljaci2021 0:da85fd0e990d 18
mikroupravljaci2021 0:da85fd0e990d 19 Flasher::Flasher(PinName pin) : _pin(pin) {
mikroupravljaci2021 0:da85fd0e990d 20 _pin = 0;
mikroupravljaci2021 0:da85fd0e990d 21 }
mikroupravljaci2021 0:da85fd0e990d 22
mikroupravljaci2021 0:da85fd0e990d 23 void Flasher::flash(int n) {
mikroupravljaci2021 0:da85fd0e990d 24 for(int i=0; i<n*2; i++) {
mikroupravljaci2021 0:da85fd0e990d 25 _pin = !_pin;
mikroupravljaci2021 0:da85fd0e990d 26 wait(0.2);
mikroupravljaci2021 0:da85fd0e990d 27 }
mikroupravljaci2021 0:da85fd0e990d 28 }
mikroupravljaci2021 0:da85fd0e990d 29
mikroupravljaci2021 0:da85fd0e990d 30 volatile bool buttonPressed; //zastavica da je tipkalo pritisnuto
mikroupravljaci2021 0:da85fd0e990d 31
mikroupravljaci2021 0:da85fd0e990d 32 void onButtonPush() {
mikroupravljaci2021 0:da85fd0e990d 33 if (myButton == 1) { //potvrda da nije bouncing
mikroupravljaci2021 0:da85fd0e990d 34 buttonPressed = true;
mikroupravljaci2021 0:da85fd0e990d 35 }
mikroupravljaci2021 0:da85fd0e990d 36 }
mikroupravljaci2021 0:da85fd0e990d 37
mikroupravljaci2021 0:da85fd0e990d 38 void RADI() //potvrda da program radi ok
mikroupravljaci2021 0:da85fd0e990d 39 {
mikroupravljaci2021 0:da85fd0e990d 40 myled = !myled;
mikroupravljaci2021 0:da85fd0e990d 41 }
mikroupravljaci2021 0:da85fd0e990d 42
mikroupravljaci2021 0:da85fd0e990d 43 void OFF() //funkcija sve ledice na nulu
mikroupravljaci2021 0:da85fd0e990d 44 {
mikroupravljaci2021 0:da85fd0e990d 45 NVIC_SystemReset();
mikroupravljaci2021 0:da85fd0e990d 46 }
mikroupravljaci2021 0:da85fd0e990d 47
mikroupravljaci2021 0:da85fd0e990d 48
mikroupravljaci2021 0:da85fd0e990d 49 int main () {
mikroupravljaci2021 0:da85fd0e990d 50
mikroupravljaci2021 0:da85fd0e990d 51 blink1.attach(&RADI, 2.0); //ticker
mikroupravljaci2021 0:da85fd0e990d 52
mikroupravljaci2021 0:da85fd0e990d 53 button.mode(PullUp);
mikroupravljaci2021 0:da85fd0e990d 54 button.rise(&OFF); //hw interrupt
mikroupravljaci2021 0:da85fd0e990d 55
mikroupravljaci2021 0:da85fd0e990d 56 int count=0;
mikroupravljaci2021 0:da85fd0e990d 57
mikroupravljaci2021 0:da85fd0e990d 58 myButton.rise(&onButtonPush); // kada pin prelazi in "0" i "1" pozovi funkciju
mikroupravljaci2021 0:da85fd0e990d 59
mikroupravljaci2021 0:da85fd0e990d 60 while (1) {
mikroupravljaci2021 0:da85fd0e990d 61
mikroupravljaci2021 0:da85fd0e990d 62 if (buttonPressed) { //tipkalo pritisnuto
mikroupravljaci2021 0:da85fd0e990d 63 count++;
mikroupravljaci2021 0:da85fd0e990d 64 buttonPressed = false; //tipkalo reset
mikroupravljaci2021 0:da85fd0e990d 65 }
mikroupravljaci2021 0:da85fd0e990d 66 //wait_ms(10);
mikroupravljaci2021 0:da85fd0e990d 67 if (count==1)
mikroupravljaci2021 0:da85fd0e990d 68 led1.flash(2);
mikroupravljaci2021 0:da85fd0e990d 69 else if (count==2){
mikroupravljaci2021 0:da85fd0e990d 70 led3.flash(1);
mikroupravljaci2021 0:da85fd0e990d 71 led1.flash(1);
mikroupravljaci2021 0:da85fd0e990d 72 }
mikroupravljaci2021 0:da85fd0e990d 73 else if (count==3){
mikroupravljaci2021 0:da85fd0e990d 74 led3.flash(3);
mikroupravljaci2021 0:da85fd0e990d 75 led2.flash(2);
mikroupravljaci2021 0:da85fd0e990d 76 led1.flash(1);
mikroupravljaci2021 0:da85fd0e990d 77 }
mikroupravljaci2021 0:da85fd0e990d 78 else if (count==4){
mikroupravljaci2021 0:da85fd0e990d 79 led3.flash(0);
mikroupravljaci2021 0:da85fd0e990d 80 led2.flash(0);
mikroupravljaci2021 0:da85fd0e990d 81 led1.flash(0);
mikroupravljaci2021 0:da85fd0e990d 82 count=0;
mikroupravljaci2021 0:da85fd0e990d 83 }
mikroupravljaci2021 0:da85fd0e990d 84 }
mikroupravljaci2021 0:da85fd0e990d 85
mikroupravljaci2021 0:da85fd0e990d 86 }