
Robot incendie
#21
Posté 23 avril 2018 - 09:51
Par ailleurs, tu peux vérifier que vaut ta distance : fais un "Serial.println(distance)" après ton calcul. Il est possible que tu fasses en fait le calcul duree * 0, parce que tu divises 340 (un entier) par une très grande valeur (entière). Le résultat de la division est un entier donc forcément 0, 1 ...
La solution est par exemple de transformer 340 en flottant : 340.0
#22
Posté 23 avril 2018 - 10:01
Ok merci.
J'ai fait les modification, ce qui donne ça
#define trigPin 12 //Trig #define echoPin 11 //Echo void setup() { Serial.begin (9600); pinMode(trigPin, OUTPUT); //On défini Trig comme une sortie pinMode(echoPin, INPUT); //On défini Echo comme une entrée } void loop() { long duree, distance; digitalWrite(trigPin, LOW); delayMicroseconds(2); digitalWrite(trigPin, HIGH); delayMicroseconds(10); //Trig envois pendant 10ms digitalWrite(trigPin, LOW); // On calcul le temps pour l'aller retour du signal duree = pulseIn(echoPin, HIGH); distance = duree*340.0/(2*10000); Serial.println(distance); } else { Serial.print(distance); Serial.print(" cm "); } delay(100); }
Mais j'ai une erreur sur le else. Le logiciel me dit "exit status 1
expected unqualified-id before 'else' ". Je ne comprends pas et je ne peux pas y regarder avant demain
#24
Posté 23 avril 2018 - 10:40
Il manque un if avant le else c'est pour ça que le compilateur râle et en plus t'es en dehors du loop sans fonction du coup il ne comprends pas doublement.
TOn code devrai ressembler à quelque chose du genre
#define trigPin 12 //Trig #define echoPin 11 //Echo void setup() { Serial.begin (9600); pinMode(trigPin, OUTPUT); //On défini Trig comme une sortie pinMode(echoPin, INPUT); //On défini Echo comme une entrée } void loop() { long duree, distance; digitalWrite(trigPin, LOW); delayMicroseconds(2); digitalWrite(trigPin, HIGH); delayMicroseconds(10); //Trig envois pendant 10ms digitalWrite(trigPin, LOW); // On calcul le temps pour l'aller retour du signal duree = pulseIn(echoPin, HIGH); distance = duree*340.0/(2*10000); Serial.println(distance); if (distance <= 10) // si distance est inferieur ou égal à 10 faire quelque chose. Par exemple éviter l'obstacle ou le déplacer. { //faire quelque chose } else { Serial.print(distance); Serial.print(" cm "); } delay(100); }
La fonction pulseIn elle existe ou c'est toi qui l'a crée ? Et d'ailleurs vaut mieux utiliser println qui fait un saut à la ligne ce qui rends les données plus lisibles.
Je crois que tu devrai voir les bases du C parce que tu n'as pas l'air de les avoir. (Je ne veux pas être méchant du tout et je m'excuse si le je l'ai déjà dis. Je ne sais plus. Je sais que j'avais dis ça sur un topic qu'il ressemblait à celui là mais je ne sais pas si c'est celui-là)
Il faut toujours viser la lune, car même en cas d’échec, on atterrit dans les étoiles
#25
Posté 24 avril 2018 - 07:14
Il manque un if avant le else c'est pour ça que le compilateur râle et en plus t'es en dehors du loop sans fonction du coup il ne comprends pas doublement.
D'accord, merci beaucoup
vaut mieux utiliser println qui fait un saut à la ligne ce qui rends les données plus lisibles.
Je prends en note, je vais modifier de ce pas.
Je crois que tu devrai voir les bases du C parce que tu n'as pas l'air de les avoir. (Je ne veux pas être méchant du tout et je m'excuse si le je l'ai déjà dis.)
C'est sûr que je suis débutante. Je n'ai que ce que l'on a vu en cours, c'est à dire rien du tout (ça se limite à faire clignoter une LED d'abord simplement pendant 0.5s, puis pour faire un SOS). Pour le reste, je me base beaucoup sur Internet
Non ce n'est pas de la méchanceté, c'est du réalisme. De plus, le fait de le dire aide à garder les pieds sur terre. Donc pas de soucis
#26
Posté 24 avril 2018 - 11:52
Je sais mais à l'écrit c'est toujours très difficile de retranscrire quelque chose et c'est facile de mal interpréter. Le problème c'est que du coup il te manques beaucoup de concept. Par exemple la plupart des questions que t'as posé tu ne les aurai pas posé si t'avais les bases et du coup tu pourrai poser des questions plus technique et avancer plus vite. Ton projet est très ambitieux et t'as pas froid aux yeux c'est un avantage. pour ce qui est du C regarde le tuto de M@téo sur openclassroom c'est par la que j'ai commencé et franchement il vaut le coup. Ne regarde que la première partie la seconde c'est juste pour faire du graphisme et tu ne l'utilisera pas en robotique. Essaye de bien comprendre les notions de pointeurs c'est ce qui va te perdre le plus. Après je ne sais pas si c'est ici ou pas que j'ai donné des exos mais je peux t'en donner en fonction de tes lacunes et même faire la correction avec une explication. Si t'as une question ne la pose pas sur le forum d'openclassroom ils ne sont pas toujours très sympa avec les débutants pose la plutôt ici dans la section programmation. Tu peux aussi me poser des questions en PV j'y répondrai. Si tu veux on peut même faire 2/3 heures par semaine par cam sur fb ou skype pour t'expliquer ce que tu n'a pas compris.
PS: Tu habites où ? Si tu n'habite pas trop loin de chez moi je peux peux-être t'aider en direct.
Il faut toujours viser la lune, car même en cas d’échec, on atterrit dans les étoiles
#27
Posté 24 avril 2018 - 02:10
Je sais mais à l'écrit c'est toujours très difficile de retranscrire quelque chose et c'est facile de mal interpréter. Le problème c'est que du coup il te manques beaucoup de concept. Par exemple la plupart des questions que t'as posé tu ne les aurai pas posé si t'avais les bases et du coup tu pourrai poser des questions plus technique et avancer plus vite. Ton projet est très ambitieux et t'as pas froid aux yeux c'est un avantage. pour ce qui est du C regarde le tuto de M@téo sur openclassroom c'est par la que j'ai commencé et franchement il vaut le coup. Ne regarde que la première partie la seconde c'est juste pour faire du graphisme et tu ne l'utilisera pas en robotique. Essaye de bien comprendre les notions de pointeurs c'est ce qui va te perdre le plus. Après je ne sais pas si c'est ici ou pas que j'ai donné des exos mais je peux t'en donner en fonction de tes lacunes et même faire la correction avec une explication. Si t'as une question ne la pose pas sur le forum d'openclassroom ils ne sont pas toujours très sympa avec les débutants pose la plutôt ici dans la section programmation. Tu peux aussi me poser des questions en PV j'y répondrai. Si tu veux on peut même faire 2/3 heures par semaine par cam sur fb ou skype pour t'expliquer ce que tu n'a pas compris.
PS: Tu habites où ? Si tu n'habite pas trop loin de chez moi je peux peux-être t'aider en direct.
Euuuh ... merci de ne pas diverger du sujet initial : le projet de robot-incendie et le code correspondant. Je pense que Manon est tout à fait capable de poser les bonnes questions et d'essayer par elle-même.
Pour ce qui est de pulseIn, une simple recherche dans ton moteur de recherche préféré t'aurait montré qu'il s'agit d'une fonction de l'API d'arduino.
Chacun est libre d'aider les autres, c'est le but du forum, mais attention à ne pas donner de mauvais conseils. S'engager à donner 2-3h d'aide par semaine, c'est loin d'être un petit service.
Par ailleurs, le but du forum est de partager les connaissances et les progrès : chaque question posée et répondue en public bénéficiera également aux personnes qui auront le problème plus tard.
En conséquence, ce genre de propositions est à éviter (mais tu peux, avec l'accord de Mike, proposer tes services à ceux qui en auraient besoin dans la section Annonces du forum).
- Forthman aime ceci
#28
Posté 24 avril 2018 - 03:01
Alors Désolé si j'ai dérivé du sujet initial. Je pensais que la programmation était un des sujets et donc ses bases aussi.
Pour de la proposition ça partait d'une bonne intention si maintenant tu pense que ça peut nuire au bon fonctionnement du forum j'en suis désolé.
Pour la fonction oui effectivement mais quand j'ai répondu j'étais trop crevé pour penser à faire une recherche d’où ma question.
Et ou est-ce que j'ai donné un mauvais conseil ?
PS: S ma proposition dérange je la supprimerai je voulais juste aider parce que je sais que c'est très difficile quand on est débutant.
Il faut toujours viser la lune, car même en cas d’échec, on atterrit dans les étoiles
#32
Posté 30 avril 2018 - 08:45
Rien à faire, le code ne marche pas. La date limite approche à très très grands pas, et je ne sais plus dans quel sens prendre le prendre.
#define trigPin 7 //Trig #define echoPin 6 //Echo void setup() { Serial.begin (9600); pinMode(trigPin, OUTPUT); //On défini Trig comme une sortie pinMode(echoPin, INPUT); //On défini Echo comme une entrée } void loop() { long duree, distance; digitalWrite(trigPin, LOW); delayMicroseconds(2); digitalWrite(trigPin, HIGH); delayMicroseconds(10); //Trig envois pendant 10ms digitalWrite(trigPin, LOW); // On calcul le temps pour l'aller retour du signal duree = pulseIn(echoPin, HIGH); distance = duree*340.0/(2*10000); Serial.print(distance); if (distance <= 10) // si distance est inférieure ou égale à 10 faire quelque chose { Serial.println("Attention !"); } else { Serial.print(distance); Serial.print(" cm"); } delay(100); }
J'ai changé les pin pour voir si c'était là le problème, mais non. J'ai vérifié plusieurs fois si c'était un câble inversé avec un autre, mais c'est pas ça non plus. Peut-être juste que ma tête revient pas à la carte ?
Non, plus sérieusement, je suis vraiment perdue. J'ai écrit un code plus complexe que ça et il semble nickel (pas encore testé sur le terrain, pour ça il faudrait que le capteur fonctionne ... ) ...
Répondre à ce sujet

1 utilisateur(s) li(sen)t ce sujet
0 members, 1 guests, 0 anonymous users