Aller au contenu


Photo
- - - - -

Mon premier robot


  • Veuillez vous connecter pour répondre
55 réponses à ce sujet

#41 seb03000

seb03000

    @pump_upp - best crypto pumps on telegram !

  • Membres
  • PipPipPipPipPip
  • 1 193 messages
  • Location:https://t.me/pump_upp

Posté 20 janvier 2012 - 11:19

Déjà ya une petite erreur .

for(i=5;i<=8;i++)

Là ça ne va pas, i commence à 5 donc, le pin 4 n'est pas pris en compte, et tu mes le pin 8 en sortie car 'i<=8 ' ce qui ne

correspond pas à ton commentaire.

Actuellement donc, les pin en sortie sont 5,6,7,8.

Donc à remplacer par:

for(int i=4;i<8;i++)


#42 benano

benano

    Membre

  • Membres
  • 46 messages

Posté 21 janvier 2012 - 08:51

C'est remplacé mais je coince la.

#43 benano

benano

    Membre

  • Membres
  • 46 messages

Posté 21 janvier 2012 - 05:34

J'en suis venu à la conclusion que mes moteurs génèrent sûrement des parasites et j'ai acheté des condensateurs je soude ça dans la soirée et je vous tient au courent a+

#44 seb03000

seb03000

    @pump_upp - best crypto pumps on telegram !

  • Membres
  • PipPipPipPipPip
  • 1 193 messages
  • Location:https://t.me/pump_upp

Posté 21 janvier 2012 - 07:13

Bonne déduction benano je pense que ton problème viendrait de c'est parasite.

Dalleur ça mes arrivé la même chose sur mon robot c'été bien des parasites.

#45 benano

benano

    Membre

  • Membres
  • 46 messages

Posté 21 janvier 2012 - 09:34

Bien qu'ayant réduit les parasites j'en ai encore et impossible d'utiliser mes microrupteurs. Il n'existe pas quelque chose en codage pour n'activer la condition seulement si la variable reste sur 1 une seconde histoire de skip les mini parasites

EDIT: En gros je cherche une commande voulant dire

Si le circuit est égal à 1 PENDANT 1 demi seconde

fait ca

#46 swolf

swolf

    Membre chevronné

  • Membres
  • PipPipPipPip
  • 626 messages
  • Gender:Male

Posté 22 janvier 2012 - 01:09

salut
tu peux peut etre tenter un truc du style
int tps=millis();
if interrupt=HIGH {
   while tps <= 1000 {
       if interrupt = HIGH {
           //... on fait rien
       }
       else if interrupt = LOW {
            break();
       }
    }
}

p-s: code tapé depuis mon portable donc il y a peut-être des erreurs dans les mots clés et je n'ai pas pu tester son bon fonctionnement... dis-moi si ça marche
Notre blog, à FJprod et moi: http://2froblog.wordpress.com/

#47 benano

benano

    Membre

  • Membres
  • 46 messages

Posté 22 janvier 2012 - 12:28

Je comprend pas bien ta façon de syntaxe le code je teste ca tout de suite

#48 benano

benano

    Membre

  • Membres
  • 46 messages

Posté 22 janvier 2012 - 12:37

int tps=millis();
if (digitalRead(updd1) ==HIGH) 
{
   while (tps <= 1000) {
       if (digitalRead(updd1) ==HIGH) {
           digitalWrite(13,HIGH);
           delay(2000);//... on fait rien
       }
       else if (digitalRead(updd1) == LOW) 
       {
           digitalWrite(13,LOW);
       }
    }
}

J'ai essayer de réécrire pour que ça compile mais je ne vois pas de changement car même si j'appuie instantanément sur le capteur la led s'allume.
Ce que je cherche c'est quelque chose qui ne valide la condition que si le circuit reste ouvert X secondes

#49 swolf

swolf

    Membre chevronné

  • Membres
  • PipPipPipPip
  • 626 messages
  • Gender:Male

Posté 22 janvier 2012 - 01:09

salut
nan en fait ce que je te disais c'est de faire (pseudo code):

si l'interrupteur est appuyé
	on déclenche le chrono
	tant que le chrono n'a pas atteint le temps min
		si l'interrupteur est toujours enclenché,
			on ne fait rien, on continue la boucle
		sinon si l'interrupteur est relaché avant la fin du temps 
			on sort de l 	boucle et on continue le programme
		fin si
	fin tant que
fin si


d'ailleurs je m'était trompé dans mon code, le tps=millis() va dans la condition, comme ceci:

if interrupt=HIGH {
int tps=millis();   while tps <= 1000 {
   	if interrupt = HIGH {
   		//... on fait rien
   	}
   	else if interrupt = LOW {
            break();
   	}
    }
}


