Maximum sound animation test for Pokitto. BE CAREFUL, it is loud. You can also test buttons.

Dependencies:   PokittoLib

Fork of HelloWorld by Pokitto Community Team

A sound / buttons testing program. Put feelgood.snd on SD card (11kHz 8- bit unsigned raw sample) to hear sound

Committer:
Pokitto
Date:
Wed Oct 11 22:52:35 2017 +0000
Revision:
2:373e5a50331a
Parent:
1:9e3293ab4ad9
Child:
3:53db531e03aa
Debugs edited out

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Pokitto 1:9e3293ab4ad9 1 #include "Pokitto.h"
Pokitto 1:9e3293ab4ad9 2 #include "Animation.h"
Pokitto 1:9e3293ab4ad9 3
Pokitto 1:9e3293ab4ad9 4 #define X_L_EYE 6
Pokitto 1:9e3293ab4ad9 5 #define Y_L_EYE 8
Pokitto 1:9e3293ab4ad9 6 #define X_R_EYE 58
Pokitto 1:9e3293ab4ad9 7 #define Y_R_EYE 8
Pokitto 1:9e3293ab4ad9 8 #define X_CHEEKS 5
Pokitto 1:9e3293ab4ad9 9 #define Y_CHEEKS 43
Pokitto 1:9e3293ab4ad9 10 #define Y_PUPIL 18
Pokitto 1:9e3293ab4ad9 11 #define X_LPUPIL 19
Pokitto 1:9e3293ab4ad9 12 #define X_RPUPIL 66
Pokitto 1:9e3293ab4ad9 13 #define DX_PUPIL 8
Pokitto 1:9e3293ab4ad9 14 #define X_SMILE 40
Pokitto 1:9e3293ab4ad9 15 #define Y_SMILE 57
Pokitto 1:9e3293ab4ad9 16 #define X_OH 46
Pokitto 1:9e3293ab4ad9 17 #define Y_OH 49
Pokitto 1:9e3293ab4ad9 18 #define X_GRIN 19
Pokitto 1:9e3293ab4ad9 19 #define Y_GRIN 56
Pokitto 1:9e3293ab4ad9 20 #define X_FLAT 34
Pokitto 1:9e3293ab4ad9 21 #define X_BLINKF 5
Pokitto 1:9e3293ab4ad9 22 #define Y_BLINKF 6
Pokitto 1:9e3293ab4ad9 23 #define X_BLINKH 2
Pokitto 1:9e3293ab4ad9 24 #define Y_BLINKH 12
Pokitto 1:9e3293ab4ad9 25 #define READLEVEL 15
Pokitto 1:9e3293ab4ad9 26 #define GRINLEVEL 30
Pokitto 1:9e3293ab4ad9 27 #define GRINOUT 130
Pokitto 1:9e3293ab4ad9 28 #define TALKPROBABILITY 0x90
Pokitto 1:9e3293ab4ad9 29
Pokitto 1:9e3293ab4ad9 30 Pokitto::Core gb;
Pokitto 1:9e3293ab4ad9 31
Pokitto 1:9e3293ab4ad9 32 void popShowButton(char c) {
Pokitto 1:9e3293ab4ad9 33 gb.display.color=0;
Pokitto 1:9e3293ab4ad9 34 gb.display.fillRect(gb.display.width/2-10,gb.display.height/2-10,20,20);
Pokitto 1:9e3293ab4ad9 35 gb.display.color=1;
Pokitto 1:9e3293ab4ad9 36 gb.display.setCursor(gb.display.width/2-5,gb.display.height/2-5);
Pokitto 1:9e3293ab4ad9 37 gb.display.print(c);
Pokitto 1:9e3293ab4ad9 38 }
Pokitto 1:9e3293ab4ad9 39
Pokitto 1:9e3293ab4ad9 40 void pout (char* text) {
Pokitto 1:9e3293ab4ad9 41 gb.display.enableDirectPrinting(true);
Pokitto 1:9e3293ab4ad9 42 gb.display.setCursor(0,0);
Pokitto 1:9e3293ab4ad9 43 gb.display.print(text);
Pokitto 1:9e3293ab4ad9 44 wait_ms(3000);
Pokitto 1:9e3293ab4ad9 45 }
Pokitto 1:9e3293ab4ad9 46
Pokitto 1:9e3293ab4ad9 47 void pout (int val) {
Pokitto 1:9e3293ab4ad9 48 gb.display.enableDirectPrinting(true);
Pokitto 1:9e3293ab4ad9 49 gb.display.setCursor(0,0);
Pokitto 1:9e3293ab4ad9 50 gb.display.print(val);
Pokitto 1:9e3293ab4ad9 51 wait_ms(3000);
Pokitto 1:9e3293ab4ad9 52 }
Pokitto 1:9e3293ab4ad9 53
Pokitto 1:9e3293ab4ad9 54
Pokitto 1:9e3293ab4ad9 55 int main () {
Pokitto 1:9e3293ab4ad9 56 gb.begin();
Pokitto 2:373e5a50331a 57 gb.sound.playMusicStream("feelgood.SND");
Pokitto 1:9e3293ab4ad9 58 int16_t x,y,x_lpupil,x_rpupil,y_pupil, squint=1;
Pokitto 1:9e3293ab4ad9 59 uint8_t mouth=0,eyes=1,blink=0,blinkcount=0, eyecount=0, grincounter=0, grinout=GRINOUT;
Pokitto 1:9e3293ab4ad9 60 bool blockmouth=false;
Pokitto 1:9e3293ab4ad9 61 bool talking=false;
Pokitto 1:9e3293ab4ad9 62
Pokitto 1:9e3293ab4ad9 63 x_lpupil = X_LPUPIL; x_rpupil = X_RPUPIL; y_pupil=Y_PUPIL;
Pokitto 1:9e3293ab4ad9 64 //gb.begin();
Pokitto 1:9e3293ab4ad9 65 gb.display.load565Palette(m_anim_pal);
Pokitto 1:9e3293ab4ad9 66 gb.display.bgcolor=10;
Pokitto 1:9e3293ab4ad9 67 gb.display.clear();
Pokitto 1:9e3293ab4ad9 68 gb.display.setColorDepth(4);
Pokitto 1:9e3293ab4ad9 69 gb.sound.ampEnable(true);
Pokitto 1:9e3293ab4ad9 70 gb.sound.playMusicStream();
Pokitto 1:9e3293ab4ad9 71 while (gb.isRunning()) {
Pokitto 1:9e3293ab4ad9 72
Pokitto 1:9e3293ab4ad9 73
Pokitto 1:9e3293ab4ad9 74 if (soundbyte > 127 + READLEVEL|| soundbyte < 127-READLEVEL) talking = true;
Pokitto 1:9e3293ab4ad9 75 else talking=false;
Pokitto 1:9e3293ab4ad9 76 //talking = false;
Pokitto 1:9e3293ab4ad9 77 //if (gb.buttons.leftBtn()) talking=true;
Pokitto 1:9e3293ab4ad9 78 //if (gb.buttons.aBtn()) squint=false;
Pokitto 1:9e3293ab4ad9 79 //else squint = true;
Pokitto 1:9e3293ab4ad9 80 //if (gb.buttons.bBtn()) squint=2;
Pokitto 1:9e3293ab4ad9 81 //if (gb.buttons.downBtn()) blockmouth=true;
Pokitto 1:9e3293ab4ad9 82 //else blockmouth=false;
Pokitto 1:9e3293ab4ad9 83
Pokitto 1:9e3293ab4ad9 84 if (gb.buttons.aBtn()) popShowButton('A');
Pokitto 1:9e3293ab4ad9 85 if (gb.buttons.bBtn()) popShowButton('B');
Pokitto 1:9e3293ab4ad9 86 if (gb.buttons.cBtn()) popShowButton('C');
Pokitto 1:9e3293ab4ad9 87 if (gb.buttons.upBtn()) popShowButton('U');
Pokitto 1:9e3293ab4ad9 88 if (gb.buttons.downBtn()) popShowButton('D');
Pokitto 1:9e3293ab4ad9 89 if (gb.buttons.leftBtn()) popShowButton('L');
Pokitto 1:9e3293ab4ad9 90 if (gb.buttons.rightBtn()) popShowButton('R');
Pokitto 1:9e3293ab4ad9 91
Pokitto 1:9e3293ab4ad9 92 if (!talking) grincounter++;
Pokitto 1:9e3293ab4ad9 93 else grincounter = 0;
Pokitto 1:9e3293ab4ad9 94
Pokitto 1:9e3293ab4ad9 95 if (grincounter>GRINOUT) grincounter=0;
Pokitto 1:9e3293ab4ad9 96
Pokitto 1:9e3293ab4ad9 97 if (gb.update()) {
Pokitto 1:9e3293ab4ad9 98 x=X_L_EYE; y=Y_L_EYE;
Pokitto 1:9e3293ab4ad9 99 gb.display.drawBitmap(x,y,m_lefteye);
Pokitto 1:9e3293ab4ad9 100 x=X_R_EYE; y=Y_R_EYE;
Pokitto 1:9e3293ab4ad9 101 gb.display.drawBitmap(x,y,m_righteye);
Pokitto 1:9e3293ab4ad9 102
Pokitto 1:9e3293ab4ad9 103 uint8_t t;
Pokitto 1:9e3293ab4ad9 104 //if (Pokitto::streamPaused()) eyes=2;
Pokitto 1:9e3293ab4ad9 105 switch (eyes) {
Pokitto 1:9e3293ab4ad9 106 case 0:
Pokitto 1:9e3293ab4ad9 107 x_lpupil=X_LPUPIL; x_rpupil=X_RPUPIL;
Pokitto 1:9e3293ab4ad9 108 t=98;
Pokitto 1:9e3293ab4ad9 109 break;
Pokitto 1:9e3293ab4ad9 110 case 1:
Pokitto 1:9e3293ab4ad9 111 x_lpupil=X_LPUPIL-DX_PUPIL-2; x_rpupil=X_RPUPIL-DX_PUPIL;
Pokitto 1:9e3293ab4ad9 112 t=70;
Pokitto 1:9e3293ab4ad9 113 break;
Pokitto 1:9e3293ab4ad9 114 case 2:
Pokitto 1:9e3293ab4ad9 115 x_lpupil=X_LPUPIL+DX_PUPIL; x_rpupil=X_RPUPIL+DX_PUPIL+2;
Pokitto 1:9e3293ab4ad9 116 t=70;
Pokitto 1:9e3293ab4ad9 117 break;
Pokitto 1:9e3293ab4ad9 118 }
Pokitto 1:9e3293ab4ad9 119 if (random(100)>t) eyes = random(2);
Pokitto 1:9e3293ab4ad9 120
Pokitto 1:9e3293ab4ad9 121 switch (blink) {
Pokitto 1:9e3293ab4ad9 122 case 0:
Pokitto 1:9e3293ab4ad9 123 if (blinkcount) blinkcount--;
Pokitto 1:9e3293ab4ad9 124 else {
Pokitto 1:9e3293ab4ad9 125 blink = random(2);
Pokitto 1:9e3293ab4ad9 126 blinkcount = 8/(blink+1);
Pokitto 1:9e3293ab4ad9 127 if (blink==1) blinkcount *=3;
Pokitto 1:9e3293ab4ad9 128 }
Pokitto 1:9e3293ab4ad9 129 break;
Pokitto 1:9e3293ab4ad9 130 case 2:
Pokitto 1:9e3293ab4ad9 131 if (blinkcount) {
Pokitto 1:9e3293ab4ad9 132 x=X_BLINKF; y=Y_BLINKF;
Pokitto 1:9e3293ab4ad9 133 gb.display.invisiblecolor=255;
Pokitto 1:9e3293ab4ad9 134 gb.display.drawBitmap(x,y,m_lids_closed);
Pokitto 1:9e3293ab4ad9 135 blinkcount--;
Pokitto 1:9e3293ab4ad9 136 } else {
Pokitto 1:9e3293ab4ad9 137 blink = 0;
Pokitto 1:9e3293ab4ad9 138 blinkcount = random(0x20);
Pokitto 1:9e3293ab4ad9 139 }
Pokitto 1:9e3293ab4ad9 140 break;
Pokitto 1:9e3293ab4ad9 141 case 1:
Pokitto 1:9e3293ab4ad9 142 if (blinkcount) {
Pokitto 1:9e3293ab4ad9 143 x=X_BLINKH; y=Y_BLINKH;
Pokitto 1:9e3293ab4ad9 144 gb.display.invisiblecolor=255;
Pokitto 1:9e3293ab4ad9 145 gb.display.color=10;
Pokitto 1:9e3293ab4ad9 146 gb.display.fillRect(0,0,110,12);
Pokitto 1:9e3293ab4ad9 147 gb.display.drawBitmap(x,y,m_lids_halfeyes);
Pokitto 1:9e3293ab4ad9 148 blinkcount--;
Pokitto 1:9e3293ab4ad9 149 } else {
Pokitto 1:9e3293ab4ad9 150 blink=0;
Pokitto 1:9e3293ab4ad9 151 blinkcount = random(0x20);
Pokitto 1:9e3293ab4ad9 152 }
Pokitto 1:9e3293ab4ad9 153 }
Pokitto 1:9e3293ab4ad9 154 if (blink !=2 && random(100)<98) {
Pokitto 1:9e3293ab4ad9 155 gb.display.invisiblecolor=1;
Pokitto 1:9e3293ab4ad9 156 if (squint==1) {
Pokitto 1:9e3293ab4ad9 157 gb.display.drawBitmap(x_lpupil,y_pupil,m_eyepupil);
Pokitto 1:9e3293ab4ad9 158 gb.display.drawBitmap(x_rpupil,y_pupil,m_eyepupil);
Pokitto 1:9e3293ab4ad9 159 gb.display.invisiblecolor=10;
Pokitto 1:9e3293ab4ad9 160 //if (random(100)>98) eyes =0;
Pokitto 1:9e3293ab4ad9 161 }else if (squint ==0) {
Pokitto 1:9e3293ab4ad9 162 gb.display.drawBitmap(x_lpupil,y_pupil,m_squint);
Pokitto 1:9e3293ab4ad9 163 gb.display.drawBitmap(x_rpupil,y_pupil,m_squint);
Pokitto 1:9e3293ab4ad9 164 gb.display.invisiblecolor=10;
Pokitto 1:9e3293ab4ad9 165 //if (random(100)>97) eyes =1;
Pokitto 1:9e3293ab4ad9 166 } else if (squint ==2) {
Pokitto 1:9e3293ab4ad9 167 gb.display.drawBitmap(x_lpupil-3,y_pupil-3,m_heart);
Pokitto 1:9e3293ab4ad9 168 gb.display.drawBitmap(x_rpupil-3,y_pupil-3,m_heart);
Pokitto 1:9e3293ab4ad9 169 gb.display.invisiblecolor=10;
Pokitto 1:9e3293ab4ad9 170 }
Pokitto 1:9e3293ab4ad9 171 }
Pokitto 1:9e3293ab4ad9 172
Pokitto 1:9e3293ab4ad9 173 //if (Pokitto::streamPaused()) mouth=5;
Pokitto 1:9e3293ab4ad9 174 x=X_CHEEKS; y=Y_CHEEKS;
Pokitto 1:9e3293ab4ad9 175 gb.display.invisiblecolor=10;
Pokitto 1:9e3293ab4ad9 176 if (mouth != 5) gb.display.drawBitmap(x,y,m_cheeks);
Pokitto 1:9e3293ab4ad9 177
Pokitto 1:9e3293ab4ad9 178 uint8_t om=mouth;
Pokitto 1:9e3293ab4ad9 179
Pokitto 1:9e3293ab4ad9 180 if (talking) {
Pokitto 1:9e3293ab4ad9 181 if (random(0xfff)>TALKPROBABILITY) {
Pokitto 1:9e3293ab4ad9 182 uint8_t oldmouth = mouth;
Pokitto 1:9e3293ab4ad9 183 mouth = random(3)+1;
Pokitto 1:9e3293ab4ad9 184 if (oldmouth=mouth) mouth++;
Pokitto 1:9e3293ab4ad9 185 if (mouth==5) mouth = 1;
Pokitto 1:9e3293ab4ad9 186 }
Pokitto 1:9e3293ab4ad9 187 } else {
Pokitto 1:9e3293ab4ad9 188 if (grincounter>GRINLEVEL) mouth = 5;
Pokitto 1:9e3293ab4ad9 189 else mouth = 5;
Pokitto 1:9e3293ab4ad9 190 }
Pokitto 1:9e3293ab4ad9 191
Pokitto 1:9e3293ab4ad9 192 if (blockmouth) mouth = om;
Pokitto 1:9e3293ab4ad9 193 //if (Pokitto::streamPaused()) mouth=5;
Pokitto 1:9e3293ab4ad9 194 switch (mouth) {
Pokitto 1:9e3293ab4ad9 195 case 0:
Pokitto 1:9e3293ab4ad9 196 x=X_SMILE; y=Y_SMILE;
Pokitto 1:9e3293ab4ad9 197 gb.display.drawBitmap(x,y,m_smile);
Pokitto 1:9e3293ab4ad9 198 break;
Pokitto 1:9e3293ab4ad9 199 case 1:
Pokitto 1:9e3293ab4ad9 200 x=X_SMILE; y=Y_SMILE;
Pokitto 1:9e3293ab4ad9 201 gb.display.drawBitmap(x,y,m_smile_open);
Pokitto 1:9e3293ab4ad9 202 break;
Pokitto 1:9e3293ab4ad9 203 case 2:
Pokitto 1:9e3293ab4ad9 204 x=X_SMILE; y=Y_SMILE;
Pokitto 1:9e3293ab4ad9 205 gb.display.drawBitmap(x,y,m_tongue);
Pokitto 1:9e3293ab4ad9 206 break;
Pokitto 1:9e3293ab4ad9 207 case 3:
Pokitto 1:9e3293ab4ad9 208 x=X_OH; y=Y_OH;
Pokitto 1:9e3293ab4ad9 209 gb.display.drawBitmap(x,y,m_oh);
Pokitto 1:9e3293ab4ad9 210 break;
Pokitto 1:9e3293ab4ad9 211 case 4:
Pokitto 1:9e3293ab4ad9 212 x=X_FLAT; y=Y_SMILE;
Pokitto 1:9e3293ab4ad9 213 gb.display.drawBitmap(x,y,m_flat);
Pokitto 1:9e3293ab4ad9 214 break;
Pokitto 1:9e3293ab4ad9 215 case 5:
Pokitto 1:9e3293ab4ad9 216 x=X_GRIN; y=Y_GRIN;
Pokitto 1:9e3293ab4ad9 217 gb.display.drawBitmap(x,y,m_grin);
Pokitto 1:9e3293ab4ad9 218 break;
Pokitto 1:9e3293ab4ad9 219 default:
Pokitto 1:9e3293ab4ad9 220 break;
Pokitto 1:9e3293ab4ad9 221 }
Pokitto 1:9e3293ab4ad9 222 //gb.display.color = 0;
Pokitto 1:9e3293ab4ad9 223 //gb.display.setCursor(0,0);
Pokitto 1:9e3293ab4ad9 224 //gb.display.print(soundbyte);
Pokitto 1:9e3293ab4ad9 225 //if (gb.buttons.pressed(BTN_A)) gb.display.rotatePalette(1);
Pokitto 1:9e3293ab4ad9 226
Pokitto 1:9e3293ab4ad9 227 }
Pokitto 1:9e3293ab4ad9 228 }
Pokitto 1:9e3293ab4ad9 229 }
Pokitto 1:9e3293ab4ad9 230
Pokitto 1:9e3293ab4ad9 231
Pokitto 1:9e3293ab4ad9 232