Aller au contenu


Photo
- - - - -

PPE recharge autonome


194 réponses à ce sujet

#81 hmnrobots

hmnrobots

    Habitué

  • Membres
  • PipPip
  • 316 messages
  • Gender:Male
  • Location:Périphérie Nantes

Posté 27 avril 2012 - 08:54

pardon j'aurais du préciser : c'est une "fonction" ou une variable ?

boolean : c le type de variable logique 0 (faux) ou 1 (vrai)
Faire simple, c'est déjà bien assez compliqué!
http://hmnrobots.blogspot.fr/

#82 swolf

swolf

    Membre passionné

  • Membres
  • PipPipPip
  • 626 messages
  • Gender:Male

Posté 28 avril 2012 - 03:56

Salut!
tout d'abord merci pour ces réponses!

signe == à la place je pense

manque quelques ; aussi

bon sinon tu déclare deux fois etatcapteurT1 je suppose que le deuxième c'est T2 ^^

Très juste, merci!

tout part donc de cette valeur.
sur les PIC, en C CCS une entrée au niveau haut renvoie un 1 ou 0 c'est pourquoi j'avais proposé cette formule.Dans la référence Arduino je n'arrive pas à trouver la preuve (même si je le crois) que HIGH = 1 et que LOW = 0

si effectivement HIGH=1 alors la formule doit fonctionner, la conversion de type boolean 2 vers byte étant (pour moi) automatique

sinon plusieurs méthodes simples:
-conversion de type avec la fonction byte
-modif de la formule par ex : dirBalise =2*(etatCapteurT1==HIGH) + (etatCapteurT2==HIGH) ça marche en C l'opérateur == renvoie 1 ou 0
-création d'une fonction car je ne crois pas qu'elle existe dans la Lib Arduino iif : iif(test,valeur si vrai,valeur si faux) la formule devient alors :dirBalise= 2*iif(etatCapteurT1==HIGH,1,0) + iif(etatCapteurT2==HIGH,1,0)
on peut certainement faire plus compliqué!

D'après ce que j'ai lu, on peut lire l'état d'un bit sans passer par les constantes HIGH LOW grâce à la fonction bitRead() directement sur le port du ATmega comme ceci : bitRead(PORTD, pin)
(sources: http://stackoverflow...-pinmode-output et http://www.playardui...-votre-arduino/)
Ainsi on a non plus une constante booléenne mais un byte ou int sur lequel on peut appliquer la formule de base (en théorie, il faudra que j'essaye). Sinon j'utiliserai une de tes solutions!

A quoi sert le pinCapteurCone ?

Il sert à détecter la présence de la balise à proximité: dès qu'on sait que la balise se trouve quelque part dans un cercle de rayon n autour du robot, celui-ci tourne sur lui-même pour en trouver la direction à l'aide du "T"

A quoi sert le pinCapteurCone ?

Le switch peut gérer les 4 cas :
0:mode recherche
1:droite
2:gauche
3:devant

c'est vrai que c'est inutile de mettre un switch dans une condition, autant faire rentrer cette condition dans le switch ^^ je peux même y mettre le else en default:... merci :)

ensuite A0 c'est quoi ? idem pour A1 et A2

ce sont les entrées analogiques de la arduino (plus exactement les entrées du CAN de la arduino ;))

bon après void loop je suis un peu perdu ( je ne sais même pas ce que ça veut dire x) )

Void loop c'est la fonction principale du programme en arduino, un peu comme le main sauf que, comme son nom l'indique, elle est exécutée en boucle. Pour la suite je respecte à la lettre l'algo (en pj du premier post). Si tu veux je pourrais commenter le code

Bon courage pour la suite swolf ! public/style_emoticons/default/wink.gif

Merci! :)

boolean : c le type de variable logique 0 (faux) ou 1 (vrai)

Absolument! ;)

Je ferai une m-à-j du code prenant en compte vos corrections edit: ça y est c'est modifié :)
Notre blog, à FJprod et moi: http://2froblog.wordpress.com/

#83 hmnrobots

hmnrobots

    Habitué

  • Membres
  • PipPip
  • 316 messages
  • Gender:Male
  • Location:Périphérie Nantes

Posté 28 avril 2012 - 06:43

Et alors ça marche?
Faire simple, c'est déjà bien assez compliqué!
http://hmnrobots.blogspot.fr/

#84 swolf

