.

Dependencies:   mbed C12832 LM75B

Committer:
jojofannum69
Date:
Wed Oct 13 13:51:26 2021 +0000
Revision:
0:8bf954873391
.

Who changed what in which revision?

UserRevisionLine numberNew 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 }