Résultat de l’API de MediaWiki

Voici la représentation HTML du format JSON. HTML est bien pour le débogage, mais inapproprié pour être utilisé dans une application.

Spécifiez le paramètre format pour modifier le format de sortie. Pour voir la représentation non HTML du format JSON, mettez format=json.

Voir la documentation complète, ou l’ aide de l’API pour plus d’information.

{
    "batchcomplete": "",
    "continue": {
        "gapcontinue": "RobotArexx",
        "continue": "gapcontinue||"
    },
    "query": {
        "pages": {
            "23": {
                "pageid": 23,
                "ns": 0,
                "title": "Robot",
                "revisions": [
                    {
                        "contentformat": "text/x-wiki",
                        "contentmodel": "wikitext",
                        "*": "[[Cat\u00e9gorie:Projets]]\n[[Fichier:Robots.png|vignette|gauche|Coupe robotique]]\nCompte-rendu et explications concernant le projet de robotique de GEII 2\u00e8me ann\u00e9e de TR. Ce projet a \u00e9t\u00e9 men\u00e9 par Blaise Barr\u00e9 et K\u00e9vin Bruno, avec l'aide de Julien Santa Comba.\n\nLe robot que nous allons concevoir a pour but de participer \u00e0 un concours \u00e0 Vierzon - nous n'y participerons malheureusement pas, car notre robot n'est pas totalement op\u00e9rationnel.\n\nPour cela, nous utiliserons en g\u00e9n\u00e9ral des cartes Arduino qui facilitent la conception du robot et notamment des diff\u00e9rentes parties d\u00e9licates tel que les capteurs : \n\n[[Fichier:Espace_arduino.gif||vignette|droite||Liaison arduino/pc]]\n\nVoici la liste du mat\u00e9riel que nous utiliserons pour construre notre robot : \n#Carter\n#Moteurs\n#Capteurs fourche\n#Roues codeuses\n#Cartes Arduino\n\n\n=Vid\u00e9os et photos sur le robot=\n\nVoici une vid\u00e9o qui explique comment est r\u00e9alis\u00e9 le robot et une autre qui montre une \"battle\" avec un autre robot \u00e0 l'IUT de Troyes.\nS'en suit quelques photos de pr\u00e8s et de loin du robot.\n\n==Vid\u00e9os==\n\n#[http://youtu.be/3USwTDypWYU Vid\u00e9o de pr\u00e9sentation du robot] sur [http://www.youtube.com YouTube]\n#[http://youtu.be/fXdEtVQjRuA Vid\u00e9o de d\u00e9monstration du robot] sur [http://www.youtube.com YouTube]\n\n==Photos==\n\n[[Fichier:Robot 1 .jpg|250px|vignette|centr\u00e9|Photo du robot]]\n\n[[Fichier:Robot 2 .jpg|250px|vignette|centr\u00e9|Zoom sur le robot]]\n\n=Premi\u00e8re partie : conception des moteurs=\n\n==Caract\u00e9ristiques g\u00e9n\u00e9rales des roues codeuses==\n\nLa premi\u00e8re partie de la concetion consiste \u00e0 programmer les cartes pour permettre au robot, dans un premier temps, d'avancer en ligne droite. Pour cela, nous avons recherch\u00e9s:\n#le nombre de crans de l'engrenage de la roue : 60 au total ; 30 blancs et 30 noirs\n#le diam\u00e8tre de la roue codeuse : 55mm\n#le nombre de cran de l'engrenage de la sortie du moteur : 12\n#le rapport de r\u00e9duction : Z1/Z2 = 60/12 = 5 ; 5/60 = 0,08\n#le Diam\u00e8tre de la roue du moteur : 52,6mm\n#le nombre de crans de roues codeuses : 60\n#la distance entre les deux roues est de 20 cm\n\n==Caract\u00e9ristiques techniques de l'opto-coupleur==\n\n[[Fichier:Opto fourche.jpg|vignette|gauche|Un optocoupleur]]\nPour la d\u00e9tection des crans des roues codeuses (passage du noir au transparent, nous utiliserons des optocoupleurs fix\u00e9s sur la ch\u00e2ssis du robot, ce qui permettra de d\u00e9finir la vitesse du robot. \n\n===Montage temporaire===\n\n[[Fichier:Optocoupleur.png|vignette|droite|Le sch\u00e9ma d'un optocoupleur]]Nous avons fait un montage temporaire dans lequel une led s'allume lorsque l'opto-coupleur n'est pas satur\u00e9, c'est-\u00e0-dire lorsque aucun objet n'entre entre l'\u00e9metteur et le r\u00e9cepteur. Nous avons donc mis une r\u00e9sistance de 100 Ohms en s\u00e9rie avec la led de l'opto-coupleur. Nous avons par ailleurs recherch\u00e9 le  programme pour mettre ce montage pull-up sur la carte Arduino.\n\n===Montage final===\n\nApr\u00e8s plusieurs essais r\u00e9ussi sur le montage temporaire, nous avons finalement mis en place le montage d\u00e9finitif permettant de g\u00e9rer le robot \u00e0 l'aide des opto-coupleurs et d'un programme associ\u00e9 (voir programme plus bas). Nous avons \u00e9tablis le programme permettant au robot d'avancer \u00e0 une vitesse \u00e9tablie (en faisant varier de '''0 \u00e0 255''') et \u00e9tablir un parcours pr\u00e9d\u00e9fini.\n\n=Deuxi\u00e8me partie : les capteurs=\n\n==Caract\u00e9ristiques g\u00e9n\u00e9rales des capteurs==\n\nLa deuxi\u00e8me partie de la r\u00e9alisation est consacr\u00e9e aux capteurs infrarouge. Pour cela, nous utiliserons des [http://www.datasheetarchive.com/photodiode%20BPW50-datasheet.html photodiode de type BPW50] mais aussi des  [http://www.datasheetarchive.com/cqy89-datasheet.html diodes infrarouges CQY89]. Au total, 3 capteurs seront utilis\u00e9s (1 sur chaque c\u00f4t\u00e9 du robot et 1 sur la face avant) ce qui lui permettra de d\u00e9tecter les obstacles.\n\n==Caract\u00e9ristiques techniques des capteurs==\n\nLe sch\u00e9ma utilis\u00e9 pour un capteur est :\nApr\u00e8s calcul nous avons d\u00e9termin\u00e9 qu'ils nous fallait une r\u00e9sistance de 2.2k\u03a9 branch\u00e9e \u00e0 la patte \"base\" du transistor et une r\u00e9sistance de 10\u03a9 c\u00e2bl\u00e9e en s\u00e9rie avec la diode \u00e0 la patte \"collectrice\". La patte \"\u00e9mettrice\" est reli\u00e9e \u00e0 la masse. Apr\u00e8s plusieurs essais, nous arrivons, au maximum, \u00e0 d\u00e9tecter un obstacle \u00e0 partir d'environ 15 cm.\n\n\n\n==Programme final==\n\nLe programme qui suit est celui qui nous permet d'utiliser les donn\u00e9es recueillies par les capteurs. Voici quelques explications le concernant :\n\n<source lang=c>\nint testtimer=0;\n\nint pwm_a = 3; \n//PWM control for motor outputs 1 and 2 is on digital pin 10 \nint pwm_b = 11; \n//PWM control for motor outputs 3 and 4 is on digital pin 11 \nint Pindir_a = 12;\nint dir_a=0;\n//PWM control for motor outputs 1 and 2 is on digital pin 12 \nint Pindir_b = 13;\nint dir_b=1;\n//PWM control for motor outputs 3 and 4 is on digital pin 13 \nint val0=0;//valuer sur1024 de capteur0 de la diode infrarouge\nint val1=0;//valuer sur1024 de capteur1\nint val2=0;//valuer sur1024 de capteur2\nint analogPin0 = 3;//capteur1(droite) broche5\nint analogPin1 = 4;//capteur0(millieu) broche5\nint analogPin2 = 5;//capteur2(gauche) broche5\nint on_InfraD = 9; //transistor droit\nint on_InfraC = 8; //transistor milieu\nint on_InfraG = 7; //transistor gauche\nint on_Bip = 10; //allume le bipper\nint L=23;\n\nint compteura=20;\nint compteurb=20;\nint compteurPositionA=0;\nint compteurPositionB=0;\nint DeltaMoyN = 0 ;\nint DeltaTetaN = 0 ;\nint DeltaDiF=0 ;\nint anciencompteura ;\nchar c;\nint zero;\n\n</source>\n\nToutes ces variables servent pour la suite du programmes. Elles sont initialis\u00e9es en ce d\u00e9but de programme, certaines \u00e0 des fins de conceptions (certains composants sont reli\u00e9s \u00e0 des ports pr\u00e9cis du module arduino, nous les d\u00e9finissons ici, d'autres variables servent uniquement pour la logique du microprocesseur comme \u00e7a peut \u00eatre le cas pour les compteurs de position  ou encore les valeurs des capteurs.\n\n<source lang=c>\nvoid setup() {\n  Serial.begin(115200);\t// ouvre le port s\u00e9rie, fixe le d\u00e9bit \u00e0 115200 bauds\n\n  pinMode(pwm_a, OUTPUT);  //vitesse\n  pinMode(pwm_b, OUTPUT);  //vitesse\n  pinMode(Pindir_a, OUTPUT); //sens\n  pinMode(Pindir_b, OUTPUT); //sens\n  pinMode(on_InfraG, OUTPUT); //transistor\n  pinMode(on_InfraC, OUTPUT); \n  pinMode(on_InfraD, OUTPUT); \n  pinMode(on_Bip, OUTPUT); \n  //capteur optique\n  attachInterrupt (0,test , CHANGE);//patte 2, moteur a\n  attachInterrupt (1,test2 , CHANGE);//patte 3, moteur b\n\n  //sens du moteur\n  //si 0 recule,si 1 avance\n  digitalWrite(Pindir_a, dir_a);\n  //si 1 recule, si 0 avance, c'est l'inverse du A\n  digitalWrite(Pindir_b, dir_b);\n  cli();//stop interrupts\n\n  sei();//allow interrupts\n\n} \n</source>\n\nIci nous concevons la fonction setup qui est ex\u00e9cut\u00e9e une seule fois lors du lancement du robot et donc du programme.\n\nDans cette fonction, nous d\u00e9finissons les entr\u00e9es et sorties (en INPUT et OUTPUT) du module arduino (notamment gr\u00e2ce aux variables d\u00e9finies pr\u00e9c\u00e9demment que nous pouvons proc\u00e9der \u00e0 cette d\u00e9finition. \n\nEnfin, nous configurons certaines boucles d'interruption (cli() et sei() et nous les d\u00e9clarons (attachInterrupt) en fonction des valeurs recueillies dans les capteurs (\"CHANGE\" signifie \"d\u00e8s que la valeur change) et \"test\" est le nom de la fonction \u00e0 ex\u00e9cuter \u00e0 ce moment l\u00e0).\n\n<source lang=c>\nISR(TIMER0_COMPA_vect){//timer1 interrupt 1Hz toggles pin 13 (LED)\n\n  testtimer++;\n  if (testtimer==5000)\n  {\n\n\n\n    if( compteura=anciencompteura){\n      dir_a=1;\n      dir_b=0;\n      analogWrite(pwm_b,200);\n      analogWrite(pwm_a,100);\n      delay(500); \n    }\n  }\n}\n</source>\n\nIci se trouve l'unique boucle d'interruption du programme. Nous pouvons en mettre autant que nous le souhaitons, attention cependant \u00e0 ne pas trop surcharger le programme de boucles d'interruption au risque de ne pas allouer suffisamment de temps \u00e0 la boucle loop de base, que nous verrons plus en dessous.\n\n<source lang=c>\n\nvoid test(){\n  compteura=anciencompteura ;\n  if (dir_a==0){\n    compteura=compteura+1;\n  }\n  else{\n    compteura=compteura-1;\n  }\n\n}\n\nvoid test2(){\n  if (dir_b==1){\n    compteurb=compteurb+1;\n  }\n  else{\n    compteurb=compteurb-1;\n  }\n\n}\n</source>\n\nIci se trouvent donc les boucles d'interruption du programme. \nCelles-ci sont ex\u00e9cut\u00e9es d\u00e8s que la valeur des opto-coupleurs mont\u00e9s sur les moteurs change de valeur. Nous incr\u00e9mentons alors des compteurs qui nous permettent de savoir exactement la distance (ou en tous cas \u00e0 la base la valeur en degr\u00e9 \u00e0 laquelle \u00e0 tourn\u00e9e le moteur) parcouru par les deux moteurs respectivement gr\u00e2ce aux fonctions test et test2.\n\n<source lang=c>\nvoid loop(){\n\n\n  digitalWrite(on_InfraG, 1);\n  digitalWrite(on_InfraC, 1);\n  digitalWrite(on_InfraD, 1);\n  digitalWrite(on_Bip, 0);\n  //afficher les valeurs\n\n\n  val0 = analogRead (analogPin0); // lecture de la broche d'entr\u00e9e0\n  val1 = analogRead (analogPin1); // lecture de la broche d'entr\u00e9e1\n  val2 = analogRead (analogPin2); // lecture de la broche d'entr\u00e9e2  \n  Serial.print(\"val 1 Milieu \");\n  Serial.print(val1); \n  Serial.print(\" val 2  Gauche \");\n  Serial.print(val2);\n  Serial.print(\" val 0 Droite \"); \n  Serial.println(val0); \n\n  /*  Ces lignes servent uniquement \u00e0 des fins de tests lors de la r\u00e9alisation du programme\n\n   Serial.print('m');\n   Serial.println (val0); // debug valeur\n   Serial.print('g'); \n   Serial.println (val1); // debug valeur\n   Serial.print('d');\n   Serial.println (val2); // debug valeur \n   */\n\n  if(val0>=350||val1>=300||val2>=350)\n  {\n\n    dir_a=1;\n    dir_b=0;\n    compteurPositionA=compteurPositionA+compteura;\n    compteurPositionB=compteurPositionB+compteurb;\n    compteura=0;\n    compteurb=0;\n    digitalWrite(Pindir_a, dir_a);\n    digitalWrite(Pindir_b, dir_b);\n    analogWrite(pwm_b,200);\n    analogWrite(pwm_a,100);\n    digitalWrite(on_Bip, 1);\n    delay(500);\n\n  }\n\n  else \n  {\n    analogWrite(pwm_b,200);\n    analogWrite(pwm_a,200);\n    dir_a=0;\n    dir_b=1;\n\n    digitalWrite(Pindir_a, dir_a);\n    digitalWrite(Pindir_b, dir_b);\n    /*    delay(2000); //\n     if( compteura=anciencompteura){\n     dir_a=0;\n     dir_b=0;\n     analogWrite(pwm_b,200);\n     analogWrite(pwm_a,80);\n     delay(500); } */\n  }\n\n}\n</source>\n\nIci se trouve la boucle principale du programme qui sera ex\u00e9cut\u00e9e en boucle lorsque le robot sera en route. De nombreuses choses sont possibles. Voici dans l'ordre ce que nous faisons :\n#Nous allumons les leds infrarouge qui permettent la d\u00e9tection des obstacles. Elles sont situ\u00e9s sur la face avant du robot et sont allum\u00e9s gr\u00e2ce \u00e0 une tension envoy\u00e9s sur les transistors qui les pr\u00e9c\u00e8dent ;\n#Nous allumons un biper, qui \u00e9mettra un son lorsque nous le souhaiterons ;\n#Nous lisons la valeur des capteurs en fa\u00e7ade ;\n#Nous les affichons sur la console de l'ordinateur (lorsque le robot est connect\u00e9 par USB sur l'ordinateur, sert uniquement lors de la phase de test) ;\n#Nous traitons ces valeurs : si elles sont sup\u00e9rieures \u00e0 une certaine valeur (dans le cas o\u00f9 le robot d\u00e9tecte un obstacle, ces valeurs ont \u00e9t\u00e9 test\u00e9es auparavant) alors nous faisons reculer le robot et nous allumons le biper de mani\u00e8re \u00e0 savoir qu'il a d\u00e9tect\u00e9 un obstacle et qu'il recule ; sinon le robot avance.\n\n\n\n=Troisi\u00e8me partie : pr\u00e9d\u00e9finition du parcours du robot=\n\nGrace aux roues codeuses, nous allons d\u00e9sormais coder un programmer qui nous permettra de d\u00e9finir un emplacement de destination au robot et auquel le robot se rendra.\n\n<source lang=c>\nint compteura=0; // position a droite\nint compteurb=0; // position \u00e0 gauche\nint compteurmoy = 0 ;\nint compteurteta = 0 ;\nint compteurdiff =0 ;\nint deltaX = 0 ; // Rajout des X\nint deltaY = 0 ; // Rajout des Y\nint XTotal = 0 ; // Position totale en X\nint YTotal = 0 ; // Position totale en Y\nint i=0;\n\n\nint pwm_a = 3; \n//PWM control for motor outputs 1 and 2 is on digital pin 10 \nint pwm_b = 11; \n//PWM control for motor outputs 3 and 4 is on digital pin 11 \nint Pindir_a = 12;\nint dir_a=0;\n//PWM control for motor outputs 1 and 2 is on digital pin 12 \nint Pindir_b = 13;\nint dir_b=1;\n\nchar nouvellevaleur=0;\n\nvoid test(){\ncompteura=compteura+1;\n}\n\nvoid test2(){\ncompteurb=compteurb+1;\n}\n\n\nISR(TIMER2_COMPA_vect){\n  \n  if(i==50) {\n      i=0;\n      compteurmoy = compteura;//((compteura+compteurb)/8);\n      compteurdiff= compteurb; //(compteura-compteurb)/4;\n      compteura=compteurb=0;\n      deltaX = compteurmoy*cos(compteurteta*100);\n      XTotal = XTotal+deltaX;\n      deltaY = compteurmoy*sin(compteurteta*100);\n      YTotal = YTotal+deltaY;\n      compteurteta=compteurteta+compteurdiff/2;\n      nouvellevaleur=1;\n  }\n  else i++;\n\n}\n\nvoid setup() {\nSerial.begin(115200); // ouvre le port s\u00e9rie, fixe le d\u00e9bit \u00e0 115200 bauds\nattachInterrupt (0,test , CHANGE);//patte 2, moteur a\nattachInterrupt (1,test2 , CHANGE);//patte 3, moteur b\n\n  pinMode(pwm_a, OUTPUT);  //vitesse\n  pinMode(pwm_b, OUTPUT);  //vitesse\n  pinMode(Pindir_a, OUTPUT); //sens\n  pinMode(Pindir_b, OUTPUT); //sens\n   digitalWrite(Pindir_a, dir_a);\n    //si 0 recule,si 1 avance\n    digitalWrite(Pindir_b, dir_b);\n      analogWrite(pwm_b,0);\n      analogWrite(pwm_a,0);\n\n\n// Configuration Timer 2\nTCCR2A=B010;\n// Mode CTC (Clear Timer On Compare)\nOCR2A=700;\n// Registre de comparaison A = 156\nTCCR2B=B111;\n// Prescaler 1024 (Clock/1024)\nTIMSK2=B010;\n// IT Timer2 Quand TCNT2=OCR2A\nsei(); // activation des IT (SREG.7=1\n}\n\nvoid loop()\n{\n  int x,y,t,cm,cd;\n  \nif (nouvellevaleur==1)\n{\nnouvellevaleur=0;\nx=XTotal;\ny=YTotal;\nt=compteurteta;\ncm=compteurmoy;\ncd=compteurdiff;\n\n\nSerial.print(\" X Total :\");\nSerial.print(x);\nSerial.print(\" Y Total :\");\nSerial.print(y);\nSerial.print(\" Compteur Moyen :\");\nSerial.print(cm);\nSerial.print(\" Compteur Diff :\");\nSerial.print(cd);\nSerial.print(\" compteurteta :\");\nSerial.println(t);\n}\n  \n}\n</source>\n\nVoici le programme \"nu\" de d\u00e9tection de position. Il affiche donc sur la console de l'ordinateur la valeur finale de la position en X et en Y. Cette m\u00e9thode de calcul est expliqu\u00e9  [http://manubatbat.free.fr/doc/positionning/node5.html en ligne].\n\nCes informations permettent ensuite de pouvoir modifier la marche de man\u0153uvre du robot, ce qui n'a pas encore \u00e9t\u00e9 effectu\u00e9 de mani\u00e8re totalement op\u00e9rationnelle malgr\u00e9 un essai peu concluant comme suit :\n\n\n<source lang=c>\nint testtimer=0;\n \nint pwm_a = 3; \n//PWM control for motor outputs 1 and 2 is on digital pin 10 \nint pwm_b = 11; \n//PWM control for motor outputs 3 and 4 is on digital pin 11 \nint Pindir_a = 12;\nint dir_a=0;\n//PWM control for motor outputs 1 and 2 is on digital pin 12 \nint Pindir_b = 13;\nint dir_b=1;\n//PWM control for motor outputs 3 and 4 is on digital pin 13 \nint val0=0;//valuer sur1024 de capteur0 de la diode infrarouge\nint val1=0;//valuer sur1024 de capteur1\nint val2=0;//valuer sur1024 de capteur2\nint analogPin0 = 3;//capteur1(droite) broche5\nint analogPin1 = 4;//capteur0(millieu) broche5\nint analogPin2 = 5;//capteur2(gauche) broche5\nint on_InfraD = 9; //transistor droit\nint on_InfraC = 8; //transistor milieu\nint on_InfraG = 7; //transistor gauche\nint on_Bip = 10; //allume le bipper\nint L=23;\n \nint compteura=20;\nint compteurb=20;\nint compteurPositionA=0;\nint compteurPositionB=0;\nint DeltaMoyN = 0 ;\nint DeltaTetaN = 0 ;\nint DeltaDiF=0 ;\nint anciencompteura ;\nchar c;\nint zero;\n\n\n\n\nint compteurmoy = 0 ;\nint compteurteta = 0 ;\nint compteurdiff =0 ;\nint deltaX = 0 ;\nint deltaY = 0 ;\n\n\n \nvoid setup() {\n  Serial.begin(115200);\t// ouvre le port s\u00e9rie, fixe le d\u00e9bit \u00e0 115200 bauds\n \n  pinMode(pwm_a, OUTPUT);  //vitesse\n  pinMode(pwm_b, OUTPUT);  //vitesse\n  pinMode(Pindir_a, OUTPUT); //sens\n  pinMode(Pindir_b, OUTPUT); //sens\n  pinMode(on_InfraG, OUTPUT); //transistor\n  pinMode(on_InfraC, OUTPUT); \n  pinMode(on_InfraD, OUTPUT); \n  pinMode(on_Bip, OUTPUT); \n  //capteur optique\n  attachInterrupt (0,test , CHANGE);//patte 2, moteur a\n  attachInterrupt (1,test2 , CHANGE);//patte 3, moteur b\n \n  //sens du moteur\n  //si 0 recule,si 1 avance\n  digitalWrite(Pindir_a, dir_a);\n  //si 0 recule,si 1 avance\n  digitalWrite(Pindir_b, dir_b);\n  cli();//stop interrupts\n \n   // Configuration Timer 2\n  TCCR2A=B010;\n  // Mode CTC (Clear Timer On Compare)\n  OCR2A=700;\n  // Registre de comparaison A = 156\n  TCCR2B=B111;\n  // Prescaler 1024 (Clock/1024)\n  TIMSK2=B010;\n  // IT Timer2 Quand TCNT2=OCR2A\n\n  sei();//allow interrupts\n \n} \nISR(TIMER0_COMPA_vect){//timer1 interrupt 1Hz toggles pin 13 (LED)\n \n  testtimer++;\n  if (testtimer==5000)\n  {\n \n \n \n    if( compteura=anciencompteura){\n      dir_a=1;\n      dir_b=0;\n      analogWrite(pwm_b,200);\n      analogWrite(pwm_a,100);\n      delay(500); \n    }\n  }\n}\n\nISR(TIMER2_COMPA_vect){\n       Serial.print(\"a = \");     \n       Serial.print(compteura); \n       Serial.print(\" b = \");\n       Serial.println(compteurb);\n       compteurmoy = ((compteura+compteurb)/2);\n       compteurdiff= compteura-compteurb;\n       deltaX = compteurmoy*cos(compteurteta) ;\n       deltaY = compteurmoy*sin(compteurteta) ;\n       compteurteta=compteurdiff/20 ;\n       Serial.print(deltaX);\n       Serial.print(\"deltaX\");\n       Serial.print(deltaY);\n       Serial.print(\"deltaY\");\n       Serial.print(compteurmoy);\n       Serial.print(\"compteurmoy\");\n       Serial.print(compteurteta);\n       Serial.println(\"compteurteta\");\n}\n \n \nvoid test(){\n  compteura=anciencompteura ;\n  if (dir_a==0){\n    compteura=compteura+1;\n  }\n  else{\n    compteura=compteura-1;\n  }\n \n}\n \nvoid test2(){\n  if (dir_b==1){\n    compteurb=compteurb+1;\n  }\n  else{\n    compteurb=compteurb-1;\n  }\n \n}\n \nvoid loop(){\n \n \n  digitalWrite(on_InfraG, 1);\n  digitalWrite(on_InfraC, 1);\n  digitalWrite(on_InfraD, 1);\n  digitalWrite(on_Bip, 0);\n  //afficher les valeurs\n \n \n  val0 = analogRead (analogPin0); // lecture de la broche d'entr\u00e9e0\n  val1 = analogRead (analogPin1); // lecture de la broche d'entr\u00e9e1\n  val2 = analogRead (analogPin2); // lecture de la broche d'entr\u00e9e2  \n  Serial.print(\"val 1 Milieu \");\n  Serial.print(val1); \n  Serial.print(\" val 2  Gauche \");\n  Serial.print(val2);\n  Serial.print(\" val 0 Droite \"); \n  Serial.println(val0); \n  /*   Serial.print('m');\n   Serial.println (val0); // debug valeur\n   Serial.print('g'); \n   Serial.println (val1); // debug valeur\n   Serial.print('d');\n   Serial.println (val2); // debug valeur \n   */\n \n  if(val0>=350||val1>=300||val2>=350)\n  {\n \n    dir_a=1;\n    dir_b=0;\n    compteurPositionA=compteurPositionA+compteura;\n    compteurPositionB=compteurPositionB+compteurb;\n    compteura=0;\n    compteurb=0;\n    digitalWrite(Pindir_a, dir_a);\n    digitalWrite(Pindir_b, dir_b);\n    analogWrite(pwm_b,200);\n    analogWrite(pwm_a,100);\n    digitalWrite(on_Bip, 1);\n    delay(500);\n \n  }\n \n  else \n  {\n    analogWrite(pwm_b,200);\n    analogWrite(pwm_a,200);\n    dir_a=0;\n    dir_b=1;\n \n    digitalWrite(Pindir_a, dir_a);\n    digitalWrite(Pindir_b, dir_b);\n  }\n  \n  \n  if(compteurteta >= 0) \n  {\n        analogWrite(pwm_b,200);\n        analogWrite(pwm_a,255);\n        delay(100);\n  }\n else if(compteurteta >= 0)\n  {\n       analogWrite(pwm_b,255);\n    analogWrite(pwm_a,200);\n    delay(100);\n  } \n}\n</source>"
                    }
                ]
            },
            "2129": {
                "pageid": 2129,
                "ns": 0,
                "title": "Robot2 1",
                "revisions": [
                    {
                        "contentformat": "text/x-wiki",
                        "contentmodel": "wikitext",
                        "*": "[[Cat\u00e9gorie:Projets]]\n\n\n\n=Pr\u00e9sentation du projet=\n=COUCOU C\u00e9cile=\n[[Fichier:tondeuse.jpg|500px||turbo tondeuse]]\n\nLe but de ce projet est de concevoir un robot tondeuse autonome. <br />\n\n\n\n\n[[Fichier:Fil-pilote.gif|500px||signaux de commande]]\n[[Fichier:Fil pilote principe.jpg|500px||principe d'une commande par fil pilote]]\n\n  \n\n\n=={{Bleu|Objectif}}==\n\nLe projet consiste \u00e0 fabriquer un robot capable d'envoyer des balles de l'autre cot\u00e9 du terrain le plus rapidement possible. <br />\n\nAvant la fin du temps imparti (90s), le robot doit \u00e9clater un ballon qui est positionn\u00e9 sur lui tout en restant immobile. <br />\n\n\n=={{Bleu|D\u00e9coupage fonctionnel}}==\n\n[[Fichier:Decodeur fil pilote fonctions.jpg|800px||d\u00e9coupage fonctionnel]]\n\n=={{Bleu|Contraintes de fabrication}}==\n\nLes principales contraintes sont dues aux r\u00e8gles de la comp\u00e9tition.<br />\n\nLe robot doit \u00eatre dimensionn\u00e9 selon 30x30x40cm.<br /> \n\nLa batterie doit \u00eatre en lithium Li-ion.<br />\n\nAucune tension sur le robot ne doit d\u00e9passer 24V. <br />\n\nLes dimensions du terrain sont donn\u00e9es sur ce sch\u00e9ma : <br/>\n\n[[Fichier:Sch\u00e9ma du terrain.png|vignette]]\n\n\n\n\n\n\n\n\n=={{Bleu|Objectif}}==\n\nL'objectif sera bien \u00e9videmment de terminer le projet de sorte qu'il r\u00e9ponde au cahier des charges d\u00e9crit pr\u00e9c\u00e9demment.\n\nPour ce faire, il conviendra de :\n\n- '''rechercher''' des solutions \u00e0 partir du sch\u00e9ma fonctionnel fourni ( sch\u00e9ma \u00e9lectronique et composants ) <br />\n- '''dimensionner''' les composants utilis\u00e9s <br />\n- '''tester''' les diff\u00e9rents blocs fonctionnels <br />\n- '''programmer''' les composants <br />\n- '''valider''' le fonctionnement <br />"
                    }
                ]
            }
        }
    }
}