toi ce que tu as fait c'est:
on démarre le chrono
si l'interrupteur est enclenché
    tant que le temps min n'est pas atteint
        si l'interrupteur est toujours enclenché
            on allume la led (c'est là que se trouve l'erreur: la LED va s'allumer avant la fin de ton temps min)
            on attend 2sec
        sinon si l'interrupteur se ferme
            on éteint la LED
        fin si
    fin tant que
fin si

Notre blog, à FJprod et moi: http://2froblog.wordpress.com/

#50 benano

benano

    Membre

  • Membres
  • 46 messages

Posté 22 janvier 2012 - 01:15

Mais ou j'allume ma led du coup ?

#51 swolf

swolf

    Membre chevronné

  • Membres
  • PipPipPipPip
  • 626 messages
  • Gender:Male

Posté 22 janvier 2012 - 01:48

ben euh... :P
tu peux faire un truc du genre
if interrupt=HIGH {
   int tps=millis();
   int var = 0;
   while tps <= 1000 {
        if interrupt = HIGH {
                var=1;
        }
        else if interrupt = LOW {
	    var = 0;
            break();
        }
    }
    if var =1 {
	digitalWrite(13, HIGH);
    }
}

Notre blog, à FJprod et moi: http://2froblog.wordpress.com/

#52 benano

benano

    Membre

  • Membres
  • 46 messages

Posté 22 janvier 2012 - 02:01

J'arrive pas à compiler.
PS: désolé de paraître chi....... mais des fois j'ai du mal à comprendre:par exemple tu mets jamais de parenthèses sur tes conditions,why ?

#53 swolf

swolf

    Membre chevronné

  • Membres
  • PipPipPipPip
  • 626 messages
  • Gender:Male

Posté 22 janvier 2012 - 02:31

oui désolé comme j'ecris depuis mon portable j'oublie plein de trucs...
t'as raison il manque les parentheses et je sais plus si c'est else if ou elseif...
mais normalement dans la structure ça devrait marcher. essaye de corriger ces erreurs de syntaxes pour voir si ça marche et sinon je te referais le code propre quand j'aurais acces à mon ordi :-S

p-s: encore désolé pour les erreurs
Notre blog, à FJprod et moi: http://2froblog.wordpress.com/

#54 benano

benano

    Membre

  • Membres
  • 46 messages

Posté 22 janvier 2012 - 02:36

Je l'ai corriger et tu n'as pas à t'excuser tu m'aides quand même=
Mais même en corrigeant la syntaxe la led ne s'allume jamais XD

#55 swolf

swolf

    Membre chevronné

  • Membres
  • PipPipPipPip
  • 626 messages
  • Gender:Male

Posté 22 janvier 2012 - 02:48

je comprends pas ou ça bloque...
je testerais quand j'aurais acces a la arduino...
Notre blog, à FJprod et moi: http://2froblog.wordpress.com/

#56 seb03000

seb03000

    @pump_upp - best crypto pumps on telegram !

  • Membres
  • PipPipPipPipPip
  • 1 193 messages
  • Location:https://t.me/pump_upp

Posté 22 janvier 2012 - 08:21

benano.

Donc j'ai repris ton code , et je les compilé avec le morceau de code de swolf J'ai fait quelque modife , j'ai lancé le

programme est ça me trouve aucune erreur , donc ça doit être bon.

Aisé cette compile que j'ai fait , et tien nous au-courent .

#include <Servo.h>

 int vitesse1 = 6;
 int vitesse2 = 5;
 int direction1 = 7;
 int direction2 = 4;

 int LED = 13;
 int updd1 = 8;
 int updd2 = 9;

 Servo myservo;  // crÈer un objet de servo pour contrÙler un servomoteur
 void Moteur1 (int valeur_vitesse, boolean sens_avant)
{
 analogWrite(vitesse1,valeur_vitesse);  //vitesse 0 ‡ l'arrÍt et 255 ‡ fond
 if(sens_avant)
{
 digitalWrite(direction1,HIGH);
}
 else
{
 digitalWrite(direction1,LOW);
}

}

 void Moteur2(int valeur_vitesse, boolean sens_avant)

{  
 analogWrite(vitesse2,valeur_vitesse);
 if(sens_avant)
{
 digitalWrite(direction2,HIGH);
}
 else
{
 digitalWrite(direction2,LOW);
}
 }

void setup() 
{ 

myservo.attach(2);
int i; 
for(int i=4;i<8;i++) 
pinMode(i, OUTPUT); //met les pin 4,5,6,7 en mode sortie 
pinMode(LED, OUTPUT);
pinMode(13, OUTPUT);
pinMode(updd1, INPUT);  
pinMode(updd2, INPUT);
} 

void loop()
{  
 if (LED=HIGH); 
{
 int tps=millis();
 int var = 0;
 while (tps <= 1000) ;
 Moteur1(100,false);
 Moteur2(100,true);
 delay(850);
 Moteur1(100,false);
 Moteur2(100,false);
 delay(700);
 {
 if (LED = HIGH) 
{
 var=1;
 Moteur1(100,false);
 Moteur2(100,true);
 delay(850);
 Moteur1(100,false);
 Moteur2(100,false);
 delay(700);
}
 else if (LED = LOW)
{
 var = 0;
 Moteur1(100,true);
 Moteur2(100,false);
}
}
 if (var =1)
{
 digitalWrite(LED, HIGH);  
 Moteur1(100,true);
 Moteur2(100,false);
}
 }
  }





0 utilisateur(s) li(sen)t ce sujet

0 members, 0 guests, 0 anonymous users