Bonjour à toutes et tous,
Débutant sur Arduino, convaincu des capacités de cette carte, je désire mettre ces capacités matériels au service de mes réflexions.
La problématique:
rendre un véhicule autonome pour des déplacement en interieur ou extérieur grâce à une une carte Arduino mega, 2 servomoteurs, et un HC-SR04
Le premier servomoteur effectue un balayage de 10 à 170° le HC-SR04 monté sur l'axe de rotation tel un balayage radar.
Si la distance mesuré est inférieur à 30cm le 2eme servomoteur (de direction) tourne à l'opposé de l'obstacle de manière proportionnelle à l'angle du servomoteur (radar) lorsque l'obstacle a été détecté ce qui rendra le déplacement moins chaotique.
Je suis à la recherche de pistes pour résoudre ma problématique car dans l'état actuel des choses je pêche par manque de compétences...
voici où j'en suis pour le moment:
Je n'arrive pas à intégrer la couche de lecture d'angle du servo1 et la partie lecture et affectation de distance lu au servo2Code:// déclaration des constantes pour les broches du HC-SR04 const byte TRIGGER_PIN = 2; //Broche Trigger const byte ECHO_PIN = 3; //Broche Echo // Déclaration de la constante de timeout HC-SR04 const unsigned long MEASUR_TIMEOUT =25000UL; //25ms=~8m à 340m/s //Déclartion de la ref de la vitesse du son dans l'air en mm/us const float SOUND_SPEED = 340.0/1000; // Appel de la lib servo #include <Servo.h> #define INCR1 1 #define INCR2 2 //Déclaration des servos, servo1 pour le radar, servo2 pour la direction Servo servo1, servo2; //Consigne de position intitial des servos int angle1 = 0; int angle2 = 0; void setup() // Initialise les broches pinMode(TRIGGER_PIN, OUTPUT); digitalWrite(TRIGGER_PIN, LOW); // La broche TRIGGER à LOW au repos pinMode(ECHO_PIN, INPUT); //Attache du servomoteur 1 à la broche 8 servo1.attach(8) //Attache du servomoteur 2 à la broche 9 servo2.attach(9) } void loop() // commande de balayage droite gauche du servo1 (radar) { for(int position = 10; position <= 170; position++) { servo1.write(position); delay(20); } for(int position = 170; position>=10; position--) { servo1.write(position); delay(20); } }
Donc toute ma problématique.
En attendant vos conseils, je vous souhaite une bonne soirée
Amicalement
-----