![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
.
Dependencies: mbed C12832 LM75B
main.cpp@0:8bf954873391, 2021-10-13 (annotated)
- Committer:
- jojofannum69
- Date:
- Wed Oct 13 13:51:26 2021 +0000
- Revision:
- 0:8bf954873391
.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
jojofannum69 | 0:8bf954873391 | 1 | #include "mbed.h" |
jojofannum69 | 0:8bf954873391 | 2 | #include "C12832.h" |
jojofannum69 | 0:8bf954873391 | 3 | #include "pitchs.h" |
jojofannum69 | 0:8bf954873391 | 4 | #include "LM75B.h" |
jojofannum69 | 0:8bf954873391 | 5 | |
jojofannum69 | 0:8bf954873391 | 6 | LM75B sensor(D14, D15); |
jojofannum69 | 0:8bf954873391 | 7 | PwmOut spkr (D6); |
jojofannum69 | 0:8bf954873391 | 8 | DigitalIn up(A2); |
jojofannum69 | 0:8bf954873391 | 9 | DigitalIn down(A3); |
jojofannum69 | 0:8bf954873391 | 10 | DigitalIn left(A4); |
jojofannum69 | 0:8bf954873391 | 11 | DigitalIn right(A5); |
jojofannum69 | 0:8bf954873391 | 12 | DigitalIn center(D4); |
jojofannum69 | 0:8bf954873391 | 13 | C12832 lcd(D11, D13, D12, D7, D10); |
jojofannum69 | 0:8bf954873391 | 14 | enum {CLL,MARIO,JOUE,Sensor} etat = CLL; |
jojofannum69 | 0:8bf954873391 | 15 | |
jojofannum69 | 0:8bf954873391 | 16 | int menu_precedent = MARIO; |
jojofannum69 | 0:8bf954873391 | 17 | char message_precedent[]=" "; |
jojofannum69 | 0:8bf954873391 | 18 | |
jojofannum69 | 0:8bf954873391 | 19 | void mario(){ |
jojofannum69 | 0:8bf954873391 | 20 | |
jojofannum69 | 0:8bf954873391 | 21 | int melody[] = { |
jojofannum69 | 0:8bf954873391 | 22 | NOTE_E7, NOTE_E7, 0, NOTE_E7, |
jojofannum69 | 0:8bf954873391 | 23 | 0, NOTE_C7, NOTE_E7, 0, |
jojofannum69 | 0:8bf954873391 | 24 | NOTE_G7, 0, 0, 0, |
jojofannum69 | 0:8bf954873391 | 25 | NOTE_G6, 0, 0, 0, |
jojofannum69 | 0:8bf954873391 | 26 | |
jojofannum69 | 0:8bf954873391 | 27 | NOTE_C7, 0, 0, NOTE_G6, |
jojofannum69 | 0:8bf954873391 | 28 | 0, 0, NOTE_E6, 0, |
jojofannum69 | 0:8bf954873391 | 29 | 0, NOTE_A6, 0, NOTE_B6, |
jojofannum69 | 0:8bf954873391 | 30 | 0, NOTE_AS6, NOTE_A6, 0, |
jojofannum69 | 0:8bf954873391 | 31 | |
jojofannum69 | 0:8bf954873391 | 32 | NOTE_G6, NOTE_E7, NOTE_G7, |
jojofannum69 | 0:8bf954873391 | 33 | NOTE_A7, 0, NOTE_F7, NOTE_G7, |
jojofannum69 | 0:8bf954873391 | 34 | 0, NOTE_E7, 0,NOTE_C7, |
jojofannum69 | 0:8bf954873391 | 35 | NOTE_D7, NOTE_B6, 0, 0, |
jojofannum69 | 0:8bf954873391 | 36 | |
jojofannum69 | 0:8bf954873391 | 37 | NOTE_C7, 0, 0, NOTE_G6, |
jojofannum69 | 0:8bf954873391 | 38 | 0, 0, NOTE_E6, 0, |
jojofannum69 | 0:8bf954873391 | 39 | 0, NOTE_A6, 0, NOTE_B6, |
jojofannum69 | 0:8bf954873391 | 40 | 0, NOTE_AS6, NOTE_A6, 0, |
jojofannum69 | 0:8bf954873391 | 41 | |
jojofannum69 | 0:8bf954873391 | 42 | NOTE_G6, NOTE_E7, NOTE_G7, |
jojofannum69 | 0:8bf954873391 | 43 | NOTE_A7, 0, NOTE_F7, NOTE_G7, |
jojofannum69 | 0:8bf954873391 | 44 | 0, NOTE_E7, 0,NOTE_C7, |
jojofannum69 | 0:8bf954873391 | 45 | NOTE_D7, NOTE_B6, 0, 0 |
jojofannum69 | 0:8bf954873391 | 46 | }; |
jojofannum69 | 0:8bf954873391 | 47 | |
jojofannum69 | 0:8bf954873391 | 48 | int noteDurations[] = { |
jojofannum69 | 0:8bf954873391 | 49 | 12, 12, 12, 12, |
jojofannum69 | 0:8bf954873391 | 50 | 12, 12, 12, 12, |
jojofannum69 | 0:8bf954873391 | 51 | 12, 12, 12, 12, |
jojofannum69 | 0:8bf954873391 | 52 | 12, 12, 12, 12, |
jojofannum69 | 0:8bf954873391 | 53 | 12, 12, 12, 12, |
jojofannum69 | 0:8bf954873391 | 54 | 12, 12, 12, 12, |
jojofannum69 | 0:8bf954873391 | 55 | 12, 12, 12, 12, |
jojofannum69 | 0:8bf954873391 | 56 | 12, 12, 12, 12, |
jojofannum69 | 0:8bf954873391 | 57 | 9, 9, 9, |
jojofannum69 | 0:8bf954873391 | 58 | 12, 12, 12, 12, |
jojofannum69 | 0:8bf954873391 | 59 | 12, 12, 12, 12, |
jojofannum69 | 0:8bf954873391 | 60 | 12, 12, 12, 12, |
jojofannum69 | 0:8bf954873391 | 61 | 12, 12, 12, 12, |
jojofannum69 | 0:8bf954873391 | 62 | 12, 12, 12, 12, |
jojofannum69 | 0:8bf954873391 | 63 | 12, 12, 12, 12, |
jojofannum69 | 0:8bf954873391 | 64 | 12, 12, 12, 12, |
jojofannum69 | 0:8bf954873391 | 65 | 9, 9, 9, |
jojofannum69 | 0:8bf954873391 | 66 | 12, 12, 12, 12, |
jojofannum69 | 0:8bf954873391 | 67 | 12, 12, 12, 12, |
jojofannum69 | 0:8bf954873391 | 68 | 12, 12, 12, 12, |
jojofannum69 | 0:8bf954873391 | 69 | }; |
jojofannum69 | 0:8bf954873391 | 70 | |
jojofannum69 | 0:8bf954873391 | 71 | for (int thisNote = 0; thisNote < 52; thisNote++) { |
jojofannum69 | 0:8bf954873391 | 72 | int noteDuration = noteDurations[thisNote]; |
jojofannum69 | 0:8bf954873391 | 73 | spkr.period(1.0/melody[thisNote]); |
jojofannum69 | 0:8bf954873391 | 74 | spkr=0.25; |
jojofannum69 | 0:8bf954873391 | 75 | wait(1.0/noteDuration); |
jojofannum69 | 0:8bf954873391 | 76 | int pauseBetweenNotes = noteDuration * 1.30; |
jojofannum69 | 0:8bf954873391 | 77 | wait(1.0/pauseBetweenNotes); |
jojofannum69 | 0:8bf954873391 | 78 | spkr=0; |
jojofannum69 | 0:8bf954873391 | 79 | } |
jojofannum69 | 0:8bf954873391 | 80 | } |
jojofannum69 | 0:8bf954873391 | 81 | |
jojofannum69 | 0:8bf954873391 | 82 | void cll(){ |
jojofannum69 | 0:8bf954873391 | 83 | #define DO 262 |
jojofannum69 | 0:8bf954873391 | 84 | #define RE 294 |
jojofannum69 | 0:8bf954873391 | 85 | #define MI 330 |
jojofannum69 | 0:8bf954873391 | 86 | |
jojofannum69 | 0:8bf954873391 | 87 | int melody[] = {DO, DO, DO, RE, MI, RE, DO, MI, RE, RE, DO}; |
jojofannum69 | 0:8bf954873391 | 88 | int noteDurations[] = {4,4,4,8,8,4,4,4,4,12}; |
jojofannum69 | 0:8bf954873391 | 89 | for (int thisNote = 0; thisNote < 52; thisNote++) { |
jojofannum69 | 0:8bf954873391 | 90 | // to calculate the note duration, take one second |
jojofannum69 | 0:8bf954873391 | 91 | // divided by the note type. |
jojofannum69 | 0:8bf954873391 | 92 | //e.g. quarter note = 1000 / 4, eighth note = 1000/8, etc. |
jojofannum69 | 0:8bf954873391 | 93 | int noteDuration = noteDurations[thisNote]; |
jojofannum69 | 0:8bf954873391 | 94 | //tone(8, melody[thisNote],noteDuration); |
jojofannum69 | 0:8bf954873391 | 95 | spkr.period(1.0/melody[thisNote]); |
jojofannum69 | 0:8bf954873391 | 96 | spkr=0.25; |
jojofannum69 | 0:8bf954873391 | 97 | wait(1.0/noteDuration); |
jojofannum69 | 0:8bf954873391 | 98 | //wait(1); |
jojofannum69 | 0:8bf954873391 | 99 | // to distinguish the notes, set a minimum time between them. |
jojofannum69 | 0:8bf954873391 | 100 | // the note's duration + 30% seems to work well: |
jojofannum69 | 0:8bf954873391 | 101 | int pauseBetweenNotes = noteDuration * 1.30; |
jojofannum69 | 0:8bf954873391 | 102 | //wait(pauseBetweenNotes/1000); |
jojofannum69 | 0:8bf954873391 | 103 | wait(1.0/pauseBetweenNotes); |
jojofannum69 | 0:8bf954873391 | 104 | // stop the tone playing: |
jojofannum69 | 0:8bf954873391 | 105 | //noTone(8); |
jojofannum69 | 0:8bf954873391 | 106 | spkr=0; |
jojofannum69 | 0:8bf954873391 | 107 | } |
jojofannum69 | 0:8bf954873391 | 108 | } |
jojofannum69 | 0:8bf954873391 | 109 | |
jojofannum69 | 0:8bf954873391 | 110 | void Afficher_Menu(int Menu) |
jojofannum69 | 0:8bf954873391 | 111 | { |
jojofannum69 | 0:8bf954873391 | 112 | if (menu_precedent == Menu) return; |
jojofannum69 | 0:8bf954873391 | 113 | menu_precedent = Menu; |
jojofannum69 | 0:8bf954873391 | 114 | lcd.cls(); |
jojofannum69 | 0:8bf954873391 | 115 | lcd.locate(0,8); |
jojofannum69 | 0:8bf954873391 | 116 | //wait(0.050); |
jojofannum69 | 0:8bf954873391 | 117 | switch(Menu) { |
jojofannum69 | 0:8bf954873391 | 118 | case CLL : |
jojofannum69 | 0:8bf954873391 | 119 | lcd.printf("Claire de la lune"); |
jojofannum69 | 0:8bf954873391 | 120 | break; |
jojofannum69 | 0:8bf954873391 | 121 | case MARIO : |
jojofannum69 | 0:8bf954873391 | 122 | lcd.printf("Mario"); |
jojofannum69 | 0:8bf954873391 | 123 | break; |
jojofannum69 | 0:8bf954873391 | 124 | case JOUE : |
jojofannum69 | 0:8bf954873391 | 125 | lcd.printf("JOUE"); |
jojofannum69 | 0:8bf954873391 | 126 | break; |
jojofannum69 | 0:8bf954873391 | 127 | } |
jojofannum69 | 0:8bf954873391 | 128 | } |
jojofannum69 | 0:8bf954873391 | 129 | |
jojofannum69 | 0:8bf954873391 | 130 | void Afficher_Message(char *Message) |
jojofannum69 | 0:8bf954873391 | 131 | { |
jojofannum69 | 0:8bf954873391 | 132 | if (strcmp(message_precedent,Message) ==0) return; |
jojofannum69 | 0:8bf954873391 | 133 | lcd.cls(); |
jojofannum69 | 0:8bf954873391 | 134 | lcd.locate(0,8); |
jojofannum69 | 0:8bf954873391 | 135 | lcd.printf(Message); |
jojofannum69 | 0:8bf954873391 | 136 | |
jojofannum69 | 0:8bf954873391 | 137 | } |
jojofannum69 | 0:8bf954873391 | 138 | |
jojofannum69 | 0:8bf954873391 | 139 | void Menu_CLL(int etat) |
jojofannum69 | 0:8bf954873391 | 140 | { |
jojofannum69 | 0:8bf954873391 | 141 | bool Sortir = false; // On sort du sous-menu |
jojofannum69 | 0:8bf954873391 | 142 | while (!Sortir) { |
jojofannum69 | 0:8bf954873391 | 143 | Afficher_Menu(etat); |
jojofannum69 | 0:8bf954873391 | 144 | switch (etat) { |
jojofannum69 | 0:8bf954873391 | 145 | case JOUE : |
jojofannum69 | 0:8bf954873391 | 146 | // évèments |
jojofannum69 | 0:8bf954873391 | 147 | if (left) { |
jojofannum69 | 0:8bf954873391 | 148 | etat = CLL; |
jojofannum69 | 0:8bf954873391 | 149 | Sortir=true; |
jojofannum69 | 0:8bf954873391 | 150 | } |
jojofannum69 | 0:8bf954873391 | 151 | if (center)cll(); |
jojofannum69 | 0:8bf954873391 | 152 | break; |
jojofannum69 | 0:8bf954873391 | 153 | } |
jojofannum69 | 0:8bf954873391 | 154 | wait(0.125); |
jojofannum69 | 0:8bf954873391 | 155 | |
jojofannum69 | 0:8bf954873391 | 156 | } |
jojofannum69 | 0:8bf954873391 | 157 | } |
jojofannum69 | 0:8bf954873391 | 158 | |
jojofannum69 | 0:8bf954873391 | 159 | |
jojofannum69 | 0:8bf954873391 | 160 | void Menu_Mario(int etat) |
jojofannum69 | 0:8bf954873391 | 161 | { |
jojofannum69 | 0:8bf954873391 | 162 | bool Sortir = false; // On sort du sous-menu |
jojofannum69 | 0:8bf954873391 | 163 | while (!Sortir) { |
jojofannum69 | 0:8bf954873391 | 164 | Afficher_Menu(etat); |
jojofannum69 | 0:8bf954873391 | 165 | switch (etat) { |
jojofannum69 | 0:8bf954873391 | 166 | case JOUE : |
jojofannum69 | 0:8bf954873391 | 167 | // évèments |
jojofannum69 | 0:8bf954873391 | 168 | if (left) { |
jojofannum69 | 0:8bf954873391 | 169 | etat = MARIO; |
jojofannum69 | 0:8bf954873391 | 170 | Sortir=true; |
jojofannum69 | 0:8bf954873391 | 171 | } |
jojofannum69 | 0:8bf954873391 | 172 | if (center)mario(); |
jojofannum69 | 0:8bf954873391 | 173 | break; |
jojofannum69 | 0:8bf954873391 | 174 | } |
jojofannum69 | 0:8bf954873391 | 175 | wait(0.125); |
jojofannum69 | 0:8bf954873391 | 176 | |
jojofannum69 | 0:8bf954873391 | 177 | } |
jojofannum69 | 0:8bf954873391 | 178 | } |
jojofannum69 | 0:8bf954873391 | 179 | |
jojofannum69 | 0:8bf954873391 | 180 | |
jojofannum69 | 0:8bf954873391 | 181 | int main() |
jojofannum69 | 0:8bf954873391 | 182 | { |
jojofannum69 | 0:8bf954873391 | 183 | while (1) { |
jojofannum69 | 0:8bf954873391 | 184 | Afficher_Menu(etat); |
jojofannum69 | 0:8bf954873391 | 185 | switch (etat) { |
jojofannum69 | 0:8bf954873391 | 186 | case CLL : |
jojofannum69 | 0:8bf954873391 | 187 | // évèments |
jojofannum69 | 0:8bf954873391 | 188 | if (down) etat = MARIO; |
jojofannum69 | 0:8bf954873391 | 189 | if (right) Menu_CLL(JOUE); |
jojofannum69 | 0:8bf954873391 | 190 | break; |
jojofannum69 | 0:8bf954873391 | 191 | case MARIO : |
jojofannum69 | 0:8bf954873391 | 192 | if (up) etat=CLL; |
jojofannum69 | 0:8bf954873391 | 193 | if (right) Menu_Mario(JOUE); |
jojofannum69 | 0:8bf954873391 | 194 | if (down) etat = Sensor; |
jojofannum69 | 0:8bf954873391 | 195 | break; |
jojofannum69 | 0:8bf954873391 | 196 | case Sensor : |
jojofannum69 | 0:8bf954873391 | 197 | lcd.cls(); |
jojofannum69 | 0:8bf954873391 | 198 | lcd.printf(" "); |
jojofannum69 | 0:8bf954873391 | 199 | lcd.locate(0,8); |
jojofannum69 | 0:8bf954873391 | 200 | lcd.printf("Temp = %.3f\n\r", (float)sensor); |
jojofannum69 | 0:8bf954873391 | 201 | wait(0.5); |
jojofannum69 | 0:8bf954873391 | 202 | if (up) etat=MARIO; |
jojofannum69 | 0:8bf954873391 | 203 | break; |
jojofannum69 | 0:8bf954873391 | 204 | |
jojofannum69 | 0:8bf954873391 | 205 | } |
jojofannum69 | 0:8bf954873391 | 206 | wait(0.125); |
jojofannum69 | 0:8bf954873391 | 207 | |
jojofannum69 | 0:8bf954873391 | 208 | } |
jojofannum69 | 0:8bf954873391 | 209 | |
jojofannum69 | 0:8bf954873391 | 210 | } |