Programmation d'un robot, demande de confirmation [Basic] - Divers - Programmation
Marsh Posté le 22-02-2010 à 12:24:44
Ca a l'air pas mal, maintenant, ton robot arrivera à interpréter ton code ?
Parce que pour moi c'est un algo pas un programme.
Marsh Posté le 22-02-2010 à 23:59:10
Et bien il nous faut le tester, on a malheureusement pas encore accès au circuit imprimé :s
Marsh Posté le 23-02-2010 à 11:38:08
bien sur, mais tu as peut être un simulateur du processeur non ?
Marsh Posté le 23-02-2010 à 11:42:30
Il y a juste un truc que je pige pas.
While capteur=0
moteur_gauche=1
moteur_droit=1
wend
En aucun cas, tu n'affectes la variable capteur... Donc ça va te faire une boucle infinie.
Je me disais que capteur était en fait une fonction qui teste l'état du capteur. Mais dans ce cas, plus loin, je vois
capteur=1... donc c'est bien une variable.
Il y a un truc pas net.
Marsh Posté le 25-02-2010 à 15:47:57
Et bien c'est l'information qu'envoi le capteur au PIC : quand il y a un rebord, il ne capte plus donc passe à 0.
Marsh Posté le 25-02-2010 à 17:49:28
c'est bien ce que je pensais donc quand tu fais :
capteur=1, c'est un non-sens.
Marsh Posté le 26-02-2010 à 00:21:38
Donc quand le capteur ne "capte" plus, il est sur position 1 ?
Marsh Posté le 26-02-2010 à 14:03:30
C'est pas ça le problème, c'est qu'il faut différencier la comparaison de l'affectation.
Quand tu dis capteur=1, cela veut dire que tu forces le capteur à capter justement. En programmation cela voudrait dire que tu forces une valeur à une fonction et ça va joliment planter.
Quand tu dis si capteur=1, là tu fais un test, une comparaison et cela est valable.
Marsh Posté le 26-02-2010 à 14:17:25
Juste pour info, tu peux programmer un pic en basic?
Je ne sais pas s'il y a un compilateur basic/asm microchip...
Pourquoi ne pas programmer directement en asm dans MPlab?
Ce n'est pas plus compliqué que le programme que tu viens d'écrire et tu pourras simuler le fonctionnement sur cet IDE.
EDIT: ok ouais mikrobasic... ok ok...
J'ai regardé le programme, mais la syntaxe ne m'a pas choqué après je ne connais pas trop le langage ni ce qu'il y a derrière.
A mon avis comme le capteur est connecté sur une entrée du µc on ne peut que lire et non affecter une variable, donc on a pas le souci de lecture écriture.
Par contre, de ce que je comprends:
Ton capteur est a 0, quand il détecte la table puisqu'à ce moment les 2 moteurs tournent.
Ce n'est pas ce qu'il faut faire. Toujours penser en sécurité positive. Qu'est ce qu'il se passe si je debranche le capteur?
L'entrée sera à 0 et ton robot ira tout droit a fond les ballons.
Inverse cette condition.
Ensuite, j'ai regardé la doc du capteur, et il te renvoit une valeur analogique.
Il te faut définir un seuil a partir duquel tu passeras la variable capteur a 1.
La tu pourras venir cette variable pour lancer ou non les moteurs.
Je n'ai pas compris pourquoi il y a 3 évènements... avec la même condition et qui agissent différemment... Qu'attends tu de ce comportement?
Marsh Posté le 28-02-2010 à 16:04:57
Salut, je fais le TPE avec Dakiz et je n'ai pas compris ce que tu veux dire par ici:
garath_ a écrit : Ensuite, j'ai regardé la doc du capteur, et il te renvoit une valeur analogique. |
Marsh Posté le 28-02-2010 à 18:59:48
Alors là je ne vois vraiment plus comment définir le capteur ! :s
*Pour les 3 événements, ils sont volontaires, il s'agit de faire en sorte que le robot exécute les évènements dans l'ordre où nous les avons définis (chronologiquement).
*Si vous pouviez m'aider sur la façon dont il faut programmer le capteur je vous en serait extrêmement reconnaissant car dans l'immédiat je ne parvient pas vraiment à voir comment le définir autrement ..
Merci pour vos réponses !
Marsh Posté le 28-02-2010 à 23:12:30
ton capteur renvoi une valeur analogique, peut être une valeur par rapport à la lumière renvoyée, je ne sais pas. Mais imaginons que ce soit 8.
En dessous de 8 on considère qu'il ne capte pas et au dessus on considère qu'il capte ok ?
Tu dois déjà écrire une fonction qui va regarder la valeur renvoyé par ton capteur et définir si on considère que le capteur capte ou non quelque chose.
Ensuite, tu peux programmer tes mouvements...
Marsh Posté le 01-03-2010 à 09:05:41
Pour ton capteur moi j'ai vu ça:
If the sensor is being interfaced to your own Analog to Digital Converter (not a Phidget device),
our formulas can be modified by replacing (SensorValue) with (Vin * 200). It is important
to consider the voltage reference and input voltage range of your ADC for full accuracy and
range.
Tu as câblé ton capteur sur une entrée analogique de ton µc (qui sera donc ton convertisseur analogique numerique), donc tu vas récupérer une valeur image de la distance.
Ce capteur ne sait pas mesurer au delà de 10cm.
Ton algo ressemblera à ça:
IF (valeur_capteur< xxx)
capteur = 1
Else
capteur = 0
End if
C'est juste un algo, il faudra l'adapter. Ta valeur xxx te sera donnée quand tu auras monté ton capteur sur ton robot, cela correspondra à une valeur légèrement supérieure à la distance capteur/table.
Pour obtenir valeur_capteur, il faut regarder le registre qui correspond à la valeur de ton entrée analogique.
Renseigne toi bien sur la configuration que tu envois au PIc au tout debut de ton programme, cela te paraitra plus clair.
Pour l'instant j'ai l'impression que tu as collé des bouts de code sans comprendre vraiment comment fonctionnait un µc.
Ensuite tu précises que le robot doit effectuer les évènements dans l'ordre où vous les avez défini.
ok mais c'est pas très propre ce que tu as fait:
Code :
|
Après pour moi, ceci est juste un algo, il faut l'adapter à ton langage. Mais le principe est là. Attention ceci n'est pas ton programme définitif, il te faudra l'adapter, c'est un exemple de principe de fonctionnement.
Pense bien à mon histoire de sécurité positive, la variable capteur doit valoir 1 quand tout va bien, comme ça si le capteur déconne ou est débranché, il renverra 0.
Ah ouais et vérifies ton branchement de ton capteur, là j'ai l'impression que tu balances du +5V directement sur ton entrée ana...
Tu trouveras pleins d'exemples pour brancher un capteur ana sur une entree de pic sur le net.
Pour moi les meilleurs cours en francais sont ceux de Bigonoff : http://www.abcelectronique.com/big [...] &fic=part1
Marsh Posté le 01-03-2010 à 21:26:17
Merci beaucoup !
Garath_ : ça m'aide énormément, tu assures ! Je te tiens au courant si je m'en sors (où non ^^) !
Merci encore !
Marsh Posté le 18-02-2010 à 14:10:50
Bonjour à tous !
Donc voilà, je vous explique mon problème (qui soit dit en passant, n'en est pas réellement un) : Étant en 1ère S-SI, moi ainsi que deux camarades devons réaliser un projet dans le cadre du Travail Personnel Encadré (TPE), projet à présenter le jour du BAC.
Nous désirons réaliser un robot qui se déplacerai sur une table sans tomber de celle-ci, à l'aide d'un capteur infrarouge et de deux roues motrices (+ une roue folle).
Le robot est donc composé de deux roues motrices indépendantes (donc chacune ayant un moteur), une roue folle, un capteur infrarouge, et d'un micro contrôleur de modèle PIC 16F628.
Voilà la référence des composants si il y a besoin :
-Roues : http://www.gotronic.fr/catalog/rob [...] =roues.htm Roues GMPW pour moteurs série GM
-Moteurs : http://www.gotronic.fr/catalog/rob [...] .htm#25340 Motoréducteurs Solarbotics série GM
-Capteur Infrarouge : http://www.gotronic.fr/catalog/mic [...] pteurs.htm Capteur IR à réflexion 1103
*Voilà le schéma électrique :
http://img705.imageshack.us/img705 [...] tcopie.jpg (Excusez l'aspect brouillon )
*Et voilà donc le programme du robot en Basic, programmé avec MikroBasic :
http://img411.imageshack.us/img411/2209/programme.jpg
(on ne voit juste pas le "end" à la fin ^^)
On voudrait que le robot soit initialement placé au coin inférieur droit d'une table (table assez grande ^^), dès que le robot arrivera au bout de la table, le capteur enverra l'information au PIC, le moteur gauche s'arrêtera pour effectuer une rotation, ensuite le robot reprendra sa route, dès que celui-ci arrivera à l'autre bout de la table, le capteur enverra l'information au PIC et le moteur droit s'arrêtera ...etc et ainsi de suite !
Donc voilà, nous aimerions avoir votre avis pour ce qui est du programme, si vous pensez qu'il peut fonctionner avec nos critères ^^ !
Merci d'avance !