Cette page fournit une interface de navigation pour trouver toutes les valeurs d’une propriété et une page donnée. D’autres interfaces de recherche disponibles incluent la recherche de propriété, et le constructeur de requête ask.
/* Ci-dessous, retrouvez le programme de Renaud et Mayak permetant d'animer
la BentoGhost réalisé dans le cadre de la formation FabNumAura en 2022.
Si vous décidiez de marcher dans nos pas, pour vous,vos enfants ou vos parents, n'hésitez pas à
nous envoyer des photos de vos versions.
Bonne lecture et bonne continuation dans vos projets.
*/
#include // bliothèque pour reboot le game
////////////////// Ring Led ///////////////////////
#include
#define NUM_LEDS 12
#define DATA_PIN 3
#define CLOCK_PIN 13
CRGB leds[NUM_LEDS];
////////////////// SERVOS ///////////////////////
#include
Servo myservo1;
int score = 0; // point par cible
unsigned long tpsPartie = 65000; // le tps que la bête se réveil il y a déjà 5 secondes donc 65000 ms pour une partie d'une minute
unsigned long tpsEnCours = 0; // variable qui sera associé à millis pour gérer le temps de la partie
int pos90 = 102; // variable indiquant la position du servomoteur à 90°(à ajusté ici 102°)
int pos0 = -2; // variable indiquant la position du servomoteur à 0° (à ajusté ici -2°)
///////////////POTAR START GAME/////////////
//const int potarStartGame = A2; // le potar qui active le jeu est sur la broche analogique A2, nous l'utiliserons pour une autre version
////////////////// BUZZER///////////////////////
const int pinBuzzer = 13; //le buzzer est sur la broche 13
///////////////// STAND de TIR//////////////////////
//ci-dessous le bouton et sa variable d etat ainsi que la led de la cible1
const int boutB1 = 4; //
int valBoutB1 = 0; //variable de l etat du bouton 1
const int ledB1 = 7; //
//ci-dessous le bouton et sa variable d etat ainsi que la led de la cible2
const int boutB2 = 5;
int valBoutB2 = 0; //variable de l etat du bouton 2
const int ledB2 = 8;
//ci-dessous le bouton et sa variable d etat ainsi que la led de la cible3
const int boutB3 = 6;
int valBoutB3 = 0; //variable de l etat du bouton 3
const int ledB3 = 9;
// ci-dessous les led de l'interieur de la box
const int ledGauche = 10;
const int ledDroite = 11;
//////////Biblio Adafruit pour écran score final/////////////////////////////
#include
#include
#include
/////////////Biblio Adafruit pour Image////////////////////////
#include
#define nombreDePixelsEnLargeur 128 // Taille de l'écran OLED, en pixel, au niveau de sa largeur
#define nombreDePixelsEnHauteur 64 // Taille de l'écran OLED, en pixel, au niveau de sa hauteur
#define brocheResetOLED -1 // Reset de l'OLED partagé avec l'Arduino (d'où la valeur à -1, et non un numéro de pin)
#define adresseI2CecranOLED 0x3C // Adresse de "mon" écran OLED sur le bus i2c (généralement égal à 0x3C ou 0x3D)
Adafruit_SSD1306 ecranOLED(nombreDePixelsEnLargeur, nombreDePixelsEnHauteur, &Wire, brocheResetOLED);
#define largeurDeLimage 128 // Largeur de l'image à afficher, en pixels
#define hauteurDeLimage 64 // Hauteur de l'image à afficher, en pixels
// 'BentoGhost', 128x64px
const unsigned char epd_bitmap_BentoGhost [] PROGMEM = {
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0x00, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0x00, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf9, 0xff, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf9, 0xff, 0x8f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf9, 0xff, 0x8f, 0xff, 0x8f, 0xff, 0xfe, 0x3f, 0xf1, 0xff, 0xfc, 0x3f, 0xff, 0xff, 0xff, 0xff,
0xf9, 0xff, 0x8f, 0xfc, 0x01, 0xfe, 0x30, 0x0f, 0xc0, 0x07, 0xf0, 0x0f, 0xff, 0xff, 0xff, 0xff,
0xf9, 0xff, 0x8f, 0xf8, 0x00, 0xfe, 0x20, 0x07, 0xc0, 0x07, 0xc0, 0x03, 0xff, 0xff, 0xff, 0xff,
0xf9, 0xff, 0x9f, 0xf1, 0xf8, 0xfe, 0x0f, 0xc7, 0xc0, 0x07, 0xc7, 0xe3, 0xff, 0xff, 0xff, 0xff,
0xf9, 0xff, 0x3f, 0xe3, 0xfc, 0x7e, 0x1f, 0xe7, 0xf1, 0xff, 0x8f, 0xf1, 0xff, 0xff, 0xff, 0xff,
0xf8, 0x00, 0x7f, 0xe7, 0xfe, 0x7e, 0x3f, 0xe3, 0xf1, 0xff, 0x9f, 0xf9, 0xff, 0xff, 0xff, 0xff,
0xf8, 0x00, 0x3f, 0xc7, 0xfe, 0x7e, 0x3f, 0xe3, 0xf1, 0xff, 0x1f, 0xf8, 0xff, 0xff, 0xff, 0xff,
0xf8, 0x00, 0x0f, 0xc7, 0xfe, 0x3e, 0x3f, 0xe3, 0xf1, 0xff, 0x1f, 0xf8, 0xff, 0xff, 0xff, 0xff,
0xf9, 0xff, 0x87, 0xc0, 0x00, 0x3e, 0x3f, 0xe3, 0xf1, 0xff, 0x1f, 0xf8, 0xff, 0xff, 0xff, 0xff,
0xf9, 0xff, 0xe3, 0xc0, 0x00, 0x3e, 0x3f, 0xe3, 0xf1, 0xff, 0x1f, 0xfc, 0xff, 0xff, 0xff, 0xff,
0xf9, 0xff, 0xe3, 0xc0, 0x00, 0x3e, 0x3f, 0xe3, 0xf1, 0xff, 0x1f, 0xf8, 0xff, 0xff, 0xff, 0xff,
0xf9, 0xff, 0xe3, 0xcf, 0xff, 0xfe, 0x3f, 0xe3, 0xf1, 0xff, 0x1f, 0xf8, 0xff, 0xff, 0xff, 0xff,
0xf9, 0xff, 0xe3, 0xc7, 0xff, 0xfe, 0x3f, 0xe3, 0xf1, 0xff, 0x1f, 0xf8, 0xff, 0xff, 0xff, 0xff,
0xf9, 0xff, 0xe3, 0xe7, 0xff, 0xfe, 0x3f, 0xe3, 0xf1, 0xff, 0x9f, 0xf9, 0xff, 0xff, 0xff, 0xff,
0xf9, 0xff, 0xc7, 0xe3, 0xff, 0xfe, 0x3f, 0xe3, 0xf1, 0xff, 0x8f, 0xf1, 0xff, 0xff, 0xff, 0xff,
0xf9, 0xff, 0x87, 0xf1, 0xfe, 0x7e, 0x3f, 0xe3, 0xf8, 0xff, 0xc7, 0xe3, 0xff, 0xff, 0xff, 0xff,
0xf8, 0x00, 0x0f, 0xf8, 0x00, 0x7e, 0x3f, 0xe3, 0xf8, 0x07, 0xc0, 0x03, 0xff, 0xff, 0xff, 0xff,
0xf8, 0x00, 0x1f, 0xfc, 0x00, 0x7e, 0x3f, 0xe3, 0xfc, 0x07, 0xf0, 0x0f, 0xff, 0xff, 0xff, 0xff,
0xf8, 0x01, 0xff, 0xff, 0x87, 0xfe, 0x3f, 0xe3, 0xff, 0x1f, 0xfc, 0x3f, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0x80, 0x3f, 0xf8, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xfe, 0x00, 0x0f, 0xf0, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xfc, 0x00, 0x07, 0xf0, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe0, 0x7f,
0xff, 0xff, 0xff, 0xf8, 0x00, 0x03, 0xf0, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe0, 0xff,
0xff, 0xff, 0xff, 0xf0, 0x04, 0x01, 0xf0, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe0, 0xff,
0xff, 0xff, 0xff, 0xe0, 0x3f, 0x01, 0xf0, 0x78, 0x7f, 0xfc, 0x1f, 0xff, 0x81, 0xff, 0xc0, 0xff,
0xff, 0xff, 0xff, 0xe0, 0x7f, 0x81, 0xe0, 0x60, 0x1f, 0xe0, 0x03, 0xfe, 0x00, 0x7e, 0x00, 0x1f,
0xff, 0xff, 0xff, 0xc0, 0x7f, 0xff, 0xe0, 0x40, 0x1f, 0xc0, 0x01, 0xfc, 0x00, 0x3e, 0x00, 0x1f,
0xff, 0xff, 0xff, 0xc0, 0xff, 0xff, 0xe0, 0x00, 0x0f, 0x80, 0x00, 0xf8, 0x00, 0x1e, 0x00, 0x1f,
0xff, 0xff, 0xff, 0x80, 0xff, 0xff, 0xe0, 0x10, 0x0f, 0x00, 0x80, 0xf8, 0x3c, 0x0e, 0x00, 0x1f,
0xff, 0xff, 0xff, 0x80, 0xff, 0xff, 0xe0, 0x7c, 0x0e, 0x03, 0xc0, 0xf0, 0x3f, 0xff, 0x81, 0xff,
0xff, 0xff, 0xff, 0x81, 0xf8, 0x01, 0xc0, 0xfc, 0x0e, 0x07, 0xe0, 0x78, 0x1f, 0xff, 0x81, 0xff,
0xff, 0xff, 0xff, 0x81, 0xf8, 0x01, 0xc0, 0xfc, 0x0e, 0x07, 0xe0, 0x78, 0x03, 0xff, 0x81, 0xff,
0xff, 0xff, 0xff, 0x81, 0xf8, 0x01, 0xc0, 0xfc, 0x0c, 0x0f, 0xe0, 0x78, 0x00, 0xff, 0x83, 0xff,
0xff, 0xff, 0xff, 0x81, 0xff, 0x03, 0xc1, 0xfc, 0x1c, 0x0f, 0xe0, 0x7e, 0x00, 0x3f, 0x03, 0xff,
0xff, 0xff, 0xff, 0x80, 0xff, 0x03, 0x81, 0xf8, 0x1c, 0x0f, 0xc0, 0xff, 0x80, 0x3f, 0x03, 0xff,
0xff, 0xff, 0xff, 0x80, 0xfe, 0x03, 0x81, 0xf8, 0x1c, 0x0f, 0xc0, 0xff, 0xe0, 0x1f, 0x03, 0xff,
0xff, 0xff, 0xff, 0xc0, 0x7c, 0x07, 0x81, 0xf8, 0x1c, 0x07, 0x80, 0xff, 0xf8, 0x1f, 0x03, 0xff,
0xff, 0xff, 0xff, 0xc0, 0x00, 0x0f, 0x81, 0xf8, 0x3e, 0x03, 0x01, 0xe0, 0xf8, 0x1f, 0x03, 0xff,
0xff, 0xff, 0xff, 0xe0, 0x00, 0x0f, 0x83, 0xf8, 0x3e, 0x00, 0x01, 0xe0, 0x20, 0x3f, 0x00, 0x7f,
0xff, 0xff, 0xff, 0xf0, 0x00, 0x1f, 0x03, 0xf0, 0x3f, 0x00, 0x03, 0xf0, 0x00, 0x3f, 0x00, 0xff,
0xff, 0xff, 0xff, 0xf8, 0x00, 0x7f, 0x03, 0xf0, 0x3f, 0x80, 0x0f, 0xf8, 0x00, 0x7f, 0x80, 0xff,
0xff, 0xff, 0xff, 0xfe, 0x01, 0xff, 0x03, 0xf0, 0x3f, 0xe0, 0x3f, 0xfe, 0x03, 0xff, 0xc0, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
};
// Array of all bitmaps for convenience. (Total bytes used to store images in PROGMEM = 1040)
const int epd_bitmap_allArray_LEN = 1;
const unsigned char* epd_bitmap_allArray[1] = {
epd_bitmap_BentoGhost
};
void setup()
{
Serial.begin(9600); //on etablie la connection avec le moniteur
imageBentoGhost(); // fonction qui permet d'afficher l'image BentoGhost au démarage et tout le lond de la partie
// pinMode(potarStartGame, INPUT); // le potar est déclaré en entrée
pinMode(pinBuzzer, OUTPUT);// le buzzer est une sortie
//les led sont déclarées en sortie
pinMode(ledB1, OUTPUT);
pinMode(ledB2, OUTPUT);
pinMode(ledB3, OUTPUT);
pinMode(ledGauche, OUTPUT);
pinMode(ledDroite, OUTPUT);
//les boutons (microrupteurs) sont déclarés en entrées
pinMode(boutB1, INPUT_PULLUP);
pinMode(boutB2, INPUT_PULLUP);
pinMode(boutB3, INPUT_PULLUP);
// décompte avant le début de la partie
Serial.println("3");
tone(pinBuzzer, 300, 500);
delay(500);
Serial.println("2");
tone(pinBuzzer, 400, 500);
delay(200);
Serial.println("1");
tone(pinBuzzer, 500, 500);
delay(200);
tone(pinBuzzer, 600, 500);
delay(500);
tone(pinBuzzer, 500, 500);
delay(200);
tone(pinBuzzer, 600, 500);
delay(300);
// on éclaire les 3 led rouges en façade
digitalWrite(ledB1, HIGH);
digitalWrite(ledB2, HIGH);
digitalWrite(ledB3, HIGH);
delay(1000);
// on éclaire les 2 led vertes en façade
digitalWrite(ledGauche, HIGH);
digitalWrite(ledDroite, HIGH);
myservo1.attach(2);// le servomoteur myservo1 est relie a la broche 2
// le servo remonte les cibles puis redescend
myservo1.write(pos90);
Serial.println("pos90");
delay(1000);
myservo1.write(pos0);
Serial.println("pos0");
delay(1000);
}
void loop()
{
gameBentoGhost(); //Fonction de la partie de jeu
scoreFinal(); //Fonction permettant l'affichage du score de la partie
}
//La partie de jeu
void gameBentoGhost()
{
while (tpsEnCours < tpsPartie) // tant que le temps en cours est inférieur au temps total de la partie
{
tpsEnCours = millis(); // on associe la variable tpsEnCours avec la fonction millis qui compte le temps dès le lancement de l'arduino
cibleBoutServo(); // on appel la fonction cibleBoutServo qui gère le comportement des cibles, des microrupteurs et du servomoteur
Serial.println(score); //pour controller que tout se passe bien dans le moniteur série au niveau du score
Serial.println(tpsEnCours);//pour controller que tout se passe bien dans le moniteur série au niveau du temps
if (millis() > 59000) // à 5 seconde de la fin de la partie
{
myservo1.detach(); // on détache le servomoteur pour qu'il ne relève plus les cibles et accessoirement ils se mettait à trembler un peu à ce moment là
// petits effets sons et lumière de fin de partie ;-)
tone(pinBuzzer, 300, 500);
digitalWrite(ledB1, LOW);
digitalWrite(ledB2, LOW);
digitalWrite(ledB3, LOW);
delay(200);
tone(pinBuzzer, 600, 500);
digitalWrite(ledB1, HIGH);
digitalWrite(ledB2, HIGH);
digitalWrite(ledB3, HIGH);
delay(200);
tone(pinBuzzer, 300, 500);
digitalWrite(ledB1, LOW);
digitalWrite(ledB2, LOW);
digitalWrite(ledB3, LOW);
delay(200);
tone(pinBuzzer, 600, 500);
delay(200);
tone(pinBuzzer, 300, 500);
if (tpsEnCours >= tpsPartie) // si le temps en cours est égal ou supérieur à la partie
{
finalRing(); // petits effets sons et lumière
finalRing();
finalRing();
digitalWrite(ledGauche, LOW);
digitalWrite(ledDroite, LOW);
finalRing();
finalRing();
finalRing();
digitalWrite(ledGauche, HIGH);
digitalWrite(ledDroite, HIGH);
finalRing();
finalRing();
finalRing();
digitalWrite(ledGauche, LOW);
digitalWrite(ledDroite, LOW);
finalRing();
finalRing();
finalRing();
digitalWrite(ledGauche, HIGH);
digitalWrite(ledDroite, HIGH);
finalRing();
finalRing();
finalRing();
digitalWrite(ledGauche, LOW);
digitalWrite(ledDroite, LOW);
Serial.println(score);
Serial.println(tpsEnCours);
}
}
}
}
//la fonction cibleBoutServo gère le comportement des cibles, des microrupteurs et du servomoteur
void cibleBoutServo()
{
int valBoutB1 = digitalRead(boutB1); //on déclare que la variable valBoutB1 prend la valeur d'état du microrupteur qu'on lit sur boutB1
digitalWrite(ledB1, !valBoutB1); // on demande que l'état de la led soit l'inverse de celle du microrupteur
// quand la cible actionne le microrupteur la led s'éteint
int valBoutB2 = digitalRead(boutB2);//on déclare que la variable valBoutB2 prend la valeur d'état du microrupteur qu'on lit sur boutB2
digitalWrite(ledB2, !valBoutB2);// on demande que l'état de la led soit l'inverse de celle du microrupteur
int valBoutB3 = digitalRead(boutB3);//on déclare que la variable valBoutB2 prend la valeur d'état du microrupteur qu'on lit sur boutB2
digitalWrite(ledB3, !valBoutB3);// on demande que l'état de la led soit l'inverse de celle du microrupteur
if (valBoutB1 == HIGH)
{
if (valBoutB2 == HIGH)
{
if (valBoutB3 == HIGH) //si toutes les cibles sont tombées et de fait les 3 microrupteurs actionnés
{ score = score + 3; // on totalise 3 points pour le score final
myservo1.write(pos90); // et le servo remonte les 3 cibles
Serial.println("pos90");
delay(1000);
myservo1.write(pos0);
Serial.println("pos0");
delay(1000);
ledRing(); // et le ringled fait un tour en vert
}
}
}
}
void ledRing() //fonction led ring (récup biblio Adafruit) utililisé quand 3 cibles sont touchées le RED est vert en fait et le GREEN est rouge ;-)
{
FastLED.setMaxPowerInVoltsAndMilliamps(5, 10); // reglage de la puissance des led du Ring
FastLED.addLeds<WS2811, DATA_PIN, RGB>(leds, NUM_LEDS);
for (int redLed = 0; redLed < NUM_LEDS; redLed = redLed + 1) {
// Turn our current led on to white, then show the leds
leds[redLed] = CRGB::Red;
// Show the leds (only one of which is set to white, from above)
FastLED.show();
// Wait a little bit
delay(50);
leds[redLed] = CRGB::Black;
leds[11] = CRGB::Black;
FastLED.show();
}
}
void finalRing() // même fonction que la précédente sauf que l'anneau s'éclaire en GREEN (donc rouge) pour la fin de partie
{
FastLED.setMaxPowerInVoltsAndMilliamps(5, 10); // reglage de la puissance des led du Ring
FastLED.addLeds<WS2811, DATA_PIN, RGB>(leds, NUM_LEDS);
for (int redLed = 0; redLed < NUM_LEDS; redLed = redLed + 1) {
// Turn our current led on to white, then show the leds
leds[redLed] = CRGB::Green;
// Show the leds (only one of which is set to white, from above)
FastLED.show();
// Wait a little bit
delay(50);
leds[redLed] = CRGB::Black;
leds[11] = CRGB::Black;
FastLED.show();
}
}
void scoreRing() // meme fonction que la précédente en BLEUE qui pour le coup est bleu, utilisé avant affichage du score final
{
// Move a single blue led
FastLED.setMaxPowerInVoltsAndMilliamps(5, 10); // reglage de la puissance des led du Ring
FastLED.addLeds<WS2811, DATA_PIN, RGB>(leds, NUM_LEDS);
for (int blueLed = 0; blueLed < NUM_LEDS; blueLed = blueLed + 1) {
// Turn our current led on to white, then show the leds
leds[blueLed] = CRGB::Blue;
leds[11] = CRGB::Black;
// Show the leds (only one of which is set to white, from above)
FastLED.show();
// Wait a little bit
delay(300);
// Turn our current led back to black for the next loop around
leds[blueLed] = CRGB::Black;
}
}
// tiré d'un exemble de ScrolText d'adafruit, il a fallu changer
//tous les display par ecranOLED pour que ca fonctionne et jouer avec les positions de curseur pour le texte
//un lien qui m'a beaucoup aidé pour l'écran https://passionelectronique.fr/ecran-oled-i2c-arduino/
void scoreFinal()
{
scoreRing();
ecranOLED.clearDisplay();
ecranOLED.setTextSize(3); // Draw 2X-scale text
ecranOLED.setTextColor(SSD1306_WHITE);
ecranOLED.setCursor(38, 5); // ici on joue avec les axes x et y pour positionner le texte de la ligne suivante
ecranOLED.println(F("SCORE")); // le texte que l'on souhaite voir apparaitre à l'écran
ecranOLED.setCursor(73, 33); // ici on joue avec les axes x et y pour positionner le texte de la ligne suivante
ecranOLED.println(score); // l'affichage de la valeur de notre résutat de partie
//ecranOLED.println(score);
ecranOLED.display(); // Show initial text
delay(100);
// Scroll in various directions, pausing in-between:
ecranOLED.startscrollright(0x00, 0x0F);
delay(2000);
ecranOLED.stopscroll();
delay(1000);
ecranOLED.startscrollleft(0x00, 0x0F);
delay(2000);
ecranOLED.stopscroll();
delay(1000);
ecranOLED.startscrolldiagright(0x00, 0x07);
delay(2000);
ecranOLED.startscrolldiagleft(0x00, 0x07);
delay(2000);
ecranOLED.stopscroll();
delay(7000); // Ici on peut changer le temps d'affichage du résultat de la partie
software_Reboot(); // et là on REBOOT
}
void imageBentoGhost()
//// fonction permettent l'affichage d'une image le lien pour générer le code https://javl.github.io/image2cpp/?pseSrc=pgEcranOledArduino
{
if (!ecranOLED.begin(SSD1306_SWITCHCAPVCC, adresseI2CecranOLED))
while (1); // Arrêt du programme (boucle infinie) en cas d'échec de l'initialisation
// Affichage d'une image au centre de l'écran
ecranOLED.clearDisplay(); // Effaçage de la mémoire tampon de l'écran OLED
ecranOLED.drawBitmap(
(ecranOLED.width() - largeurDeLimage ) / 2, // Position de l'extrême "gauche" de l'image (pour centrage écran, ici)
(ecranOLED.height() - hauteurDeLimage) / 2, // Position de l'extrême "haute" de l'image (pour centrage écran, ici)
epd_bitmap_BentoGhost,
largeurDeLimage,
hauteurDeLimage,
WHITE); // "couleur" de l'image
ecranOLED.display(); // Transfert de la mémoire tampon à l'écran OLED, pour affichage
}
void software_Reboot() // fonction permettant de redémarer l'arduino en passant par le logiciel
{
wdt_enable(WDTO_15MS);
while (1)
{
}
}
Vous avez entré un nom de page invalide, avec un ou plusieurs caractères suivants :
< > @ ~ : * € £ ` + = / \ | [ ] { } ; ? #