Voici le mini-code permettant d’utiliser très simplement le servomoteur fourni dans le kit d’accessoires Gamebuino.
Vous êtes libres d’utiliser ce code à votre convenance et de le modifier à volonté.
/*Servomotor sample code for Gamebuino Meta
*
* Code by Tom from Gamebuino team
*
*Version 1.0
*03/06/2021
*/
#include <Gamebuino-Meta.h>
#include <Servo.h> // Librairie Arduino pour utilisation de servomoteurs
Servo motor; // declaration d'un nouveau servomoteur appellé "motor"
char *direction; // declaration d'une string utilisée pour noter la "direction"
void setup() {
// put your setup code here, to run once:
gb.begin();
motor.attach(10); // définition du port de contrôle du moteur sur le pin digital 10
motor.write(10); // démarrage du moteur à la position 10°
direction = "RIGHT"; // définition de la position initiale comme étant la position droite
}
void loop(){
// put your main code here, to run repeatedly:
gb.waitForUpdate();
// Changement de la position du moteur en fonction de la touche utilisée
if (gb.buttons.pressed(BUTTON_RIGHT)){
motor.write(10); // angle à 10°
dir = "RIGHT";
}
if (gb.buttons.pressed(BUTTON_UP)){
motor.write(90); // angle à 90°
dir = "UP";
}
if (gb.buttons.pressed(BUTTON_LEFT)){
motor.write(170); // angle à 170°
dir = "LEFT";
}
direction_display();
}
void direction_display(){
gb.display.clear();
gb.display.setColor(RED);
// Affichage des flèches directionnelles avec des triangles dont on change la couleur en fonction de la position actuelle
if(dir == "UP"){
gb.display.setColor(RED);
gb.display.fillTriangle(gb.display.width()/2 - 5, 20, gb.display.width()/2, 10, gb.display.width()/2 + 5, 20);
}
else{
gb.display.setColor(WHITE);
gb.display.drawTriangle(gb.display.width()/2 - 5, 20, gb.display.width()/2, 10, gb.display.width()/2 + 5, 20);
}
if(dir == "RIGHT"){
gb.display.setColor(RED);
gb.display.fillTriangle(gb.display.width()/2 + 25, gb.display.height()/2, gb.display.width()/2 + 15, gb.display.height()/2 + 5, gb.display.width()/2 + 15, gb.display.height()/2 - 5);
}
else{
gb.display.setColor(WHITE);
gb.display.drawTriangle(gb.display.width()/2 + 25, gb.display.height()/2, gb.display.width()/2 + 15, gb.display.height()/2 + 5, gb.display.width()/2 + 15, gb.display.height()/2 - 5);
}
if(dir == "LEFT"){
gb.display.setColor(RED);
gb.display.fillTriangle(gb.display.width()/2 - 25, gb.display.height()/2, gb.display.width()/2 - 15, gb.display.height()/2 + 5, gb.display.width()/2 - 15, gb.display.height()/2 - 5);
}
else{
gb.display.setColor(WHITE);
gb.display.drawTriangle(gb.display.width()/2 - 25, gb.display.height()/2, gb.display.width()/2 - 15, gb.display.height()/2 + 5, gb.display.width()/2 - 15, gb.display.height()/2 - 5);
}
// Affichage de la direction actuelle
gb.display.setColor(WHITE);
gb.display.printf( "%s", dir );
}