Files
mixly3-server/arduino-libs/arduino-cli/libraries/M5StickC-Plus-master/examples/Games/Dices/Dices.ino

81 lines
1.4 KiB
C++

/*
A couple of dices on a tiny 80x160px TFT display
Author: Alfonso de Cala <alfonso@el-magnifico.org>
*/
#include <M5StickCPlus.h>
#define DOT_SIZE 6
int dot[6][6][2] {
{{35,35}},
{{15,15},{55,55}},
{{15,15},{35,35},{55,55}},
{{15,15},{15,55},{55,15},{55,55}},
{{15,15},{15,55},{35,35},{55,15},{55,55}},
{{15,15},{15,35},{15,55},{55,15},{55,35},{55,55}},
};
float accX = 0;
float accY = 0;
float accZ = 0;
void setup(void) {
M5.begin();
M5.IMU.Init();
M5.Lcd.setRotation(1);
M5.Lcd.fillScreen(TFT_GREEN);
M5.Lcd.setTextColor(TFT_BLACK); // Adding a background colour erases previous text automatically
M5.Lcd.setCursor(10, 30);
M5.Lcd.setTextSize(3);
M5.Lcd.print("SHAKE ME");
delay(1000);
}
void draw_dice(int16_t x, int16_t y, int n) {
M5.Lcd.fillRect(x, y, 70, 70, WHITE);
for(int d = 0; d < 6; d++) {
if (dot[n][d][0] > 0) {
M5.Lcd.fillCircle(x+dot[n][d][0], y+dot[n][d][1], DOT_SIZE, TFT_BLACK);
}
}
}
void loop() {
while(1) {
M5.IMU.getAccelData(&accX,&accY,&accZ);
if (accX > 1.5 || accY > 1.5 ) {
break;
}
}
M5.Lcd.fillScreen(TFT_GREEN);
// Draw first dice
delay(500); // A little delay to increase suspense :-D
int number = random(0, 6);
draw_dice(50,30,number);
// Draw second dice
delay(500);
number = random(0, 6);
draw_dice(125,30,number);
}