} acc_data_xy;
public:
Accelerometer()
:
ra_x(RA_SIZE), ra_y(RA_SIZE) {};
~Accelerometer() {};
void
enable(void);
void
getLogHeader(void);
void readAcceleration(unsigned long
float
len_xy() const;
float
dir_xy() const;
int
x_avg(void) const;
int
y_avg(void) const;
ss_xy_avg(void) const;
long
float
dir_xy_avg(void) const;
private:
acc_data_xy last;
RunningAverage<int>
ra_x;
RunningAverage<int>
ra_y;
};
Accelerometer lsm303;
boolean in_contact;
// activé lorsque l'accéléromètre détecte un contact avec le robot opposé
// pré-déclaration de setForwardSpeed - vitesse en marche avant
void
setForwardSpeed(ForwardSpeed speed);
void
setup()
{
// Initialise la bibliothèque Wire et joindre le bus I2C comme maître
Wire.begin();
// Initialiser le LSM303
lsm303.init();
lsm303.enable();
#ifdef LOG_SERIAL
Serial.begin(9600);
lsm303.getLogHeader();
#endif
randomSeed((unsigned
int) millis());
// Dé-commentez les ligne pour corriger le sens de rotation des moteurs (si nécessaire)
//motors.flipLeftMotor(true);
//motors.flipRightMotor(true);
pinMode(LED, HIGH);
buzzer.playMode(PLAY_AUTOMATIC);
waitForButtonAndCountDown(false);
}
void waitForButtonAndCountDown(bool
{
#ifdef LOG_SERIAL
Serial.print(restarting
?
"Restarting Countdown"
Serial.println();
#endif
digitalWrite(LED, HIGH);
button.waitForButton();
digitalWrite(LED, LOW);
// jouer le décompte audio
for
(int
i
=
0; i
<
3; i++)
{
delay(1000);
buzzer.playNote(NOTE_G(3), 50, 12);
}
delay(1000);
buzzer.playFromProgramSpace(sound_effect);
delay(1000);
// Réinitialiser les variables de loop()
// 1 si collision; 0 si pas de collision (ou perte de contact)
in_contact
=
false;
contact_made_time
=
0;
last_turn_time
=
millis();
// Evite les fausses détections de collision durant l'accélération initiale
_forwardSpeed
=
SearchSpeed;
full_speed_start_time
=
0;
}
void
loop()
{
if
(button.isPressed())
{
// Si le bouton est pressé, arrêter et attente une autre pression sur le bouton
motors.setSpeeds(0, 0);
button.waitForRelease();
timestamp);
restarting)
:
"Starting
Countdown");