The final project of Embedde class.

Dependencies:   C12832 LM75B ESP-call MMA7660

Committer:
pkr7098
Date:
Thu Jun 03 07:09:55 2021 +0000
Revision:
2:37756b51ccdb
Parent:
1:ed1c6618f739
The final project of Embedde class.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
pkr7098 1:ed1c6618f739 1 #include "BUZZER.h"
pkr7098 1:ed1c6618f739 2
pkr7098 1:ed1c6618f739 3 PwmOut buzzer(BUZZER_PIN);
pkr7098 1:ed1c6618f739 4 Thread buzzerThread;
pkr7098 1:ed1c6618f739 5
pkr7098 1:ed1c6618f739 6 Semaphore semaphoreBuzzer(0);
pkr7098 1:ed1c6618f739 7 Semaphore semaphoreBuzzerValues(1);
pkr7098 1:ed1c6618f739 8
pkr7098 1:ed1c6618f739 9 char buzzerInstruction = 0;
pkr7098 1:ed1c6618f739 10 short buzzerCnt = 0;
pkr7098 1:ed1c6618f739 11 int buzzerDelay = 0;
pkr7098 1:ed1c6618f739 12 int buzzerFreq = BUZZER_BEEP_FREQUENCY;
pkr7098 1:ed1c6618f739 13
pkr7098 1:ed1c6618f739 14 static void _buzzerThread(void)
pkr7098 1:ed1c6618f739 15 {
pkr7098 1:ed1c6618f739 16 int instruction;
pkr7098 1:ed1c6618f739 17 int delay;
pkr7098 1:ed1c6618f739 18 int cnt;
pkr7098 1:ed1c6618f739 19 int freq;
pkr7098 1:ed1c6618f739 20 while(1) {
pkr7098 1:ed1c6618f739 21 semaphoreBuzzer.acquire();
pkr7098 1:ed1c6618f739 22 semaphoreBuzzerValues.acquire();
pkr7098 1:ed1c6618f739 23
pkr7098 1:ed1c6618f739 24 instruction = buzzerInstruction;
pkr7098 1:ed1c6618f739 25 delay = buzzerDelay;
pkr7098 1:ed1c6618f739 26 cnt = buzzerCnt;
pkr7098 1:ed1c6618f739 27 buzzerInstruction = BUZZER_INSTRUCTION_OFF;
pkr7098 1:ed1c6618f739 28 freq = buzzerFreq;
pkr7098 1:ed1c6618f739 29
pkr7098 1:ed1c6618f739 30 semaphoreBuzzerValues.release();
pkr7098 1:ed1c6618f739 31
pkr7098 1:ed1c6618f739 32 switch(instruction) {
pkr7098 1:ed1c6618f739 33 case BUZZER_INSTRUCTION_INIT:
pkr7098 1:ed1c6618f739 34 buzzer.period(1.0 / BUZZER_BEEP_FREQUENCY);
pkr7098 1:ed1c6618f739 35 case BUZZER_INSTRUCTION_OFF:
pkr7098 1:ed1c6618f739 36 buzzer = 0;
pkr7098 1:ed1c6618f739 37 break;
pkr7098 1:ed1c6618f739 38
pkr7098 1:ed1c6618f739 39 case BUZZER_INSTRUCTION_ON:
pkr7098 1:ed1c6618f739 40 buzzer.period(1.0 / freq);
pkr7098 1:ed1c6618f739 41 buzzer = 0.5;
pkr7098 1:ed1c6618f739 42 break;
pkr7098 1:ed1c6618f739 43
pkr7098 1:ed1c6618f739 44 case BUZZER_INSTRUCTION_RINGING:
pkr7098 1:ed1c6618f739 45 buzzer.period(1.0 / freq);
pkr7098 1:ed1c6618f739 46 for(cnt; cnt > 0; cnt--) {
pkr7098 1:ed1c6618f739 47 buzzer = 0.5;
pkr7098 1:ed1c6618f739 48 thread_sleep_for(delay);
pkr7098 1:ed1c6618f739 49 buzzer = 0.0;
pkr7098 1:ed1c6618f739 50 thread_sleep_for(delay);
pkr7098 1:ed1c6618f739 51 }
pkr7098 1:ed1c6618f739 52 break;
pkr7098 1:ed1c6618f739 53 }
pkr7098 1:ed1c6618f739 54 }
pkr7098 1:ed1c6618f739 55 }
pkr7098 1:ed1c6618f739 56
pkr7098 1:ed1c6618f739 57 void buzzerInit(void)
pkr7098 1:ed1c6618f739 58 {
pkr7098 1:ed1c6618f739 59 printf("Init buzzer\r\n");
pkr7098 1:ed1c6618f739 60 semaphoreBuzzerValues.acquire();
pkr7098 1:ed1c6618f739 61 buzzerInstruction = BUZZER_INSTRUCTION_INIT;
pkr7098 1:ed1c6618f739 62 buzzerCnt = 0;
pkr7098 1:ed1c6618f739 63 buzzerDelay = 0;
pkr7098 1:ed1c6618f739 64 semaphoreBuzzerValues.release();
pkr7098 1:ed1c6618f739 65 semaphoreBuzzer.release();
pkr7098 1:ed1c6618f739 66 buzzerThread.start(_buzzerThread);
pkr7098 1:ed1c6618f739 67 }
pkr7098 1:ed1c6618f739 68
pkr7098 1:ed1c6618f739 69 void buzzerOn(int freq)
pkr7098 1:ed1c6618f739 70 {
pkr7098 1:ed1c6618f739 71 semaphoreBuzzerValues.acquire();
pkr7098 1:ed1c6618f739 72 buzzerFreq = freq;
pkr7098 1:ed1c6618f739 73 buzzerInstruction = BUZZER_INSTRUCTION_ON;
pkr7098 1:ed1c6618f739 74 semaphoreBuzzerValues.release();
pkr7098 1:ed1c6618f739 75 semaphoreBuzzer.release();
pkr7098 1:ed1c6618f739 76 }
pkr7098 1:ed1c6618f739 77
pkr7098 1:ed1c6618f739 78 void buzzerOn(void)
pkr7098 1:ed1c6618f739 79 {
pkr7098 1:ed1c6618f739 80 semaphoreBuzzerValues.acquire();
pkr7098 1:ed1c6618f739 81 buzzerFreq = BUZZER_BEEP_FREQUENCY;
pkr7098 1:ed1c6618f739 82 buzzerInstruction = BUZZER_INSTRUCTION_ON;
pkr7098 1:ed1c6618f739 83 semaphoreBuzzerValues.release();
pkr7098 1:ed1c6618f739 84 semaphoreBuzzer.release();
pkr7098 1:ed1c6618f739 85 }
pkr7098 1:ed1c6618f739 86
pkr7098 1:ed1c6618f739 87 void buzzerOff(void)
pkr7098 1:ed1c6618f739 88 {
pkr7098 1:ed1c6618f739 89 semaphoreBuzzerValues.acquire();
pkr7098 1:ed1c6618f739 90 buzzerInstruction = BUZZER_INSTRUCTION_OFF;
pkr7098 1:ed1c6618f739 91 semaphoreBuzzerValues.release();
pkr7098 1:ed1c6618f739 92 semaphoreBuzzer.release();
pkr7098 1:ed1c6618f739 93 }
pkr7098 1:ed1c6618f739 94 void buzzerRinging(short cnt, int delay, int freq)
pkr7098 1:ed1c6618f739 95 {
pkr7098 1:ed1c6618f739 96 semaphoreBuzzerValues.acquire();
pkr7098 1:ed1c6618f739 97 buzzerFreq = freq;
pkr7098 1:ed1c6618f739 98 buzzerInstruction = BUZZER_INSTRUCTION_RINGING;
pkr7098 1:ed1c6618f739 99 buzzerCnt = cnt;
pkr7098 1:ed1c6618f739 100 buzzerDelay = delay;
pkr7098 1:ed1c6618f739 101 semaphoreBuzzerValues.release();
pkr7098 1:ed1c6618f739 102 semaphoreBuzzer.release();
pkr7098 1:ed1c6618f739 103 }
pkr7098 1:ed1c6618f739 104
pkr7098 1:ed1c6618f739 105 void buzzerRinging(short cnt, int delay)
pkr7098 1:ed1c6618f739 106 {
pkr7098 1:ed1c6618f739 107 semaphoreBuzzerValues.acquire();
pkr7098 1:ed1c6618f739 108 buzzerFreq = BUZZER_BEEP_FREQUENCY;
pkr7098 1:ed1c6618f739 109 buzzerInstruction = BUZZER_INSTRUCTION_RINGING;
pkr7098 1:ed1c6618f739 110 buzzerCnt = cnt;
pkr7098 1:ed1c6618f739 111 buzzerDelay = delay;
pkr7098 1:ed1c6618f739 112 semaphoreBuzzerValues.release();
pkr7098 1:ed1c6618f739 113 semaphoreBuzzer.release();
pkr7098 1:ed1c6618f739 114 }