swolf

    Membre passionné

  • Membres
  • PipPipPip
  • 626 messages
  • Gender:Male

Posté 28 avril 2012 - 07:51

Je sais pas j'ai pas pu tester, j'ai aucun materiel sous la main ^^ je fais les essais dès que je peux
Notre blog, à FJprod et moi: http://2froblog.wordpress.com/

#85 hmnrobots

hmnrobots

    Habitué

  • Membres
  • PipPip
  • 316 messages
  • Gender:Male
  • Location:Périphérie Nantes

Posté 28 avril 2012 - 08:14

Je sais pas j'ai pas pu tester, j'ai aucun materiel sous la main ^^ je fais les essais dès que je peux

tu n'utilises pas le simulateur ?
Faire simple, c'est déjà bien assez compliqué!
http://hmnrobots.blogspot.fr/

#86 swolf

swolf

    Membre passionné

  • Membres
  • PipPipPip
  • 626 messages
  • Gender:Male

Posté 28 avril 2012 - 08:20

Proteus? Je pourrais en théorie mais comme on peut pas simuler des capteurs et pis qu'il faudrait que je compile mon programme pour le mettre dans un ATmega virtuel bref toute une galere :P donc je prefere les tester en "vrai" (et pi c'est plus marrant ;))
Notre blog, à FJprod et moi: http://2froblog.wordpress.com/

#87 hmnrobots

hmnrobots

    Habitué

  • Membres
  • PipPip
  • 316 messages
  • Gender:Male
  • Location:Périphérie Nantes

Posté 28 avril 2012 - 08:43

Proteus? Je pourrais en théorie mais comme on peut pas simuler des capteurs et pis qu'il faudrait que je compile mon programme pour le mettre dans un ATmega virtuel bref toute une galere :P donc je prefere les tester en "vrai" (et pi c'est plus marrant ;))

je ne connais pas bien les possibilité de Proteus (je ne l'ai pas depuis longtemps!) mais j'ai vu qu'il existe d'autres outils comme celui ci
je ne sais pas ce que ça vaut
Faire simple, c'est déjà bien assez compliqué!
http://hmnrobots.blogspot.fr/

#88 swolf

swolf

    Membre passionné

  • Membres
  • PipPipPip
  • 626 messages
  • Gender:Male

Posté 28 avril 2012 - 10:31

J'avais testé virtual breadboard mais il est payant et sa version d'essai ne marche pas :/
Notre blog, à FJprod et moi: http://2froblog.wordpress.com/

#89 Francky

Francky

    Membre passionné

  • Membres
  • PipPipPip
  • 967 messages
  • Gender:Male

Posté 29 avril 2012 - 09:54

Proteus? Je pourrais en théorie mais comme on peut pas simuler des capteurs et pis qu'il faudrait que je compile mon programme pour le mettre dans un ATmega virtuel bref toute une galere donc je prefere les tester en "vrai" (et pi c'est plus marrant )

Perso j'ai même pas trouvé comment insérer un pic xD
Sinon pour les capteurs tu peux mettre des switchs. Mais bon c'est sûr c'est moins fun que les vrais tests :P

#90 swolf

swolf

    Membre passionné

  • Membres
  • PipPipPip
  • 626 messages
  • Gender:Male

Posté 29 avril 2012 - 07:03

Pour le PIC si tu veux je t'explique par mp peut-être qu'après le bac je ferais un petit tuto dessus (un truc vraiment rapide pour les bases...)
Sinon pour les tests p-ê que si on était au début des vacances j'aurai fait une simu mais j'aurais bientôt le matériel sous la main donc je peux attendre ;)
Notre blog, à FJprod et moi: http://2froblog.wordpress.com/

#91 swolf

swolf

    Membre passionné

  • Membres
  • PipPipPip
  • 626 messages
  • Gender:Male

Posté 29 avril 2012 - 07:22

Salut
Je poste le code pour la partie déplacement "normal" du robot, c'est à dire uniquement la partie évitement d'obstacles:
int E2 = 6; //pin Enable moteur 1  
int M2 = 7; //pin PWM moteur 1
int E1 = 5; //pin Enable moteur 1      
int M1 = 4; //pin PWM moteur 1
int dist = 0; //distance de l'obstacle
float sharpVoltage[] = { 3.01, 2.71, 2.33, 2, 1.77, 1.56, 1.4, 1.25, 1.04, 0.92, 0.8, 0.76, 0.65, 0.51, 0.41, 0.49, 0.3 }; //mesures réalisées grace au graph constructeur
int sharpCms[] = { 3, 4, 5, 6, 7, 8, 9, 10, 12, 14, 16, 18, 20, 25, 30, 35, 40 }; //mesures réalisées grace au graph constructeur
int valC = 0; //valeur moyennée
int avg = 7; //nombre d'échantillons de mesure
int s=0; //variable flip flop
int i=0; //variable de boucle

