Bonjour , je viens une seconde fois (oui car le premier topic que j'ai lancé ne m'a pas été personnellement destiné car plusieurs personnes inconnus venaient partager leurs problèmes dans mon topic alors que mon problème n'était toujours pas résolu) donc je revient ici pour vous réexpliquer mon problème et essayer de le résoudre au plus vite , bien , voici : Je suis en projet de science de l'ingénieur en terminal pour le bac , mon projet est de créer un tiroir automatique contrôlable à distance par une télécommande ou un joystick , ma partie du travail est de sécuriser ce tiroir , c'est à dire que je dois faire en sorte qu'il se stoppe lorsque j'empêcherais sa fermeture ou son ouverture avec mon doigt (un peu comme un lecteur CD sur un ordinateur) , et je dois faire cela en fonction du moteur (pas de capteur de force ou autres), seulement , bah on a pas eu de cours sur cette façon de programmer et je ne sais ABSOLUMENT PAS comment m'y prendre , si quelqu'un à une idée sur la façon de créer mon programme de sécurité je serais ravit. Voici le code pour contrôler le tiroir , mon programme de sécurité doit y être rajouté à celui-ci.
#include <boarddefs.h> // Utilisation des bibliothèques
#include <IRremote.h>
#include <IRremoteInt.h>
#include <ir_Lego_PF_BitStreamEncoder.h>
//A utiliser pour récuperer le code envoyé par la telecomande
//Création des variables
int RECV_PIN = 3; // Connectée sur l'entrée digitale 3
int DIR1_PIN = 7; // Connectée sur l'entrée digitale 7
int VIT1_PIN = 6; // Connectée sur l'entrée digitale 6
int DIR2_PIN = 4; // Connectée sur l'entrée digitale 4
int VIT2_PIN = 5; // Connectée sur l'entrée digitale 5
int BOUT1_PIN = 10; // Connectée sur l'entrée digitale 10
int BOUT2_PIN = 11; // Connectée sur l'entrée digitale 11
IRrecv irrecv(RECV_PIN); // Récéption des ondes Infrarouges
decode_results results; // Décoder ce que la télécommande envoie
void setup() // Action effectuée une seule fois
{
Serial.begin(9600); // Démarrer une liaison série avec l'ordinateur
irrecv.enableIRIn(); // Démarrer le receveur
pinMode(DIR1_PIN, OUTPUT); // Définit la broche numérique DIR1 comme sortie
pinMode(VIT1_PIN, OUTPUT); // Définit la broche numérique VIT1 comme sortie
pinMode(DIR2_PIN, OUTPUT); // Définit la broche numérique DIR2 comme sortie
pinMode(VIT2_PIN, OUTPUT); // Définit la broche numérique VIT2 comme sortie
pinMode(BOUT1_PIN, INPUT); // Définit la broche numérique BOUT1 comme entrée
pinMode(BOUT2_PIN, INPUT); // Définit la broche numérique BOUT2 comme entrée
}
void loop() // Action répétée à l'infini
{ results.value=0; // Resultat = 0
Serial.println (digitalRead (BOUT1_PIN)); // Afficher sur le moniteur série si il y a du courant sur le PIN 10
irrecv.decode(&results); // Stocker le message envoyé par la télécommande
irrecv.resume(); // Relancement de la lecture
if(results.value == 0XCC36FF5F){ // Avancer; Si le resultat de la touche de la télécommande correspond à celui indiquer
avance(1,255); // Marche avant
Serial.println("Avancer"); // Afficher dans le moniteur série "Avancer"
}
if(results.value == 0XCC1C9F5B){// Eteindre; Si le resultat de la touche de la télécommande correspond à celui indiquer
avance(0,0); // Eteint
Serial.println("Eteindre"); // Afficher dans le moniteur série "Eteindre"
}
if(results.value == 0X989D243A ){ // Reculer; Si le resultat de la touche de la télécommande correspond à celui indiquer
avance(0,255); // Reculer
Serial.println("Reculer"); // Afficher dans le moniteur série "Reculer"
}
delay(100); // Délai de 100ms
if(digitalRead(BOUT1_PIN) == 1){ // Si le bouton 1 est actionné
avance(0,0); // Eteint
}
if(digitalRead(BOUT2_PIN) == 1){ // Si le bouton 2 est actionné
avance(0,0); // Eteint
}
}
void avance(int sens, int vitesse) // Partie moteur
{
digitalWrite(DIR1_PIN, sens);
analogWrite(VIT1_PIN, vitesse);
digitalWrite(DIR2_PIN, sens);
analogWrite(VIT2_PIN, vitesse);
}