- Robot Maker
- → Contenu de Francky
Contenu de Francky
Il y a 939 élément(s) pour Francky (recherche limitée depuis 04-mai 13)
Par type de contenu
Voir pour ce membre
#32262 Ma présentation
Posté par Francky sur 12 juillet 2011 - 06:14 dans Et si vous vous présentiez?
je suis nouveau sur le forum (comme vous pouvez le voir à gauche xD) donc je me présente un petit peu
J'ai 17 ans
Je suis actuellement lycéen (je viens de finir ma première S-Si)
Je ne sais pas vraiment dans quel domaine j'aimerai travailler plus tard (j'ai une idée vague mais ça s'arrête là xD)
J'aime beaucoup de choses et ça prendrait trop de temps de toutes les énumérer ! Mais bon par rapport au forum, comme vous pouvez vous en doutez je m'intéresse beaucoup à la robotique ! ^^
Je ne possède pas encore de robot, du moins pas comme je l'entends (une voiture à moustache ne rentre à mon avis pas vraiment dans cette catégorie XD. Mais bon c'est en cours de changement (du moins je l'espère... "--))
Je n'ai pas encore participé à un concours de robotique.
Ce que j'aime surtout dans la robotique c'est le fait qu'une chose créée par l'homme prenne "vie", qu'elle se déplace de manière autonome, qu'elle parvienne à faire des choses. Je trouve ça fabuleux ! Et surtout ça m'a donné envie moi aussi de m'y mettre !
Ce que je n'aime pas dans la robotique c'est surtout le prix ça limite un peu :/ mais bon comme on dit : "quand on aime on ne compte pas" xD
Pas vraiment de film ni de roman que je préfère juste des que j'aime ^^
Je pense que d'ici quelques années le domaine de la robotique sera plus étendue et surtout plus "commun" qu'aujourd'hui. Il va donc se développer d'ici peu (du moins je l'espère).
Merci d'avoir lu ma présentation, si vous avez des questions n'hésitez pas !
(Non non je n'ai pas du tout suivi le format conseillé ♪ *siffle*)
#32263 Simulation d'un programme asm
Posté par Francky sur 12 juillet 2011 - 06:51 dans Programmation
Je débute en robotique et je me suis lancé dans la fabrication d'un robot programmable.
Pour la programmation, j'ai décidé d'utiliser un microcontrolleur (16f84A). J'ai donc dû choisir et apprendre un langage de programmation, ce que j'ai essayé de faire en lisant le cours de Bigonoff sur l'asm (sous mp lab). Cependant, après la création de mon programme (et sa compilation réussie ) je doute de son bon fonctionnement ! xD J'ai donc envie de le simuler (quelque chose de simple, juste de savoir quand les sorties du pic sont à 1 ou à 0).
J'ai essayé de le faire sous mp lab (comme dans le cours)mais je ne trouve pas ça génial :x (c'est très très long). De plus, dans une simulation d'un de mes anciens programmes le chronogramme m'affichait des choses aberrantes ! Tout d'abord malgré le fait que toutes mes sorties aient subies le "même traitement" une seule (RB2 de mémoire) se mettaient au niveau haut toute seule. Une fois j'ai mis pause dans la simulation, et quand je l'ai retirée toutes les sorties avaient changé d'état alors que je ne l'avais pas demandé dans le programme :x Enfin autant dire que je n'ai pas vraiment confiance dans mb lab.
Malgré mes recherches sur internet je n'ai pas trouvé de moyens de simulation par logiciel gratuit. je n'ai pas non plus trouvé un moyen plus simple et peut être plus sûr de simuler sous mp lab...
Donc je m'en remet à vous, en espérant que vous ayez une solution dans votre sac ^^
Merci d'avance pour toutes vos réponses ! (je peux mettre mon "programme" si quelqu'un veut y jeter un oeil)
#32286 Simulation d'un programme asm
Posté par Francky sur 14 juillet 2011 - 05:46 dans Programmation
Faute de simulation j'ai terminé mon robot aujourd'hui et je lui ai mis mon pic sauf que quand j'ai allumé, rien ne s'est passé. Donc je pense avoir un énorme soucis au niveau de mon programme "^^
#32287 Simulation d'un programme asm
Posté par Francky sur 14 juillet 2011 - 05:54 dans Programmation
Une fois j'avais vu que l'on pouvait programmé les microcontrolleurs avec une sorte d'"assemblage de schémas". Je me demande si ça ne serait pas plus simple ? Cependant je n'ai pas retrouvé le site sur lequel j'avais vu ça ! :s
Et je me demandais, quel genre d'erreur pourrait faire en sorte que rien dans le programme ne fonctionne (malgré une compilation réussie "^^) ?
#32299 Simulation d'un programme asm
Posté par Francky sur 15 juillet 2011 - 02:33 dans Programmation
J'ai fabriqué un "testeur" de microcontrolleurs (12 dels sur les sorties programmables) et j'ai essayé de mettre un des programmes de bigonoff dans mon pic pour voir s'il marchait. Ca a fonctionné sans problème, cela veut donc dire que je suis une brelle en programmation !
Donc si vous avez des conseils n'hésitez pas !
Merci d'avance
#32303 Simulation d'un programme asm
Posté par Francky sur 15 juillet 2011 - 03:56 dans Programmation
merci (pour les lectures et la réponse, on se sent moins seul xD)
#32329 Problème probable sur mon câblage
Posté par Francky sur 17 juillet 2011 - 10:54 dans Electronique
Je commence un nouveau sujet ici car j'ai un problème. En effet, j'ai tenté l'aventure de la robotique en voulant faire mon premier robot (voir ma photo de profil ). Cependant, lorsque je l'allume rien ne se passe :x. J'ai donc pensé à un problème au niveau du programme (que j'ai d'ailleurs réussi à corriger). Cependant, mon robot s'obstine toujours à ne rien vouloir faire (oh le vilain !! è_é).
J'ai donc sans doute un problème au niveau de mon câblage. J'ai essayé de regarder s'il y avait des courts circuits mais je n'en ai pas vu. Il doit donc y avoir un problème au niveau du voltage ou de l'ampérage.
Etant débutant j'implore donc votre aide
Ci joint, le schéma de mon montage en 2 parties (désolé il y a certaines choses qui ne sont certainement pas normalisés : quartz et diode émettrice infrarouge)
PS : j'aimerai remplacer ma pile de 9V par un accumulateur (8.4V). Cela posera t'il un problème ? (il vaut mieux que je fasse mes changements en prenant en compte ce détail ? ou cela n'a pas une très grande importance ?)
Merci d'avance !
#32335 Problème probable sur mon câblage
Posté par Francky sur 17 juillet 2011 - 12:58 dans Electronique
Euh juste je viens de me rendre compte que j'ai oublié de mettre les références de mes composants "^^ sorry xD Donc voià :
- L293D http://www.conrad.fr/ci_commande_moteur_4_voies_l293d_p_48674_48771_855671_209086_FAS
(pour le montage : http://lordikc.free.fr/wordpress/?p=17)
- quartz 4 MHz :
http://www.conrad.fr/quartz_hc49_serie_crystal_p_48674_48871_658919_981198_FAS
- 16F84A
http://www.conrad.fr/microcontroleurs_pic_p_48674_48866_603288_252746#
- led infrarouge :
http://www.conrad.fr/led_infrarouge_p_48674_49477_608289_978657_FAS#
- photo transistor :
http://www.conrad.fr/phototransistor_p_48674_49472_607854_970844_FAS#
- transistor bipolaire :
http://www.conrad.fr/transistor_bipolaire_p_48674_48893_1034531_1034162_FAS#
- LED jaune :
http://www1.produktinfo.conrad.com/datenblaetter/125000-149999/146099-da-01-en-LED_5MM_GB_LOW_CURRENT.pdf
- condensateur :
http://www1.produktinfo.conrad.com/datenblaetter/450000-474999/451681-da-01-en-Keramik_Scheibenkondensator_500V.pdf
Voilà pour les références !
#32340 Problème probable sur mon câblage
Posté par Francky sur 17 juillet 2011 - 04:35 dans Electronique
Euh ok pour le crayon de papier j'avoue c'est pas top mais bon je peux pas vraiment faire autrement xD
Ok mais à partir d'une pile de 9V, si je veux du 5 V c'est pas super simple surtout que dans tous les cas l'ampérage sera limité. Donc je ne vois pas trop comment faire pour ne pas griller mes composants tout en leur laissant assez d'ampères pour fonctionner ! :x (d'ailleurs mes composants ne sont pas grillés ou en tout cas le 16f84a ne l'est pas : je l'ai testé avec des DEL)
Par contre les entrées logiques de mes L293D ne sont pas celles qui sont gérées par les pattes de mon microcontrolleur ?
Il faut que je mette des transistors pour envoyer du 4.5 V sur les entrées (en commutateur, comme j'ai fait avec les DEL) ?
(sinon j'ai compris les 4 pins que j'ai mis à 4.5V, faut que je le mette à 9V )
Sinon les condensateurs de découplage il faut que je les mette avant les 4 entrées du L293D (celles qui recoivent les "ordres" du pic) ? C'est pour stabiliser les fréquences c'est ça ?
#32352 Problème probable sur mon câblage
Posté par Francky sur 18 juillet 2011 - 08:31 dans Electronique
Et sinon, puisque mon pic tourne très bien sous 3 V, si je rajoute 2 piles AAA ou AA (peu importe) dans mon robot et que je m'en sers pour alimenter mon microcontrolleur, logiquement il devrait tourner. De plus, je peux alimenter mes 2 DEL et mes deux DEL émettrices à la sortie du pic (il débite 25mA par pin). Après, puisque le microcontrolleur et mes 4 DEL ne pomperont plus sur la pile de 9V, celle-ci débitera peut être assez de courant pour les L293D. Ce qui résoudrait mon problème !
Je ne préfère pas tester avant que quelqu'un me réponde de peur de griller mes composants ! ^^
J'attends vos réponses avec impatience et vous remercie pour vos explications et votre aide !
#32362 Problème probable sur mon câblage
Posté par Francky sur 18 juillet 2011 - 03:21 dans Electronique
D'une : j'ai pas de régulateur de tension et j'ai pas de commandes à passer donc je peux pas en prendre un en passant :/
De deux je saurai pas m'en servir xD
En tous cas merci de m'avoir prévenu pour les masses j'y aurai pas pensé x'D Après pour le poids c'est clair que c'est pas top mais bon :/
Après pour la pile de 9V, on va dire que c'est un peu la solut du pauvre :'D
Et j'espère que tu te trompes pour mes moteurs, j'ai pas très envie de les bousiller x') même si c'est que de la récup ! xD
Et justement pour éviter ce problème mon prof de SI m'avait dit une astuce : élaborer un cycle périodique. Il m'avait dit qu'en alimentant, par exemple, sous 6V le moteur mais en faisant un cycle rectangulaire (avec ton = T) on obtenait le même résultat qu'en alimentant le moteur sous 3V (il m'avait dit qu'il fallait alterner allumer et éteindre rapidement. Est-ce que ça pourrait éviter de griller les moteurs ?
Et sinon pour savoir, pour la prochaine fois, il aurait fallu que j'utilise ça :
http://www.conrad.fr/regulateur_de_tension_fixe_0_1_a_negatif_p_48674_48809_839580_219660_FAS ?
#32384 Problème probable sur mon câblage
Posté par Francky sur 19 juillet 2011 - 10:23 dans Electronique
Par contre la carte que tu m(as indiqué à la page 7 c'est pour du 18V en entrée c'est ça ? (et du 5 en sortie ?) Si je mets du 9 V ça me sortira quand même du 5 V ?
Bon je vais fouiller voir si j'ai pas ça en magasin, si je trouve j'essaierai
Merci pour le conseil anti-brûlure, ça peut servir x') Même si maintenant que je me suis brûlé avec mon fer à souder j'essaie de faire gaffe XDD
Après mes recherches j'en ai trouvé, cependant ils sont irrécupérables (platines industrielles) :/ Tant pis je vais mettre l'autre alimentation de 3 v pour le pic et mettre les 4 pins d'alimentation de chaque L293D directement sur le 9 V en espérant que ça crame pas :x
#32385 projet Hexapode
Posté par Francky sur 19 juillet 2011 - 10:40 dans Robots à pattes et jambes, humanoïdes, bipèdes, quadrupèdes, hexapodes ...
Bon je suis nouveau sur le forum et j'ai pas encore totalement finis mon premier projet (bug à corriger) mais je suis très intéressé par ton idée ! (je n'ai pas non plus de club à côté de chez moi donc... "^^)
Alors, affaire à suivre !
#32386 Simulation d'un programme asm
Posté par Francky sur 19 juillet 2011 - 11:16 dans Programmation
Ok Maïck je vais d'ailleurs le faire maintenant car après plusieurs tests il s'est avéré que je n'arrivais pas à déclencher l'interruption :x Tout le programme fonctionne sauf ça, pas moyen de la déclencher ! "^^ J'ai essayé de la modifier plusieurs fois en regardant bien comment bigonoff faisait et en cherchant sur internet mais j'ai pas trouvé :x
Et oui je crois que c'est le flowcode ! ^^ Ben maintenant que j'ai réussi à faire fonctionner un programme (bon sauf l'intérupt "^^) je vais continuer le basic
Et merci Mic* pour le lien ! Je vais voir mais d'après ce que tu me dis c'est exactement le genre de trucs que je cherchais J'étais tellement désespéré que j'ai construit une platine avec des del pour tester mes programmes x') Mais bon vu qu'il faut une licence je préfère rester avec ma platine perso
Et donc voici la partie de mon code qui "gère" l'interruption RB0 (le problème vient peut être de l'initialisation, je ne sais pas, auquel cas je posterai le bout de programme). J'ai retiré le programme en lui même pour vous évitez de la lecture inutile et pour vous faire gagner du temps ^^ (vous allez reconnaître les bouts de programme je pense, c'est directement issu du cours de bigonoff )
Et je pensais : si j'ai un obstacle devant et que l'interruption est déclenchée, est-ce qu'une nouvelle interruption peut se déclencher tout de suite après ? Si c'est le cas mon robot risque d'être bloquée devant un mur comme un *** ^^ Donc est-ce qu'il y a une solution genre empêcher les interruptions le temps que celle-ci se termine ?
;********************************************************************** ; ROUTINE INTERRUPTION * ;********************************************************************** ;sauvegarder registres ;--------------------- org 0x004 ; adresse d'interruption movwf w_temp ; sauver registre W swapf STATUS,w ; swap status avec résultat dans w movwf status_temp ; sauver status swappé ;Traiter directement RB0 car c'est la seule ;intéruption autorisée call intrb0 ; traiter interrupt RB0 goto restorereg ; et fin d'interruption ;restaurer registres ;------------------- restorereg swapf status_temp,w ; swap ancien status, résultat dans w movwf STATUS ; restaurer status swapf w_temp,f ; Inversion L et H de l'ancien W ; sans modifier Z swapf w_temp,w ; Réinversion de L et H dans W ; W restauré sans modifier status retfie ; return from interrupt ;********************************************************************** ; INTERRUPTION RB0/INT * ;********************************************************************** ; ;L'intérruption est déclenchée lorsque le phototransistor fixée sur le ;corps du robot devient passant. Il y a alors une impulsion sur la pin ;du microcontrolleur RB0, ce qui provoque l'intéruption, le système va ;alors arrêter ce qu'il était en train de faire et va exécuter les actions ;ci-dessous. Enfin, quand il aura terminé, il "reprendra" au moment où il ;s'était arrêté. ; ;L'intéruption consiste à reculer le robot pendant 3 secondes puis à n'actionner ;que le moteur de la rouge gauche pour que le robot tourne à droite. ; ;_______________________________________________________________________ intrb0 BANK0 ;conseil appliqué du cours ;de Bigonoff qui conseille ;d'entrer dans une sous routine ;en banque 0 (... le programme...) bcf INTCON , INTF ; effacer flag INT/RB0 return ; fin d'interruption RB0/INT
Merci d'avance pour vos futures réponses qui vont, je le pense, beaucoup m'aider !
Je voulais mettre la vidéo du test de mon programme en pièce jointe mais le forum n'a pas voulu, tant pis :x
#32396 projet Hexapode
Posté par Francky sur 19 juillet 2011 - 05:10 dans Robots à pattes et jambes, humanoïdes, bipèdes, quadrupèdes, hexapodes ...
#32431 Simulation d'un programme asm
Posté par Francky sur 20 juillet 2011 - 08:44 dans Programmation
Bon ben si tu tiens à te faire chier à lire mon programme je te le mets en entier alors, merci x]
Bon je te préviens tout de suite il y a beaucoup de conneries en commentaire...
Quand je code je m'ennuie alors j'aime bien faire ça ! En même temps quand je le relis ça m'éclate et je me dis : "Ce que je peut être *** quand même" xD Enfin bon n'y prête pas trop attention x')
;************************************************************************************* ; * ; Systeme d exploitation : _GALACTUX_ * ; PIC utilise : 16F84A * ; Version : 1.0 (\_/) * ; Auteur : Desaindes Franck (=*.*) * ; Date : 2011 *(")_(") * ; * ;************************************************************************************* ;_____________________________________________________________________________________ ; ;programme fonctionnel !! Sauf les intérupts "^^ ; ;_____________________________________________________________________________________ LIST p=16F84 ; définition de processeur #include <p16F84A.inc> ; définition des constantes __CONFIG _CP_OFF & _WDT_ON & _PWRTE_ON & _HS_OSC ; '__CONFIG' précise les paramètres encodés dans le processeur au moment de ; la programmation. Les définitions sont dans le fichier include. ; Voici les valeurs et leurs définitions : ; _CP_ON Code protection ON : impossible de relire ; _CP_OFF Code protection OFF ; _PWRTE_ON Timer reset sur power on en service ; _PWRTE_OFF Timer reset hors-service ; _WDT_ON Watch-dog en service ; _WDT_OFF Watch-dog hors service ; _LP_OSC Oscillateur quartz basse vitesse ; _XT_OSC Oscillateur quartz moyenne vitesse ; _HS_OSC Oscillateur quartz grande vitesse ; _RC_OSC Oscillateur à réseau RC ;********************************************************************* ; ASSIGNATIONS * ;********************************************************************* OPTIONVAL EQU H'13' ; Valeur registre option ;résistance de rappel off ;intéruption de RB0 actif au niveau haut ;timer 0 en fonction de l'horloge interne ;pas de prédiviseurs INTERMASK EQU H'0090' ; Masque d'interruption ; Interruptions sur RB0 ;********************************************************************* ; DEFINE * ;********************************************************************* #DEFINE rrd PORTA, 0 ;reculer roue droite #DEFINE ard PORTA, 1 ;avancer roue droite #DEFINE arg PORTA, 2 ;avancer roue gauche #DEFINE rrg PORTA, 3 ;reculer roue gauche #DEFINE adig PORTA, 4 ;allumer del infrarouge gauche #DEFINE obstacle PORTB, 0 ;si capteur infrarouge détecte un obstacle -> interuption #DEFINE adid PORTB, 1 ;allumer del infrarouge droite #DEFINE adjg PORTB, 2 ;allumer del jaune gauche #DEFINE adjd PORTB, 3 ;allumer del jaune droite #DEFINE dbd PORTB, 4 ;descendre bras droit #DEFINE lbd PORTB, 5 ;lever bras droit #DEFINE dbg PORTB, 6 ;descendre bras gauche #DEFINE lbg PORTB, 7 ;lever bras gauche ;********************************************************************* ; MACRO * ;********************************************************************* ; ;liste des macros utilisées ;on pour sortie à 1 (instruction bsf) ;off pour sortie à 0 (instruction bcf) ; ;_____________________________________________________________________ BANK0 macro bcf STATUS,RP0 ; passer banque0 endm BANK1 macro bsf STATUS,RP0 ; passer banque1 endm ;_1_ rrdon macro bsf rrd ;enclenche le moteur reculer roue droite endm rrdoff macro bcf rrd ;éteint le moteur reculer roue droite endm ;_2_ ardon macro bsf ard ;enclenche le moteur avancer roue droite endm ardoff macro bcf ard ;éteint le moteur avancer roue droite endm ;_3_ argon macro bsf arg ;enclenche le moteur avancer roue gauche endm argoff macro bcf arg ;éteint le moteur avancer roue gauche endm ;_4_ rrgon macro bsf rrg ;enclenche le moteur reculer roue gauche endm rrgoff macro bcf rrg ;éteint le moteur reculer roue gauche endm ;_5_ adigon macro bsf adig ;allumer del infrarouge gauche endm adigoff macro bcf adig ;arrêter d'allumer del infrarouge gauche endm ;_6_ adidon macro bsf adid ;allumer del infrarouge droite endm adidoff macro bcf adid ;arrêter d'allumer del infrarouge droite endm ;_7_ adjgon macro bsf adjg ;allumer del jaune gauche endm adjgoff macro bcf adjg ;éteindre del jaune gauche endm ;_8_ adjdon macro bsf adjd ;allumer del jaune droite endm adjdoff macro bcf adjd ;éteindre del jaune droite endm ;_9_ dbdon macro bsf dbd ;enclenche le moteur qui permet de descendre le bras droit endm dbdoff macro bcf dbd ;éteint le moteur de descente du bras droit endm ;_10_ lbdon macro bsf lbd ;allumer le moteur lever bras droit endm lbdoff macro bcf lbd ;éteindre le moteur lever bras droit endm ;_11_ dbgon macro bsf dbg ;enclenche le moteur qui permet de descendre le bras gauche endm dbgoff macro bcf dbg ;éteint le moteur de descente du bras gauche endm ;_12_ lbgon macro bsf lbg ;allumer le moteur lever bras gauche endm lbgoff macro bcf lbg ;éteindre le moteur lever bras gauche endm ;********************************************************************* ; DECLARATIONS DE VARIABLES * ;********************************************************************* CBLOCK 0x00C ; début de la zone variables w_temp :1 ; Sauvegarde de W dans interruption status_temp : 1 ; Sauvegarde de STATUS dans interruption cmpt1 : 1 ;compteur de boucles 1 cmpt2 : 1 ;compteur de boucles 2 cmpt3 : 1 ;compteur de boucles 3 cmpt4 : 1 ;compteur de boucles 4 cmpt5 : 1 ;compteur de boucles 5 cmpt9 : 1 ;compteur de boucles 9 cmpt10 : 1 ;compteur de boucles 10 cmpt11 : 1 ;compteur de boucles 11 ;(gros trou, hein ? oO mystère et boule de gomme ! xD) flags : 1 ; un octet pour 8 flags ; b0 : libre ; b1 : libre ; b2 : libre ; b3 : libre ; b4 : libre ; b5 : libre ; b6 : libre ; b7 : libre ENDC ; Fin de la zone ;********************************************************************** ; DEMARRAGE SUR RESET * ;********************************************************************** org 0x000 ; Adresse de départ après reset goto init ; Adresse 0: initialiser ;********************************************************************** ; ROUTINE INTERRUPTION * ;********************************************************************** ;sauvegarder registres ;--------------------- org 0x004 ; adresse d'interruption movwf w_temp ; sauver registre W swapf STATUS,w ; swap status avec résultat dans w movwf status_temp ; sauver status swappé ;Traiter directement RB0 car c'est la seule ;intéruption autorisée call intrb0 ; traiter interrupt RB0 goto restorereg ; et fin d'interruption ;restaurer registres ;------------------- restorereg swapf status_temp,w ; swap ancien status, résultat dans w movwf STATUS ; restaurer status swapf w_temp,f ; Inversion L et H de l'ancien W ; sans modifier Z swapf w_temp,w ; Réinversion de L et H dans W ; W restauré sans modifier status retfie ; return from interrupt ;********************************************************************** ; INTERRUPTION RB0/INT * ;********************************************************************** ; ;L'intérruption est déclenchée lorsque le phototransistor fixée sur le ;corps du robot devient passant. Il y a alors une impulsion sur la pin ;du microcontrolleur RB0, ce qui provoque l'intéruption, le système va ;alors arrêter ce qu'il était en train de faire et va exécuter les actions ;ci-dessous. Enfin, quand il aura terminé, il "reprendra" au moment où il ;s'était arrêté. ; ;L'intéruption consiste à reculer le robot pendant 3 secondes puis à n'actionner ;que le moteur de la rouge gauche pour que le robot tourne à droite. ; ;_______________________________________________________________________ intrb0 BANK0 ;conseil appliqué du cours ;de Bigonoff qui conseille ;d'entrer dans une sous routine ;en banque 0 ;jeu avec les dels jaunes ;permet d'éteindre les deux dels si elles étaient allumées adjgoff ;éteindre del jaune gauche adjdoff ;éteindre del jaune droite ;mode réflexion è_é call tempo ;le robot call tempo ;ne fait rien call tempo ;pendant 5 secondes call tempo ;comme s'il call tempo ;réfléchissait ;p ;clignottement adjgon ;allumer la del jaune gauche call tempo ;attends une seconde adjgoff ;éteins la del jaune gauche adjdon ;allumer la del jaune droite call tempo ;attends 1 seconde adjgon ;allumer la del jaune gauche ;il a trouvé la solution au problème <img src='http://www.robot-maker.com/forum/public/style_emoticons/<#EMO_DIR#>/wink.gif' class='bbc_emoticon' alt=';)' /> ;tout d'abord : reculer pendant 3 secondes call rr ;recule les 2 roues (dure 1s) call rr ;recule les 2 roues (dure 1s) call rr ;recule les 2 roues (dure 1s) ;puis il suffit de contourner l'obstacle en tournant à droite par exemple <img src='http://www.robot-maker.com/forum/public/style_emoticons/<#EMO_DIR#>/smile.gif' class='bbc_emoticon' alt=':)' /> argon ;avance la roue gauche ;ce qui a pour effet ;de tourner le robot ;vers la droite call tempo ;ces deux temporisations ;ont pour but de laisser call demitempo ;du temps au moteur ;et voilà ! Félicitations ! ;p Maintenant vous n'avez plus qu'à reprendre votre route <img src='http://www.robot-maker.com/forum/public/style_emoticons/<#EMO_DIR#>/wink.gif' class='bbc_emoticon' alt=';)' /> ardon ;avancer la roue droite ;Satisfait ? Alors à la prochaine ! <img src='http://www.robot-maker.com/forum/public/style_emoticons/<#EMO_DIR#>/wink.gif' class='bbc_emoticon' alt=';)' /> bcf INTCON , INTF ; effacer flag INT/RB0 return ; fin d'interruption RB0/INT ;********************************************************************* ; INITIALISATIONS * ;********************************************************************* init clrf PORTA ; Sorties portA à 0 clrf PORTB ; sorties portB à 0 clrf EEADR ; permet de diminuer la consommation bsf STATUS,RP0 ; sélectionner banque 1 movlw OPTIONVAL ; charger masque movwf OPTION_REG ; initialiser registre option ; Effacer RAM ; ------------ movlw 0x0c ; initialisation pointeur movwf FSR ; pointeur d'adressage indirec init1 clrf INDF ; effacer ram incf FSR,f ; pointer sur suivant btfss FSR,6 ; tester si fin zone atteinte (>=40) goto init1 ; non, boucler btfss FSR,4 ; tester si fin zone atteinte (>=50) goto init1 ; non, boucler ; initialisations spécifiques ; --------------------------- ;définir si les pins sont des sorties (bcf) ;ou des entrées (bsf?) bcf rrd ;reculer la roue droite en sortie RAO (banque1) bcf ard ;avancer la roue droite en sortie RA1 (banque 1) bcf arg ;avancer la roue gauche en sortie RA2 (banque1) bcf rrg ;reculer la roue gauche en sortie RA3 (banque 1) bcf adig ;allumer la del infrarouge gauche en sortie RA4 (banque1) bcf adid ;allumer la del infrarouge droite en sortie RB1 (banque1) bcf adjg ;allumer la del jaune gauche en sortie, RB2 (banque1) bcf adjd ;allumer la del jaune droite en sortie RB3 (banque1) bcf dbd ;descendre bras droit en sortie RB4 (banque1) bcf lbd ;lever le bras droit en sortie RB5 (banque1) bcf dbg ;descendre bras gauche en sortie RB6 (banque1) bcf lbg ;lever le bras gauche en sortie RB7 (banque1) BANK0 movlw INTERMASK ; masque interruption movwf INTCON ; charger interrupt control bcf STATUS,RP0 ; repasser banque 0 goto start ; sauter au programme principal ;********************************************************************* ; Sous routine de temporisation * ;********************************************************************* ; ; Temporisation d'approximativement 1 seconde ; Cycles perdus : 262 144 * nombre du compteur 3 ; Soit approximativement 1 048 576 cylces de perdu pour cmp 3 = 4 ; ;______________________________________________________________________ tempo BANK0 movlw 4 ;4 boucles (amène 4 dans le registre W) movwf cmpt11 ;initialise compteur 11 à la valeur 4 boucle6 clrf cmpt10 ; effacer compteur10 boucle5 clrf cmpt9 ; effacer compteur9 boucle4 clrwdt ;remet à 0 le watchdog decfsz cmpt9,f ; décrémenter compteur9 goto boucle4 ; si pas 0, boucler decfsz cmpt10,f ; si 0, décrémenter compteur 2 goto boucle5 ; si cmpt10 pas 0, recommencer boucle4 decfsz cmpt11,f ; si 0, décrémenter compteur 3 goto boucle6 ; si cmpt11 pas 0, recommencer boucle5 return ; retour de la sous-routine ;********************************************************************* ; Sous routine de demi temporisation * ;********************************************************************* ; ; Temporisation d'approximativement 1/2 seconde ; ;_____________________________________________________________________ demitempo BANK0 movlw 2 ;2 boucles (amène 4 dans le registre W) movwf cmpt3 ;initialise compteur 3 à la valeur 4 boucle3 clrf cmpt2 ; effacer compteur2 boucle2 clrf cmpt1 ; effacer compteur1 boucle1 clrwdt ;remet à 0 le watchdog decfsz cmpt1,f ; décrémenter compteur1 goto boucle1 ; si pas 0, boucler decfsz cmpt2,f ; si 0, décrémenter compteur 2 goto boucle2 ; si cmpt2 pas 0, recommencer boucle1 decfsz cmpt3,f ; si 0, décrémenter compteur 3 goto boucle3 ; si cmpt3 pas 0, recommencer boucle2 return ; retour de la sous-routine ;********************************************************************* ; Sous routine de quart de temporisation * ;********************************************************************* ; ; Temporisation d'approximativement 1/4 seconde ; ;_____________________________________________________________________ quartempo BANK0 boucle8 clrf cmpt4 ; effacer compteur4 boucle7 nop ;perdre 1 cycle clrwdt ;remet à 0 le watchdog decfsz cmpt4,f ; décrémenter compteur4 goto boucle7 ; si pas 0, boucler decfsz cmpt5,f ; si 0, décrémenter compteur 5 goto boucle8 ; si cmpt5 pas 0, recommencer boucle7 return ; retour de la sous-routine ;********************************************************************* ; Sous programme de megatempo * ;********************************************************************* ; ; ;Temporisation très courte dédiée au sous programme de détection ;1 cycle d'un microcontrolleur durt 1 micro seconde (quand il est ;utilisé avec un quartz d'une fréquence de 4 MHz). ;Le but ici est de faire perdre 50 cycles (donc 50 micro secondes) ;au pic ;La temporisation est d'environ 52/53 cycles. ; ;_____________________________________________________________________ ;remarque : l'écriture est ici longue pour rien. On peut la racourcir en ;rajoutant un compteur. Je ne l'ai pas fait car je n'en avais pas envie. xP ;De plus c'est plus simple comme ça et au moins je suis sûr que ça marche xD megatempo BANK0 nop ;fait perdre 1 cycle nop ;fait perdre 1 cycle nop ;fait perdre 1 cycle nop ;fait perdre 1 cycle clrwdt ;remet à 0 le watchdog nop ;fait perdre 1 cycle nop ;fait perdre 1 cycle nop ;fait perdre 1 cycle nop ;fait perdre 1 cycle clrwdt ;remet à 0 le watchdog ;et de 10 cycles x) nop ;fait perdre 1 cycle nop ;fait perdre 1 cycle nop ;fait perdre 1 cycle nop ;fait perdre 1 cycle clrwdt ;remet à 0 le watchdog nop ;fait perdre 1 cycle nop ;fait perdre 1 cycle nop ;fait perdre 1 cycle nop ;fait perdre 1 cycle clrwdt ;remet à 0 le watchdog ;et de 20 x') nop ;fait perdre 1 cycle nop ;fait perdre 1 cycle nop ;fait perdre 1 cycle nop ;fait perdre 1 cycle clrwdt ;remet à 0 le watchdog nop ;fait perdre 1 cycle nop ;fait perdre 1 cycle nop ;fait perdre 1 cycle nop ;fait perdre 1 cycle clrwdt ;remet à 0 le watchdog ;et de 30, ça devient long :/ nop ;fait perdre 1 cycle nop ;fait perdre 1 cycle nop ;fait perdre 1 cycle nop ;fait perdre 1 cycle clrwdt ;remet à 0 le watchdog nop ;fait perdre 1 cycle nop ;fait perdre 1 cycle nop ;fait perdre 1 cycle nop ;fait perdre 1 cycle clrwdt ;remet à 0 le watchdog ;et de 40, j'adoooore le copié/collé xD nop ;fait perdre 1 cycle nop ;fait perdre 1 cycle nop ;fait perdre 1 cycle nop ;fait perdre 1 cycle clrwdt ;remet à 0 le watchdog nop ;fait perdre 1 cycle nop ;fait perdre 1 cycle nop ;fait perdre 1 cycle nop ;fait perdre 1 cycle clrwdt ;remet à 0 le watchdog ;et de 50, OUF ! Enfin terminé :] return ;********************************************************************* ; Sous programme de détection * ;********************************************************************* ; ;Ce sous programme permet au système de "s'informer" de la présence ;ou non d'obstacles. ;Pour ce faire, il va envoyer de manière saccadée des émissions de rayons ;infrarouge. ;- S'il y a un obstacle : les rayons sont renvoyés au phototransistor qui ;devient passant et déclenche la routine d'intéruption du pic. ;- Dans le cas contraire : rien ne se passe. ; ;Ce sous programme alterne alimentation d'une diode infrarouge émettrice ;(droite ou gauche) et une temporisation. La période est de 100 micro secondes. ; ;_____________________________________________________________________ detection BANK0 ;1ère étape : allumer puis éteindre successivement la diode émettrice gauche ;pendant une période d'environ 550 micro secondes ;(inspiré du sujet bac si de 2009) adigon ;allumer del infrarouge gauche call megatempo ;fait perdre environ 50 micro secondes clrwdt ;remet à 0 le watchdog adigoff ;éteins la del infrarouge gauche call megatempo ;fait perdre environ 50 micro secondes clrwdt ;remet à 0 le watchdog adigon ;allumer del infrarouge gauche call megatempo ;fait perdre environ 50 micro secondes clrwdt ;remet à 0 le watchdog adigoff ;éteins la del infrarouge gauche call megatempo ;fait perdre environ 50 micro secondes clrwdt ;remet à 0 le watchdog adigon ;allumer del infrarouge gauche call megatempo ;fait perdre environ 50 micro secondes clrwdt ;remet à 0 le watchdog adigoff ;éteins la del infrarouge gauche call megatempo ;fait perdre environ 50 micro secondes clrwdt ;remet à 0 le watchdog adigon ;allumer del infrarouge gauche call megatempo ;fait perdre environ 50 micro secondes clrwdt ;remet à 0 le watchdog adigoff ;éteins la del infrarouge gauche call megatempo ;fait perdre environ 50 micro secondes clrwdt ;remet à 0 le watchdog adigon ;allumer del infrarouge gauche call megatempo ;fait perdre environ 50 micro secondes clrwdt ;remet à 0 le watchdog adigoff ;éteins la del infrarouge gauche call megatempo ;fait perdre environ 50 micro secondes clrwdt ;remet à 0 le watchdog adigon ;allumer del infrarouge gauche call megatempo ;fait perdre environ 50 micro secondes clrwdt ;remet à 0 le watchdog adigoff ;éteins la del infrarouge gauche ;2ème étape : on fait pareil avec l'autre del infrarouge adidon ;allume la del infrarouge droite call megatempo ;fait perdre environ 50 micro secondes clrwdt ;remet à 0 le watchdog adidoff ;éteins la del infrarouge droite call megatempo ;fait perdre environ 50 micro secondes clrwdt ;remet à 0 le watchdog adidon ;allume la del infrarouge droite call megatempo ;fait perdre environ 50 micro secondes clrwdt ;remet à 0 le watchdog adidoff ;éteins la del infrarouge droite call megatempo ;fait perdre environ 50 micro secondes clrwdt ;remet à 0 le watchdog adidon ;allume la del infrarouge droite call megatempo ;fait perdre environ 50 micro secondes clrwdt ;remet à 0 le watchdog adidoff ;éteins la del infrarouge droite call megatempo ;fait perdre environ 50 micro secondes clrwdt ;remet à 0 le watchdog adidon ;allume la del infrarouge droite call megatempo ;fait perdre environ 50 micro secondes clrwdt ;remet à 0 le watchdog adidoff ;éteins la del infrarouge droite call megatempo ;fait perdre environ 50 micro secondes clrwdt ;remet à 0 le watchdog adidon ;allume la del infrarouge droite call megatempo ;fait perdre environ 50 micro secondes clrwdt ;remet à 0 le watchdog adidoff ;éteins la del infrarouge droite call megatempo ;fait perdre environ 50 micro secondes clrwdt ;remet à 0 le watchdog adidon ;allume la del infrarouge droite call megatempo ;fait perdre environ 50 micro secondes clrwdt ;remet à 0 le watchdog adidoff ;éteins la del infrarouge droite return ;********************************************************************* ; sous programme : "T'as de beaux yeux tu sais ?" * ;********************************************************************* ; ;Ce sous programme permet de faire clignoter les del des yeux à une ;fréquence d'1Hz environ ; ;_____________________________________________________________________ clignotement BANK0 adjdon ;allume la del droite call demitempo ;temporisation d'1/2s clrwdt ;remet à 0 le watchdog adjdoff ;éteint la del droite call demitempo ;temporisation d'1/2s clrwdt ;remet à 0 le watchdog adjgon ;allume la del gauche call demitempo ;temporisation d'1/2s clrwdt ;remet à 0 le watchdog adjgoff ;éteint la del gauche call demitempo ;temporisation d'1/2s clrwdt ;remet à 0 le watchdog adjdon ;allume la del droite call demitempo ;temporisation d'1/2s clrwdt ;remet à 0 le watchdog adjdoff ;éteint la del droite call demitempo ;temporisation d'1/2s clrwdt ;remet à 0 le watchdog adjgon ;allume la del gauche call demitempo ;temporisation d'1/2s clrwdt ;remet à 0 le watchdog adjgoff ;éteint la del gauche call demitempo ;temporisation d'1/2s clrwdt ;remet à 0 le watchdog adjdon ;allume la del droite adjgon ;allume la del gauche call demitempo ;temporisation d'1/2s clrwdt ;remet à 0 le watchdog adjdoff ;éteint la del droite adjgoff ;éteint la del gauche call demitempo ;temporisation d'1/2s clrwdt ;remet à 0 le watchdog adjdon ;allume la del droite adjgon ;allume la del gauche call demitempo ;temporisation d'1/2s clrwdt ;remet à 0 le watchdog adjdoff ;éteint la del droite adjgoff ;éteint la del gauche call demitempo ;temporisation d'1/2s clrwdt ;remet à 0 le watchdog return ;********************************************************************* ; sous programme : "avrg" * ;********************************************************************* ; ;Ce sous programme permet de faire avancer la roue gauche (en alternant ;marche et coupure). Ce sous programme dure environ 1 seconde ; ;_____________________________________________________________________ avrg BANK0 argon ;allume le moteur call quartempo ;1/4 de s clrwdt ;remet à 0 le watchdog argoff ;éteint le moteur call quartempo ;1/4 de s clrwdt ;remet à 0 le watchdog argon ;allume le moteur call quartempo ;1/4 de s clrwdt ;remet à 0 le watchdog argoff ;éteint le moteur call quartempo ;1/4 de s clrwdt ;remet à 0 le watchdog return ;********************************************************************* ; sous programme : "rerg" * ;********************************************************************* ; ;Ce sous programme permet de faire reculer la roue gauche (en alternant ;marche et coupure). Ce sous programme dure environ 1 seconde ; ;_____________________________________________________________________ rerg BANK0 rrgon ;allume le moteur call quartempo ;1/4 de s clrwdt ;remet à 0 le watchdog rrgoff ;éteint le moteur call quartempo ;1/4 de s clrwdt ;remet à 0 le watchdog rrgon ;allume le moteur call quartempo ;1/4 de s clrwdt ;remet à 0 le watchdog rrgoff ;éteint le moteur call quartempo ;1/4 de s clrwdt ;remet à 0 le watchdog return ;********************************************************************* ; sous programme : "avrd" * ;********************************************************************* ; ;Ce sous programme permet de faire avancer la roue droite (en alternant ;marche et coupure). Ce sous programme dure environ 1 seconde ; ;_____________________________________________________________________ avrd BANK0 ardon ;allume le moteur call quartempo ;1/4 de s clrwdt ;remet à 0 le watchdog ardoff ;éteint le moteur call quartempo ;1/4 de s clrwdt ;remet à 0 le watchdog ardon ;allume le moteur call quartempo ;1/4 de s clrwdt ;remet à 0 le watchdog ardoff ;éteint le moteur call quartempo ;1/4 de s clrwdt ;remet à 0 le watchdog return ;********************************************************************* ; sous programme : "rerd" * ;********************************************************************* ; ;Ce sous programme permet de faire reculer la roue droite (en alternant ;marche et coupure). Ce sous programme dure environ 1 seconde ; ;_____________________________________________________________________ rerd BANK0 rrdon ;allume le moteur call quartempo ;1/4 de s clrwdt ;remet à 0 le watchdog rrdoff ;éteint le moteur call quartempo ;1/4 de s clrwdt ;remet à 0 le watchdog rrdon ;allume le moteur call quartempo ;1/4 de s clrwdt ;remet à 0 le watchdog rrdoff ;éteint le moteur call quartempo ;1/4 de s clrwdt ;remet à 0 le watchdog return ;********************************************************************* ; sous programme : "av" * ;********************************************************************* ; ;Ce sous programme permet de faire avancer les deux roues (en alternant ;marche et coupure). Ce sous programme dure environ 1 seconde ; ;_____________________________________________________________________ av BANK0 ardon ;allume les moteur argon call quartempo ;1/4 de s clrwdt ;remet à 0 le watchdog ardoff ;éteint les moteurs argoff call quartempo ;1/4 de s clrwdt ;remet à 0 le watchdog ardon ;allume les moteurs argon call quartempo ;1/4 de s clrwdt ;remet à 0 le watchdog ardoff ;éteint les moteurs argoff call quartempo ;1/4 de s clrwdt ;remet à 0 le watchdog return ;********************************************************************* ; sous programme : "rr" * ;********************************************************************* ; ;Ce sous programme permet de faire reculer les deux roues (en alternant ;marche et coupure). Ce sous programme dure environ 1 seconde ; ;_____________________________________________________________________ rr ;DragoOon BaAall !!! xD BANK0 rrdon ;allume les moteurs rrgon call quartempo ;1/4 de s clrwdt ;remet à 0 le watchdog rrdoff ;éteint les moteurs rrgoff call quartempo ;1/4 de s clrwdt ;remet à 0 le watchdog rrdon ;allume les moteurs rrgon call quartempo ;1/4 de s clrwdt ;remet à 0 le watchdog rrdoff ;éteint les moteurs rrgoff call quartempo ;1/4 de s clrwdt ;remet à 0 le watchdog return ;********************************************************************* ; sous programme : "lebd" * ;********************************************************************* ; ;Ce sous programme permet de lever le bras droit (en alternant ;marche et coupure). Ce sous programme dure environ 1 seconde ; ;_____________________________________________________________________ lebd BANK0 lbdon ;allume le moteur call quartempo ;1/4 de s clrwdt ;remet à 0 le watchdog lbdoff ;éteint le moteur call quartempo ;1/4 de s clrwdt ;remet à 0 le watchdog lbdon ;allume le moteur call quartempo ;1/4 de s clrwdt ;remet à 0 le watchdog lbdoff ;éteint le moteur call quartempo ;1/4 de s clrwdt ;remet à 0 le watchdog return ;********************************************************************* ; sous programme : "debd" * ;********************************************************************* ; ;Ce sous programme permet de descendre le bras droit (en alternant ;marche et coupure). Ce sous programme dure environ 1 seconde ; ;_____________________________________________________________________ debd BANK0 dbdon ;allume le moteur call quartempo ;1/4 de s clrwdt ;remet à 0 le watchdog dbdoff ;éteint le moteur call quartempo ;1/4 de s clrwdt ;remet à 0 le watchdog dbdon ;allume le moteur call quartempo ;1/4 de s clrwdt ;remet à 0 le watchdog dbdoff ;éteint le moteur call quartempo ;1/4 de s clrwdt ;remet à 0 le watchdog return ;********************************************************************* ; sous programme : "lebg" * ;********************************************************************* ; ;Ce sous programme permet de lever le bras gauche (en alternant ;marche et coupure). Ce sous programme dure environ 1 seconde ; ;_____________________________________________________________________ lebg ;'spèce de prétentieux sous ;programme va xP BANK0 lbgon ;allume le moteur call quartempo ;1/4 de s clrwdt ;remet à 0 le watchdog lbgoff ;éteint le moteur call quartempo ;1/4 de s clrwdt ;remet à 0 le watchdog lbgon ;allume le moteur call quartempo ;1/4 de s clrwdt ;remet à 0 le watchdog lbgoff ;éteint le moteur call quartempo ;1/4 de s clrwdt ;remet à 0 le watchdog return ;********************************************************************* ; sous programme : "debg" * ;********************************************************************* ; ;Ce sous programme permet de descendre le bras gauche (en alternant ;marche et coupure). Ce sous programme dure environ 1 seconde ; ;_____________________________________________________________________ debg BANK0 dbgon ;allume le moteur call quartempo ;1/4 de s clrwdt ;remet à 0 le watchdog dbgoff ;éteint le moteur call quartempo ;1/4 de s clrwdt ;remet à 0 le watchdog dbgon ;allume le moteur call quartempo ;1/4 de s clrwdt ;remet à 0 le watchdog dbgoff ;éteint le moteur call quartempo ;1/4 de s clrwdt ;remet à 0 le watchdog return ;********************************************************************* ; sous programme : "lb" * ;********************************************************************* ; ;Ce sous programme permet de lever les 2 bras (en alternant ;marche et coupure). Ce sous programme dure environ 1 seconde ; ;_____________________________________________________________________ lb BANK0 lbgon ;allume les moteurs lbdon call quartempo ;1/4 de s clrwdt ;remet à 0 le watchdog lbgoff ;éteint les moteurs lbdoff call quartempo ;1/4 de s clrwdt ;remet à 0 le watchdog lbgon ;allume les moteurs lbdon call quartempo ;1/4 de s clrwdt ;remet à 0 le watchdog lbgoff ;éteint les moteurs lbdoff call quartempo ;1/4 de s clrwdt ;remet à 0 le watchdog return ;********************************************************************* ; sous programme : "deb" * ;********************************************************************* ; ;Ce sous programme permet de descendre les 2 bras (en alternant ;marche et coupure). Ce sous programme dure environ 1 seconde ; ;_____________________________________________________________________ deb ;roh, méchant va è_é BANK0 dbgon ;allume les moteurs dbdon call quartempo ;1/4 de s clrwdt ;remet à 0 le watchdog dbgoff ;éteint les moteurs dbdoff call quartempo ;1/4 de s clrwdt ;remet à 0 le watchdog dbgon ;allume les moteurs dbdon call quartempo ;1/4 de s clrwdt ;remet à 0 le watchdog dbgoff ;éteint les moteurs dbdoff call quartempo ;1/4 de s clrwdt ;remet à 0 le watchdog return ;********************************************************************* ; PROGRAMME PRINCIPAL * ;********************************************************************* start ;_____________prêt au décollage ? call clignotement ;fait appel au sous programme de clignotement clrwdt ;remet à 0 le watchdog ;_____________allumage des feux (il y a du brouillard) xP ... adjgon ;allumer la del jaune gauche adjdon ;allumer la del jaune droite ;_____________allumage des moteurs... call av ;allume les 2 moteurs (dure 1s) ;_____________Activation du S.A.C. (système anti-collision) è_é ... call detection ;fait appel au sous programme détection ;_____________Et c'est parti !! :] call av ;allume les 2 moteurs pour avancer (dure 1s) argon ;avance la roue gauche ardon ;avance la roue droite adjgoff ;éteins la del jaune gauche lbdon ;lever le bras droit call tempo ;1seconde de temporisation call demitempo ;1/2 seconde de temporisation lbdoff ;arrêter de lever le bras droit clrwdt ;remet à 0 le watchdog ;éteins les 2 moteurs pour essayer d'éviter les surchauffes argoff ;éteins le moteur roue gauche ardoff ;éteins le moteur roue droite ;les rallume. Ca ne sert peut être pas à grand chose, test... argon ;allumer le moteur roue gauche ardon ;allumer le moteur roue droite dbdon ;descends le bras droit call tempo ;1seconde de temporisation call demitempo ;1/2 seconde de temporisation dbdoff ;arrête le moteur clrwdt ;remet à 0 le watchdog adjgon ;allume la del jaune gauche argoff ;éteins le moteur roue gauche ardoff ;éteins le moteur roue droite call av ;allume les 2 moteurs pour avancer ;(dure 1s) ;_____________Petite vérification xP call detection ;fait appel au sous programme détection ;_____________Et c'est reparti !!! x] call av ;allume les 2 moteurs pour avancer ;(dure 1s) argon ;avance la roue gauche ardon ;avance la roue droite adjdoff ;éteins la del jaune droite lbgon ;lever le bras gauche call tempo ;1seconde de temporisation call demitempo ;1/2 seconde de temporisation lbgoff ;arrêter de lever le bras gauche clrwdt ;remet à 0 le watchdog ;éteins les 2 moteurs pour essayer d'éviter les surchauffes argoff ;éteins le moteur roue gauche ardoff ;éteins le moteur roue droite ;les rallume. Ca ne sert peut être pas à grand chose, test... argon ;allumer le moteur roue gauche ardon ;allumer le moteur roue droite dbgon ;descends le bras gauche call tempo ;1seconde de temporisation call demitempo ;1/2 seconde de temporisation dbgoff ;arrête le moteur clrwdt ;remet à 0 le watchdog adjdon ;allume la del jaune droite argoff ;éteins le moteur roue gauche ardoff ;éteins le moteur roue droite call av ;allume les 2 moteurs pour avancer ;(dure 1s) ;____________Juste au cas où... <img src='http://www.robot-maker.com/forum/public/style_emoticons/<#EMO_DIR#>/ohmy.gif' class='bbc_emoticon' alt=':o' /> call detection ;fait appel au sous programme détection ;____________Wouhou !!! Il n'y a rien !!! (ou plus rien...) On lève les bras en signe de joie ! XDD lbdon ;lever le bras droit lbgon ;lever le bras gauche adjdoff ;éteins la del jaune droite adjgoff ;éteins la del jaune gauche lbdoff ;éteins le moteur lbgoff ;éteins le moteur ;à peu près pendant 4 secondes, ça doit permettre ;aux deux bras de faire un tour complet call lb ;lève les 2 bras (1seconde) clrwdt ;remet à 0 le watchdog call lb ;lève les 2 bras (1seconde) clrwdt ;remet à 0 le watchdog call lb ;lève les 2 bras (1seconde) clrwdt ;remet à 0 le watchdog call lb ;lève les 2 bras (1seconde) clrwdt ;remet à 0 le watchdog adjdon ;allume la del jaune droite adjgon ;allume la del jaune gauche ;_____________On est jamais trop prudent <img src='http://www.robot-maker.com/forum/public/style_emoticons/<#EMO_DIR#>/tongue.gif' class='bbc_emoticon' alt=':P' /> call detection ;fait appel au sous programme détection call av ;fait avancer les 2 roues ; Oh ! Mais qu'est-ce que c'est ??? ;______________________________________________________________________________________________ ; ___________________________________________________________________________ ; ___________AAAAAAAAAAHHHHHHHHHHHHHHHH!!!!!!!!___________ ; ____Je suis aspiré dans une faille____ ; ______Temporelle!!!!_____ ; ______!!!!elleropmeT_____ ; ____elliaf enu snad éripsa sius eJ____ ; ___________!!!!!!!!HHHHHHHHHHHHHHHHAAAAAAAAAA___________ ; ___________________________________________________________________________ ;______________________________________________________________________________________________ ; ??? tse'c euq ec-tse'qu siaM ! hO goto start ;boucle du programme principal END ; directive fin de programme
PS : méchante limitation des smileys :'(
#32435 Hexapod
Posté par Francky sur 20 juillet 2011 - 09:15 dans Robots à pattes et jambes, humanoïdes, bipèdes, quadrupèdes, hexapodes ...
J'ai lu ce que tu projetais de faire et j'avoue que ça m'intéresse beaucoup ! ^^
Tu sais la scie sauteuse avec une lame à dents rapprochées ça passe pour couper du plexi (c'est ce que j'ai utilisé pour mon robot). Après c'est sûr faut faire attention de bien couper droit, et tu rentres dedans comme dans du beurre, mais bon... "^^ Mais ça ne le fait pas fondre ! (enfin après ça dépend peut être du plexy)
En tous cas, j'ai vu un modèle d'hexapod très très intéressant à la japan expo 2011 !! (c'est un des modèles qui a participé au concours où il fallait bouger les pions d'un échiquier). Elle était assez grosse, équipée de 8 pattes de mémoire, d'une ventouse à air comprimée pour chopper les pièces et enfin, et surtout, elle était gérée par une DS !!! J'étais en extase devant le truc x'D
En tous cas, très bonne continuation pour ton projet
#32438 Hexapod
Posté par Francky sur 20 juillet 2011 - 09:20 dans Robots à pattes et jambes, humanoïdes, bipèdes, quadrupèdes, hexapodes ...
#32439 Simulation d'un programme asm
Posté par Francky sur 20 juillet 2011 - 09:28 dans Programmation
Et sinon je dois mettre :
bcf TRISA,0
bcf TRISA,1
...
bcf TRISA,4
bcf TRISB,1
bcf TRISB,2
...
bcf TRISB,7
?
Est-ce qu'il faut que je configure RB0 en entrée :
bsf TRISB,0
Parce que c'est peut être le fait que je ne l'ai pas configuré qui pose problème '^^
#32442 Hexapod
Posté par Francky sur 20 juillet 2011 - 10:06 dans Robots à pattes et jambes, humanoïdes, bipèdes, quadrupèdes, hexapodes ...
#32443 Simulation d'un programme asm
Posté par Francky sur 20 juillet 2011 - 10:08 dans Programmation
(par contre qu'est-ce qu'un IO ? Les pins programmables ?)
#32446 Simulation d'un programme asm
Posté par Francky sur 20 juillet 2011 - 10:24 dans Programmation
Par contre,
J'ai essayé de changer en mettant les TRISx et en programmant RB0 en entrée mais ça ne change rien j'ai toujours le même problème qu'avant :/ Merci quand même pour ton aide !
Ca aiderait si je pouvais poster la vidéo du test mais on peut pas sur le forum :x Donc est-ce qu'il y a un moyen ? Ou alors je dois la mettre sur une plateforme genre you tube ?
#32447 Hexapod
Posté par Francky sur 20 juillet 2011 - 10:25 dans Robots à pattes et jambes, humanoïdes, bipèdes, quadrupèdes, hexapodes ...
#32449 Hexapod
Posté par Francky sur 20 juillet 2011 - 10:31 dans Robots à pattes et jambes, humanoïdes, bipèdes, quadrupèdes, hexapodes ...
Et oui je sais pour le concours mais vu que j'y étais avec des gens qui sont pas super intéressés par la robotique j'ai pas pu y aller :"(
En même temps on a parlé avec des mecs de l'école de mon frère qui y était aussi (l'hasard) xD
Il y avait aussi une animation où 2 robots se défiaient ^^ Il y avait 2 pilotes et ils devaient "pelleter" des ballons de rugby pour les filer à l'autre robot x') C'était bien fun à regarder
#32451 Simulation d'un programme asm
Posté par Francky sur 20 juillet 2011 - 10:46 dans Programmation
Ok je mets 93 dans optionval, je fais la vidéo et j'essaierai de la mettre sur you tube
Ca ne marche pas non plus :/ Bon je vais essayer de mettre la vidéo sur you tube
Bon j'ai crée un compte you tube et j'ai mis la vidéo, malheureusement ya une bande son de ***** et j'ai pas réussi à supprimer la vidéo pour la retirer (si quelqu'un sait comment faire...)
Enfin bref, voici le lien de la vidéo du test :
(je prends la barre de métal qui est connecté au + de la pile et je touche RB0)
- Robot Maker
- → Contenu de Francky
- Privacy Policy