//============================================================================================================================================================

void setup() 
{ 
    pinMode(M1, OUTPUT); //définit le pin moteur 1 en sortie
    pinMode(M2, OUTPUT); //définit le pin moteur 2 en sortie
    Serial.begin(9600); //initialisation de la fréquence de transmission (en baud) -pour le débuggage-
} 
void loop() //boucle principale (comportement du robot)
{ 
  int dist=lecture_distance(); //on récupère la distance de l'obstacle
  
  if (dist<15 && dist!=0) { //si un obstacle est détecté à moins de 15cm
    arret(); //on s'arrete
    reculer(150); //on recule à vitesse moyenne
    delay(900); //pendant 900ms
    
    //on tourne à gauche ou à droite selon la direction précedente
    if (s=0) {
      droite(255);
      s=1;
    }
    else if (s=1) {
      gauche(255);
      s=0;
    }
    
    delay(1000); //pendant 1s
  }
  else { //sinon (si pas d'obstacle)
    avancer (230); //on continue d'avancer
  }
}

//============================================================================================================================================================

void avancer(int vitesse) { //fonction avancer: les deux moteurs à la vitesse donnée dans le sens avant
    digitalWrite(M1, HIGH);    
    digitalWrite(M2, HIGH);   	
    analogWrite(E1, vitesse);   
    analogWrite(E2, vitesse);
}
void reculer(int vitesse) { //fonction reculer: les deux moteurs à la vitesse donnée dans le sens arriere
    digitalWrite(M1, LOW); 
    digitalWrite(M2, LOW);   	
    analogWrite(E1, vitesse);    
    analogWrite(E2, vitesse);
}
void droite(int vitesse) { //fonction tourner à droite: le moteur droit à la vitesse donnée dans le sens avant et l'autre dans le sens arriere
 	analogWrite (E1,vitesse); 
 	digitalWrite(M2,LOW);     	
 	analogWrite (E2,vitesse);     	
 	digitalWrite(M1,HIGH); 
}
void gauche(int vitesse) { //fonction tourner à gauche: le moteur gauche à la vitesse donnée dans le sens avant et l'autre dans le sens arriere
 	analogWrite (E1,vitesse); 
 	digitalWrite(M1,LOW);     	
 	analogWrite (E2,vitesse);     	
 	digitalWrite(M2,HIGH); 
}
void arret() { //fonction arret: les deux moteurs en arret
    digitalWrite(E1, LOW);
    digitalWrite(E2, LOW);
}

//============================================================================================================================================================

float lectureTension(){ //récupération de la valeur analogique du capteur, puis conversion en tension
 int valeur = analogRead(A0); //récupération de la valeur analogique du capteur
 // Convertit la lecture en tension
 float tension = valeur * 5.0;
 tension /= 1024.0; 
 
 return tension; //renvoi la tension du capteur
}


int distance_l(){ //fonction de corrélation distance/tension à partir du graph constructeur
  float tension = lectureTension();
  // si tension inférieure à 0.3v on est soit très loin, soit très près
  // Donc la distance est considérée comme inconnue
  if( tension < 0.3 )
    return -1;
  // Localiser la position dans le tableau OU la tension
  // lue sur le senseur est plus grande que la valeur du tableau
  // de référence
  int index = 0;
  while( sharpVoltage[index] > tension ){
    index++;
    // Si on sort du tableau, la distance est inconnue!
    if( index == 17 )
      return -1;
  }
  return sharpCms[index]; // renvoi la distance en cm
}
int lecture_distance() {
  float tension = lectureTension(); //on lit la tension du capteur grace à la préce=édente fonction
  int distance = distance_l(); //on la fait correspondre à une distance en cm
  for (i=1;i<avg;i++){
   float tension = lectureTension();
   int distance = distance_l();
   valC += distance; //on fait la somme de plusieurs échantillons de mesures
  }
  valC/=avg; //puis la moyenne
  if (valC<3) { //on élimine les "déchets"
    valC=0;
  }
  return valC; //et on renvoie la valeur moyennée
}


