Mini code : Servomoteur // Gamebuino Meta

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 );
}
1 Like