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
main.cpp@1:da7af3768ccb, 2022-09-01 (annotated)
- Committer:
- mikroupravljaci2021
- Date:
- Thu Sep 01 09:30:06 2022 +0000
- Revision:
- 1:da7af3768ccb
- Parent:
- 0:da85fd0e990d
v1.5
Who changed what in which revision?
User | Revision | Line number | New 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 | } |