Dites moi-ce que vous en pensez!
Notre blog, à FJprod et moi: http://2froblog.wordpress.com/

#92 swolf

swolf

    Membre passionné

  • Membres
  • PipPipPip
  • 626 messages
  • Gender:Male

Posté 29 avril 2012 - 08:35

Re salut ;)
Bon quelques média pour pimenter:
différentes vues du "T":
Fichier joint  20120429-205810.bmp   900,05 Ko   503 téléchargement(s)


Fichier joint  20120429-205806.bmp   900,05 Ko   466 téléchargement(s)


Fichier joint  20120429-205802.bmp   900,05 Ko   460 téléchargement(s)


Fichier joint  20120429-205753.bmp   900,05 Ko   462 téléchargement(s)


à propos j'ai une question: j'ai mit pendant le collage un petit peu de colle (cyanuroacrylate) sur les capteurs IR (tsop4838)... Je voudrais essayer de l'enlever pour pas que ça empêche ou détériore la réception; j'ai vu que l'ammoniaque (ou bien le

détach glu)

permettait de bien enlever la colle et je pensais en passer sur le tsop avec un coton-tige mais j'ai peur que l'ammoniaque abîme le capteur... Qu'est ce que vous en pensez? (je sais, c'est pas très courant :P)


petite vidéo des premiers pas du robot (là c'est juste une séquence programmée, j'ai pas le télémètre chez moi):
Fichier joint  P1030256.MOV   33,37 Mo   502 téléchargement(s)


EDIT: j'avais pas vu que les photos étaient en bmp, ça vous embête? :/ pour la vidéo j’essayerai de la mettre sur youtube
Notre blog, à FJprod et moi: http://2froblog.wordpress.com/

#93 Francky

Francky

    Membre passionné

  • Membres
  • PipPipPip
  • 967 messages
  • Gender:Male

Posté 29 avril 2012 - 09:30

Pour le PIC si tu veux je t'explique par mp peut-être qu'après le bac je ferais un petit tuto dessus (un truc vraiment rapide pour les bases...)
Sinon pour les tests p-ê que si on était au début des vacances j'aurai fait une simu mais j'aurais bientôt le matériel sous la main donc je peux attendre

J'avoue que ça m'intéresse merci ! ^^ (mais bon fais ça quand t'as du temps ça urge pas ;))

PS : ça a de la gueule ! :P

#94 swolf

swolf

    Membre passionné

  • Membres
  • PipPipPip
  • 626 messages
  • Gender:Male

Posté 29 avril 2012 - 11:15

PS : ça a de la gueule ! :P


Merci! :)
pour isis je t'ai mp ;)
Notre blog, à FJprod et moi: http://2froblog.wordpress.com/

#95 Francky

Francky

    Membre passionné

  • Membres
  • PipPipPip
  • 967 messages
  • Gender:Male

Posté 30 avril 2012 - 06:42

Merci!
pour isis je t'ai mp

Oui j'ai vu, merci encore ^^

Alors tu as pu procéder aux tests aujourd'hui ? (ou alors t'es encore en vacances ^^).

#96 swolf

swolf

    Membre passionné

  • Membres
  • PipPipPip
  • 626 messages
  • Gender:Male

Posté 30 avril 2012 - 06:45

