Go Down

Topic: Bonjour très urgent merci de votre compréhension (Read 258 times) previous topic - next topic

elias_

Bonjour, je vous demande de votre aide car cette année j'ai un projet où le but est de créer un robot capable de détecter un incendie dans une maison et d'agir. On est 5 dans le groupe et ma partie et de détecter la distance qu'il y a entre la flamme et le robot ainsi que de savoir si la source de fumée est bien du feu ou non.

Je vous expose le problème, j'ai à ma disposition un capteur de flamme et un servomoteur(le servomoteur permet au capteur de flamme qui est fixé dessus de détecter sur une zone circulaire) le capteur de flamme est de qualité moyenne voire médiocre(je n'ai pas le choix car nous avons un budget très serré) car celui-ci détecte seulement en binaire, en gros 0=pas de flamme et 1023=flamme. Il a une plage de longueur d'onde entre 720nm et 1100nm.


Or ce que je n'arrive pas à faire et de faire tourner le servomoteur (ca j'arrive mais c'est ce qui suit que je n'arrive pas) et l'arrêter lorsque le capteur de flamme à détecté la flamme.

Voici mon code
Code: [Select]

#include <Servo.h>

Servo monServomoteur;

int capt_ana = A3;

bool capteur_flamme = 1;

void setup() {
  monServomoteur.attach(9);
  pinMode(capt_ana, INPUT);
  Serial.begin(9600);
}

void loop() {
 
capteur_flamme = digitalRead(capt_ana);

  Serial.println(capteur_flamme);
 
  if(capteur_flamme = 1){

  //faite bouger le bras de 0° à 180°
  capteur_flamme = digitalRead(capt_ana);
  Serial.println(capteur_flamme);
 for(int position = 0; position <=180; position++){
  monServomoteur.write(position);
  delay(30);
 
 }


  }
else{
  monServomoteur.write(180);
     }
   
    }



Merci de votre patience

marcus_95

Bonjour,
il ne faut pas confondre X = 1 et X ==1.

J-M-L

et pour la propreté du code

les pins sont mieux en const byte plutôt qu'en int
Code: [Select]
int capt_ana = A3;

Votre PC est-il si lent que cela?
Code: [Select]
  Serial.begin(9600);utilisez 115200 voire plus... ça ne mange pas de pain...


Code: [Select]
bool capteur_flamme = 1;1 n'est pas un booléen... true serait beaucoup plus propre...

Pourquoi brancher un capteur analogique sur une pin analogique et faire un digitalRead? vous êtes sûr qu'il est analogique votre capteur? dans ce cas autant utiliser une pin numérique (même si ça va fonctionner).. et bon dieu pourquoi mettre ça dans un booléen? que retourne digitalRead()?
Code: [Select]
capteur_flamme = digitalRead(capt_ana);

cf remarque ci dessus pour le =
Code: [Select]
  if(capteur_flamme = 1){et bien sûr il vaudrait mieux utiliser HIGH que 1...ou alors vu que c'est un booléen aller jusqu'au bout de la logique et juste faire
Code: [Select]
  if(capteur_flamme){mais c'est moche


pressez ctrl-T dans l'IDE pour indenter proprement...
Hello - Please do not PM me for help,  others will benefit as well if you post your question publicly on the forums.
Bonjour Pas de messages privés SVP, postez dans le forum directement pour que ça profite à tous

Go Up