Outils pour utilisateurs

Outils du site


fetitfilou

Ceci est une ancienne révision du document !


Table des matières

Fetit Filou

A la demande de Buz, création d'un petit filou géant, avec interaction.

  • détection de personne devant le Filou
  • faire bouger les yeux
  • faire de la lumière
  • lancer une interjection de Buz

fabrication

structure bois de recup format Filou en 3D Arduino détection par capteur ultrason SR04 2 servos

bruit et Lumière en attente

code

#include <Servo.h> Servo eye1; Servo eye2;

int distance = 200; distance en mm de detection du SR04 int duree = 30; durée de fonctionnement de l'animation

const byte POTDISPIN = 0; broche analogique du potar de distance const byte POTDELAYPIN = 1; broche analogique du delay de fonctionnement de l'animation

const byte RELAYPIN = 13; pin du relais au besoin const byte EYE1PIN = 10; broche servo Oeil1 const byte EYE2PIN = 11; broche servo Oeil1 const byte TRIGGER_PIN = 2; Broche TRIGGER const byte ECHO_PIN = 3; Broche ECHO const unsigned long MEASURE_TIMEOUT = 25000UL; 25ms = ~8m à 340m/s/* Constantes pour le timeout */ const float SOUND_SPEED = 340.0 / 1000;/* Vitesse du son dans l'air en mm/us */

byte eye1Pos = 0; byte eye2Pos = 0;

void setup() {

// put your setup code here, to run once:
Serial.begin(115200);
randomSeed(analogRead(0));
/* Initialise les broches */
pinMode(TRIGGER_PIN, OUTPUT);
digitalWrite(TRIGGER_PIN, LOW); // La broche TRIGGER doit être à LOW au repos
pinMode(ECHO_PIN, INPUT);
Serial.println("SR04 OK");
eye1.attach(EYE1PIN);
eye2.attach(EYE2PIN);
delay(100);
eye1.write(eye1Pos);
eye2.write(eye2Pos);
Serial.println("Servo 1 et 2 ok");

}

void anime() {

switch (duree) {

case 1 : bas eye1Pos = 180 ; eye2Pos = 0 ; break; case 2 : louche 1

  eye1Pos = 90;
  eye2Pos = -90;
         break;
case 3 : // louche 2
  eye1Pos = -90  ;
  eye2Pos = 90  ;
case 4 : // haut
  eye1Pos = 0  ;
  eye2Pos = 180  ;
default : //aleatoire
  eye1Pos = int(random(180));
    eye2Pos = int(random(180));
    break;
}
eye1.write(eye1Pos);
eye2.write(eye2Pos);
delay(100);

}

renvois vrai si la distance en parametre est plus petite en mm bool declanche( int distance) { digitalWrite(TRIGGER_PIN, HIGH); delayMicroseconds(10); digitalWrite(TRIGGER_PIN, LOW); long mesure = pulseIn(ECHO_PIN, HIGH, MEASURE_TIMEOUT); delay(500); if (mesure / 2.0 * SOUND_SPEED < distance) { return true; } else { return false; } } void loop() { if (declanche(300)){ anime(); son

  // lumiere
}

}

fetitfilou.1581931788.txt.gz · Dernière modification : 2020/02/17 09:29 de gaziel