si en fait j'ai pu récupérer mes composants (dont le sharp qui me manquait cruellement ;)) mais pas encore programmer le PIC, je pense pouvoir le faire mercredi. comme demain c'est férié je vais essayer de tester la partie déplacement en évitant les obstacles (en fait j(a juste à brancher le sharp, c'est pas trop compliqué ^^)
Notre blog, à FJprod et moi: http://2froblog.wordpress.com/

#97 Francky

Francky

    Membre passionné

  • Membres
  • PipPipPip
  • 967 messages
  • Gender:Male

Posté 30 avril 2012 - 08:31

Ok ^^
Je crois qu'on a nos heures de TP les mêmes jours XD

#98 swolf

swolf

    Membre passionné

  • Membres
  • PipPipPip
  • 626 messages
  • Gender:Male

Posté 05 mai 2012 - 01:20

Bon des nouvelles:
j'ai programmé le PIC et testé le programme: ça marche mais on a un fréquence de 39kHz et des poussières et comme j'ai entendu que le 4838 était capricieux au niveau fréquence, je ne pense pas que ça va marcher... Heureusement, je me suis rendu compte que le pic16f88 avait un module PWM (ccp1) qui pourrait me permettre d'avoir mon signal précisément!
du coup j'ai refait le programme, il faudra que je le reflash pour tester. J'ai pas pu le simuler sous ISIS car mon compilateur .hex de Flowcode ne marche pas et MikroC me dit que le 16f88 n'a pas de module PWM (?). J'attends donc d'être au lycée pour faire tous les tests (à moins qu'un robot-maker soit assez gentil pour répondre ici Image IPB)
algo complet v2.JPG


Pour le capteur de suivi de ligne vous pouvez voir ici que je rencontre pas mal de soucis Image IPB donc je vais faire un dernier essai grâce au lien de hmnrobots et si ça ne marche pas je pense que j’achèterai le capteur suivi de ligne de lextronic... (sacrilège!)
Pour ce qui est du robot lui même, j'ai cramé un diode des régulateurs en me trompant de sens de branchement (shame on me) mais apparemment le lycée peut la changer!
Bref je pense qu'on est maudits parce que rien ne marche (même le programmateur de PIC du lycée avait des problèmes...) mais nous sommes dans une phase on on progresse pas mal (malgré les dieux cruels qui tentent d'empêcher notre mission).
Notre blog, à FJprod et moi: http://2froblog.wordpress.com/

#99 Mike118

Mike118

    Staff Robot Maker

  • Administrateur
  • PipPipPipPipPip
  • 10 165 messages
  • Gender:Male
  • Location:Anglet
  • Interests:Robotique, Entrepreneuriat, Innovation, Programmation, Résolution de problème, Recherche de solutions, Mécanique, Electronique, Créer, Concevoir

Posté 05 mai 2012 - 01:26

Bon des nouvelles:
j'ai programmé le PIC et testé le programme: ça marche mais on a un fréquence de 39kHz et des poussières et comme j'ai entendu que le 4838 était capricieux au niveau fréquence, je ne pense pas que ça va marcher... Heureusement, je me suis rendu compte que le pic16f88 avait un module PWM (ccp1) qui pourrait me permettre d'avoir mon signal précisément!
du coup j'ai refait le programme, il faudra que je le reflash pour tester. J'ai pas pu le simuler sous ISIS car mon compilateur .hex de Flowcode ne marche pas et MikroC me dit que le 16f88 n'a pas de module PWM (?). J'attends donc d'être au lycée pour faire tous les tests (à moins qu'un robot-maker soit assez gentil pour répondre ici Image IPB)
algo complet v2.JPG


Pour le capteur de suivi de ligne vous pouvez voir ici que je rencontre pas mal de soucis Image IPB donc je vais faire un dernier essai grâce au lien de hmnrobots et si ça ne marche pas je pense que j’achèterai le capteur suivi de ligne de lextronic... (sacrilège!)
Pour ce qui est du robot lui même, j'ai cramé un diode des régulateurs en me trompant de sens de branchement (shame on me) mais apparemment le lycée peut la changer!
Bref je pense qu'on est maudits parce que rien ne marche (même le programmateur de PIC du lycée avait des problèmes...) mais nous sommes dans une phase on on progresse pas mal (malgré les dieux cruels qui tentent d'empêcher notre mission).


Courage ;) Je te donne tout le soutient que je peux par la pensé ;) :)

Si mon commentaire vous a plus laissez nous un avis  !  :thank_you:

Nouveau sur Robot Maker ? 

Jetez un oeil aux blogs, aux tutoriels, aux ouvrages, au robotscope  aux articles,  à la boutique  et aux différents services disponible !
En attendant qu'une bibliothèque de fichiers 3D soit mise en place n'hésitez pas à demander si vous avez besoin du fichier 3D d'un des produits de la boutique... On l'a peut être ! 
Si vous souhaitez un robot pilotable par internet n'hésitez pas à visiter www.vigibot.com et à lire le sous forum dédié à vigibot!

 

Les réalisations de Mike118  

 

 

 


#100 swolf

swolf

    Membre passionné

  • Membres
  • PipPipPip
  • 626 messages
  • Gender:Male

Posté 05 mai 2012 - 01:52

Courage ;) Je te donne tout le soutient que je peux par la pensé ;) :)


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



Répondre à ce sujet



  


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

0 members, 1 guests, 0 anonymous users