Updated
Dependencies: C12832 LM75B PWM_Tone_Library mbed
Fork of IoT Project Final by
main.cpp@3:9c4e6163a71b, 2017-02-22 (annotated)
- Committer:
- ko16aam
- Date:
- Wed Feb 22 11:32:35 2017 +0000
- Revision:
- 3:9c4e6163a71b
- Parent:
- 2:c8d16cec2564
Code fixes and alterations
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
ko16aam | 0:e9258aa72a94 | 1 | #include "mbed.h" |
ko16aam | 0:e9258aa72a94 | 2 | #include "C12832.h" |
ko16aam | 0:e9258aa72a94 | 3 | #include "pwm_tone.h" |
ko16aam | 0:e9258aa72a94 | 4 | |
ko16aam | 0:e9258aa72a94 | 5 | //DigitalOut myled(LED1); |
ko16aam | 0:e9258aa72a94 | 6 | PwmOut Buzzer(D5); |
ko16aam | 0:e9258aa72a94 | 7 | C12832 lcd(p5, p7, p6, p8, p11); |
ko16aam | 3:9c4e6163a71b | 8 | AnalogIn sensor(p16); |
Fleishmachine | 1:1ed4e4239ea6 | 9 | PwmOut spkr(p26); |
Fleishmachine | 1:1ed4e4239ea6 | 10 | BusOut RGB (p23, p24, p25); |
ko16aam | 0:e9258aa72a94 | 11 | |
ko16aam | 0:e9258aa72a94 | 12 | float C_3 = 1000000/Do3, |
ko16aam | 0:e9258aa72a94 | 13 | Cs_3 = 1000000/Do3s, |
ko16aam | 0:e9258aa72a94 | 14 | D_3 = 1000000/Re3, |
ko16aam | 0:e9258aa72a94 | 15 | Ds_3 = 1000000/Re3s, |
ko16aam | 0:e9258aa72a94 | 16 | E_3 = 1000000/Mi3, |
ko16aam | 0:e9258aa72a94 | 17 | F_3 = 1000000/Fa3, |
ko16aam | 0:e9258aa72a94 | 18 | Fs_3 = 1000000/Fa3s, |
ko16aam | 0:e9258aa72a94 | 19 | G_3 = 1000000/So3, |
ko16aam | 0:e9258aa72a94 | 20 | Gs_3 = 1000000/So3s, |
ko16aam | 0:e9258aa72a94 | 21 | A_3 = 1000000/La3, |
ko16aam | 0:e9258aa72a94 | 22 | As_3 = 1000000/La3s, |
ko16aam | 0:e9258aa72a94 | 23 | B_3 = 1000000/Ti3, |
ko16aam | 0:e9258aa72a94 | 24 | C_4 = 1000000/Do4, |
ko16aam | 0:e9258aa72a94 | 25 | Cs_4 = 1000000/Do4s, |
ko16aam | 0:e9258aa72a94 | 26 | D_4 = 1000000/Re4, |
ko16aam | 0:e9258aa72a94 | 27 | Ds_4 = 1000000/Re4s, |
ko16aam | 0:e9258aa72a94 | 28 | E_4 = 1000000/Mi4, |
ko16aam | 0:e9258aa72a94 | 29 | F_4 = 1000000/Fa4, |
ko16aam | 0:e9258aa72a94 | 30 | Fs_4 = 1000000/Fa4s, |
ko16aam | 0:e9258aa72a94 | 31 | G_4 = 1000000/So4, |
ko16aam | 0:e9258aa72a94 | 32 | Gs_4 = 1000000/So4s, |
ko16aam | 0:e9258aa72a94 | 33 | A_4 = 1000000/La4, |
ko16aam | 0:e9258aa72a94 | 34 | As_4 = 1000000/La4s, |
ko16aam | 0:e9258aa72a94 | 35 | B_4 = 1000000/Ti4, |
ko16aam | 0:e9258aa72a94 | 36 | C_5 = 1000000/Do5, |
ko16aam | 0:e9258aa72a94 | 37 | Cs_5 = 1000000/Do5s, |
ko16aam | 0:e9258aa72a94 | 38 | D_5 = 1000000/Re5, |
ko16aam | 0:e9258aa72a94 | 39 | Ds_5 = 1000000/Re5s, |
ko16aam | 0:e9258aa72a94 | 40 | E_5 = 1000000/Mi5, |
ko16aam | 0:e9258aa72a94 | 41 | F_5 = 1000000/Fa5, |
ko16aam | 0:e9258aa72a94 | 42 | Fs_5 = 1000000/Fa5s, |
ko16aam | 0:e9258aa72a94 | 43 | G_5 = 1000000/So5, |
ko16aam | 0:e9258aa72a94 | 44 | Gs_5 = 1000000/So5s, |
ko16aam | 0:e9258aa72a94 | 45 | A_5 = 1000000/La5, |
ko16aam | 0:e9258aa72a94 | 46 | As_5 = 1000000/La5s, |
ko16aam | 0:e9258aa72a94 | 47 | B_5 = 1000000/Ti5; |
ko16aam | 0:e9258aa72a94 | 48 | |
ko16aam | 0:e9258aa72a94 | 49 | int tones[] = {E_4, D_4, C_4, D_4, E_4, E_4, E_4, 0, D_4, D_4, D_4, 0, E_4, G_4, G_4, 0, |
ko16aam | 0:e9258aa72a94 | 50 | E_4, D_4, C_4, D_4, E_4, E_4, E_4, 0, D_4, D_4, E_4, D_4, C_4, 0, 0, 0}; |
ko16aam | 0:e9258aa72a94 | 51 | int tones_num = 32; |
ko16aam | 0:e9258aa72a94 | 52 | |
ko16aam | 0:e9258aa72a94 | 53 | |
ko16aam | 0:e9258aa72a94 | 54 | float multiplier = 50; // this number got me closest to the reading on my multimeter temp probe |
ko16aam | 0:e9258aa72a94 | 55 | float temp; // calculated temperature |
Fleishmachine | 1:1ed4e4239ea6 | 56 | int count; // for computing average reading |
Fleishmachine | 1:1ed4e4239ea6 | 57 | float total; |
ko16aam | 0:e9258aa72a94 | 58 | float average; |
ko16aam | 3:9c4e6163a71b | 59 | int MAX = 22; |
ko16aam | 3:9c4e6163a71b | 60 | int MIN = 20; |
ko16aam | 3:9c4e6163a71b | 61 | int Boiler_MAX = MIN + 2; |
ko16aam | 0:e9258aa72a94 | 62 | |
Fleishmachine | 2:c8d16cec2564 | 63 | |
Fleishmachine | 1:1ed4e4239ea6 | 64 | void buzz() |
Fleishmachine | 1:1ed4e4239ea6 | 65 | { |
ko16aam | 3:9c4e6163a71b | 66 | for (float i=2000.0; i<7000.0; i+=1000) { |
ko16aam | 3:9c4e6163a71b | 67 | spkr.period(0.5/i); |
ko16aam | 3:9c4e6163a71b | 68 | spkr=0.1; |
Fleishmachine | 1:1ed4e4239ea6 | 69 | wait(0.1); |
Fleishmachine | 1:1ed4e4239ea6 | 70 | } |
Fleishmachine | 1:1ed4e4239ea6 | 71 | spkr=0.0; |
Fleishmachine | 1:1ed4e4239ea6 | 72 | } |
Fleishmachine | 1:1ed4e4239ea6 | 73 | |
Fleishmachine | 1:1ed4e4239ea6 | 74 | int main() { |
Fleishmachine | 1:1ed4e4239ea6 | 75 | count = 0; |
Fleishmachine | 1:1ed4e4239ea6 | 76 | total = 0.0; |
ko16aam | 3:9c4e6163a71b | 77 | // RGB = 0xFF; |
ko16aam | 3:9c4e6163a71b | 78 | // buzz(); |
Fleishmachine | 1:1ed4e4239ea6 | 79 | |
ko16aam | 0:e9258aa72a94 | 80 | while (1) { |
ko16aam | 0:e9258aa72a94 | 81 | // formula is analog reading * multiplier |
ko16aam | 0:e9258aa72a94 | 82 | |
ko16aam | 0:e9258aa72a94 | 83 | temp = sensor.read() * multiplier; |
ko16aam | 0:e9258aa72a94 | 84 | count++; |
ko16aam | 0:e9258aa72a94 | 85 | total += temp; |
ko16aam | 0:e9258aa72a94 | 86 | average = total / count; |
ko16aam | 0:e9258aa72a94 | 87 | |
ko16aam | 3:9c4e6163a71b | 88 | if(temp > MAX) |
ko16aam | 3:9c4e6163a71b | 89 | { |
ko16aam | 3:9c4e6163a71b | 90 | RGB = 0xff; |
ko16aam | 3:9c4e6163a71b | 91 | buzz(); |
ko16aam | 3:9c4e6163a71b | 92 | } |
ko16aam | 3:9c4e6163a71b | 93 | else |
ko16aam | 3:9c4e6163a71b | 94 | { |
ko16aam | 3:9c4e6163a71b | 95 | RGB = 0x19; |
ko16aam | 3:9c4e6163a71b | 96 | } |
ko16aam | 3:9c4e6163a71b | 97 | |
ko16aam | 3:9c4e6163a71b | 98 | if(temp < MIN) |
ko16aam | 3:9c4e6163a71b | 99 | { |
ko16aam | 3:9c4e6163a71b | 100 | RGB = 0x06; |
ko16aam | 3:9c4e6163a71b | 101 | } |
ko16aam | 3:9c4e6163a71b | 102 | else |
ko16aam | 3:9c4e6163a71b | 103 | { |
ko16aam | 3:9c4e6163a71b | 104 | RGB = 0x19; |
ko16aam | 3:9c4e6163a71b | 105 | } |
ko16aam | 3:9c4e6163a71b | 106 | |
ko16aam | 0:e9258aa72a94 | 107 | lcd.cls(); |
ko16aam | 0:e9258aa72a94 | 108 | lcd.locate(0,3); |
ko16aam | 0:e9258aa72a94 | 109 | lcd.printf("Temperature= %6.2f \n Average= %5.1f \n", temp , average ); |
ko16aam | 0:e9258aa72a94 | 110 | wait(1); |
ko16aam | 0:e9258aa72a94 | 111 | } |
ko16aam | 0:e9258aa72a94 | 112 | } |
ko16aam | 0:e9258aa72a94 | 113 | |
ko16aam | 0:e9258aa72a94 | 114 | //int main(void) |
ko16aam | 0:e9258aa72a94 | 115 | //{ |
ko16aam | 0:e9258aa72a94 | 116 | // Tune(Buzzer, C_4, 4); //4 Octave C beat 4/16 |
ko16aam | 0:e9258aa72a94 | 117 | // wait_ms(250); |
ko16aam | 0:e9258aa72a94 | 118 | // Tune(Buzzer, D_4, 4); //4 Octave D beat 4/16 |
ko16aam | 0:e9258aa72a94 | 119 | // wait_ms(250); |
ko16aam | 0:e9258aa72a94 | 120 | // Tune(Buzzer, E_4, 4); //4 Octave E beat 4/16 |
ko16aam | 0:e9258aa72a94 | 121 | // wait_ms(250); |
ko16aam | 0:e9258aa72a94 | 122 | // |
ko16aam | 0:e9258aa72a94 | 123 | // int i; |
ko16aam | 0:e9258aa72a94 | 124 | // |
ko16aam | 0:e9258aa72a94 | 125 | // for(i=0; i<tones_num; i++) { |
ko16aam | 0:e9258aa72a94 | 126 | // Auto_tunes(Buzzer, tones[i], 4); // Auto performance |
ko16aam | 0:e9258aa72a94 | 127 | // Stop_tunes(Buzzer); |
ko16aam | 0:e9258aa72a94 | 128 | // } |
ko16aam | 0:e9258aa72a94 | 129 | // |
ko16aam | 0:e9258aa72a94 | 130 | //} |
ko16aam | 0:e9258aa72a94 | 131 | |
Fleishmachine | 1:1ed4e4239ea6 | 132 | |
ko16aam | 0:e9258aa72a94 | 133 | |
ko16aam | 0:e9258aa72a94 | 134 | |
Fleishmachine | 1:1ed4e4239ea6 | 135 |