Aller au contenu


Contenu de Valent81320

Il y a 60 élément(s) pour Valent81320 (recherche limitée depuis 25-avril 13)



#43799 HandiBot

Posté par Valent81320 sur 27 mai 2012 - 01:44 dans Archives

Merci beaucoup de vos réponses, je vais regarder sa de plus près ;)

J'avais pas fais gaffe que des robots se nommaient déjà comme sa, tant pis, je trouverai un autre nom, mais après sa c'est un détail !



#43734 HandiBot

Posté par Valent81320 sur 26 mai 2012 - 11:32 dans Archives

Alors voila le schéma, brève explication : la pince possède une translation en x et en y grâce au système moteur/crémaillère. Pour ce qui en est des trous et de la position, en fait je comptais mettre un emeteur infrarouge et un récepteur : d'un coté l'emmeteur, juste sous la pince et de l'autre coté le recepteur. Lorsqu'il y a un trou, le signal passe et le recepteur renvoie la valeur 1, c'est le même principe que le codeur incrémental. Par la suite, dans mon programme, en fonction du nom du livre entré, il donne une position en x et en y, défini au début du programme et correspondant aux nombres d'impulsions de notre "codeur artisanal". Par exemple, un livre ligne 2, rang 5 aura pour position x = 5 et y = 2, et dans le programme, on dit que tant que x < 5, on fait tourner le moteur, et pareil pour y, puis on avance la pince, on attrape le livre, et on reviens position initiale.

Voila donc mon idée !!

Image(s) jointe(s)

  • schéma.jpg



#43720 HandiBot

Posté par Valent81320 sur 26 mai 2012 - 09:44 dans Archives

OK, je veux bien le lien :) après, je me demandais quel type de moteur il me faudrait : un truc pas trop cher, pouvant être contrôlé par Arduino, et qui avance un peu quand même, histoire de pas mettre trois ans à aller chercher un livre ... Mais je mettrai bientôt un schéma histoire que vous puissiez voir comment j'aimerai concevoir mon projet !! ;)



#43702 HandiBot

Posté par Valent81320 sur 25 mai 2012 - 06:45 dans Archives

Salut et déjà merci de la réponse rapide :)

Pour le clavier, je pensais faire avec ce tutoriel, bien sur, sans haut parleur, mais le principe reste le même ...
http://www.semageek.com/podcast-1-transformer-un-clavier-ps2-en-piano-avec-un-kit-arduino/

C'est pour concentrer toutes les lettres détectés en une variable que je pense galérer .. Pour ce qui en est de la DFRobots, ouais, sa pourrait m’intéresser, c'est pareil que Arduino ? Aussi simple, même langage ? Quel environnement de développement ?



#43656 HandiBot

Posté par Valent81320 sur 24 mai 2012 - 10:06 dans Archives

Salut à tous, me voilà de retour sur le forum ..

Après avoir fini mon projet de PPE, il ne me tarde qu'une seule chose : refaire un autre projet (c'est vrai qu'on y prend goût à ces choses la)

Voici donc mon nouveau projet : nommé handibot, qui serait en fait un robot, ou plus exactement un bras pour attraper les livres dans les bibliothèques (très utile pour un handicapé en fauteuil roulant par exemple) .. L'utilisateur entrerait le nom du livre via un clavier USB, relié à une arduino, et en fonction du livre, faire déplacer de tant en x et tant en y, puis attraper, mais j'ai un souci : le programme : je vois à peu près comment tout faire, mais un endroit ou je bloque : comment fait t'on pour que le programme enregistre toutes les touches, qu'il les regroupe en une variable des que l'on appuie sur "entrez" ?

Donnez moi votre avis sur le projet et si quelqu'un a une idée sur cette partie de programme, je suis tout ouïe !!


Merci d'avance :)



#40820 Message d'erreur du compilateur Arduino

Posté par Valent81320 sur 14 avril 2012 - 08:37 dans Programmation

La c'est bizarre .. Moi non plus j'ai plus d'idées mais ce n'est pas impossible que ce soit la carte qui est HS :/
Désolé de pas pouvoir t'aider plus !!



#40791 Message d'erreur du compilateur Arduino

Posté par Valent81320 sur 14 avril 2012 - 09:27 dans Programmation

Il me semble que j'avais eu le même problème sur mon ancienne carte lorsqu'elle à rendu l'âme .. Tu ne l'a pas alimenté avec une tension trop forte juste avant ? Sinon ouais le mieux c'est de voir sur un autre ordi ce que sa donne ..



#40779 Message d'erreur du compilateur Arduino

Posté par Valent81320 sur 13 avril 2012 - 06:36 dans Programmation

Salut Seb03000 !

Moi j'avais ce message lorsque ma carte n'était pas correctement installée ou quand l'ordinateur ne détecte pas le COM3. As-tu regardé dans l'onglet "Tools" à "Serial Port" si le port COM3 aparait ? De plus, sous quelle carte travaille tu précisément ? L'Arduino Uno ?



#40676 Besoin d'aide pour langage Arduino

Posté par Valent81320 sur 09 avril 2012 - 08:47 dans Programmation

Pas grave ! Merci quand même :)



#40629 Besoin d'aide pour langage Arduino

Posté par Valent81320 sur 09 avril 2012 - 10:19 dans Programmation

Effectivement, le problème venait du while(), que j'ai remplacé par if() et sa marche impécable !

Merci à tous de votre aide !!



#40626 Besoin d'aide pour langage Arduino

Posté par Valent81320 sur 09 avril 2012 - 09:16 dans Programmation

Alors en fait mon programme est un calculateur de vitesse et de position via un encodeur rotatif. Le BP sert à indiquer o programme si l'on part en position ouverte ou fermée. J'ai placé un interrupteur qui lorsque l'on appuie dessus enregistre la Position et la vitesse. La position et la vitesse à cet instant sont affichés quand le portail à fini son ouverture ou sa fermeture : c'est pourquoi j'ai mis des boucles while : tant que la position est différente de 0 ou 90, afficher les positions et vitesses et quand la Position est égale à 0 ou 90, alors afficher la Position et vitesse de l'interrupteur. Mais g peut être compris mon erreur : si je met while pos_deg = 0 ou 90, sa va rester dans cette boucle vu que cette valeur ne va plus changer, il vaudrait mieux faire avec if pos_deg = 0 ou 90 non ?



#40606 Besoin d'aide pour langage Arduino

Posté par Valent81320 sur 08 avril 2012 - 07:18 dans Programmation

J'ai essayé de créer une boucle infinie genre créer une variable, dire qu'elle est égale à 1 tout le programme, et tant que la variable est égale à 1, le programme tourne, mais visiblement, sa ne marche pas ...



#40598 Besoin d'aide pour langage Arduino

Posté par Valent81320 sur 08 avril 2012 - 02:34 dans Programmation

Bonjour à tous !!

Je viens de finir mon projet de PPE à l'instant, mais je souhaiterai ajouter un petit quelque chose à mon programme : mon programme s'exécute impécable, et à la fin, il ne se redémarre pas tout seul, il faut éteindre l'arduino pour que le programme recommence ce qui est normal. Or je voudrai que dès que le programme se termine, il se redémarre tout seul, sans avoir a éteindre à chaque fois l'arduino.

Merci par avance

ps : voila le programme :
#include <stdlib.h>
#include <stdio.h>
#include <Metro.h>
#include <LiquidCrystal.h>


const int RS=12;
const int E=11;
const int D4=5;
const int D5=4;  
const int D6=7; 
const int D7=6; 


LiquidCrystal lcd(RS, E, D4, D5, D6, D7);
Metro ledMetro = Metro(3000);


int pos_rad_BP;
int pos_deg_BP;
int pos_rad1_BP;
int pos_deg1_BP;
int vitesse_BP;
int vitesse;
int pos_rad;
int pos_deg;
int pos_deg1;
int pos_rad1;
int nbre_impulsion;
int nbre_impulsion1;
int nbre_impulsion_vitesse;
volatile int front_montant = LOW;
int BPState = 8;


void setup() // fonction setup - début de l'exécution du programme
{
  Serial.begin(9600);
  lcd.begin(20,4);
  attachInterrupt(0, counter, RISING);
  attachInterrupt(1, positionBP, RISING);
  pinMode(BPState, INPUT);
  lcd.setCursor(0,0);
  lcd.print("    PROJET DE PPE   ");
  lcd.setCursor(0,1);
  lcd.print("     2011 - 2012    ");
  lcd.setCursor(0,2);
  lcd.print("   PUJOL-STOECKLIN  ");
  lcd.setCursor(0,3);
  lcd.print("   SYLVAIN-WOZNIAK  ");
  delay(4000);
  lcd.clear();
  delay(10);
}

void counter()
{
  ++nbre_impulsion;
  ++nbre_impulsion1;
  ++nbre_impulsion_vitesse;
}

void positionBP()

{
  pos_rad_BP = pos_rad;
  pos_deg_BP = pos_deg;
  vitesse_BP = vitesse;
  pos_rad1_BP = pos_rad1;
  pos_deg1_BP = pos_deg1;
}

void loop()

{

lcd.clear();


int BP = digitalRead(8);
if (BP == HIGH)

       {

   while (pos_deg <= 90)

{

lcd.clear();

if (ledMetro.check() != 1)
      {
    vitesse = ((nbre_impulsion_vitesse*(3.14/2)/90)/2)*1000;
    pos_rad = (nbre_impulsion*(3.14/2)/90)*1000;
    pos_deg = nbre_impulsion;

    lcd.setCursor(0,0);
    lcd.print("POS DEG: ");
    lcd.setCursor(10,0);
    lcd.print(pos_deg);

    lcd.setCursor(0,1);
    lcd.print("POS MRAD: ");
    lcd.setCursor(10,1);    
    lcd.print(pos_rad);

    lcd.setCursor(0,2);
    lcd.print("vitesse :");
    lcd.setCursor(10,2);
    lcd.print(vitesse);
      }    	
   	
if (ledMetro.check() == 1)
{
nbre_impulsion_vitesse = 0;
lcd.clear();
delay(100);
}

}

while (pos_deg >= 90)
{
    lcd.setCursor(0,0);
    lcd.print("POS DEG BP: ");
    lcd.setCursor(14,0);
    lcd.print(pos_deg_BP);

    lcd.setCursor(0,1);
    lcd.print("POS MRAD BP: ");
    lcd.setCursor(14,1);    
    lcd.print(pos_rad_BP);

    lcd.setCursor(0,2);
    lcd.print("vitesse BP:");
    lcd.setCursor(14,2);
    lcd.print(vitesse_BP);


  delay (100);
  lcd.clear();


    lcd.setCursor(0,0);
    lcd.print("POS DEG BP: ");
    lcd.setCursor(14,0);
    lcd.print(pos_deg_BP);

    lcd.setCursor(0,1);
    lcd.print("POS MRAD BP: ");
    lcd.setCursor(14,1);    
    lcd.print(pos_rad_BP);

    lcd.setCursor(0,2);
    lcd.print("vitesse BP:");
    lcd.setCursor(14,2);
    lcd.print(vitesse_BP);

delay (15000);
lcd.clear();



}    

       }

if(BP == LOW)

       {
pos_deg1 = 90-(nbre_impulsion);
   while (pos_deg1 > 0)

{

lcd.clear();

if (ledMetro.check() != 1)
      {
    vitesse = ((nbre_impulsion_vitesse*(3.14/2)/90)/2)*1000;
    pos_rad1 = ((3.14/2)-(nbre_impulsion*(3.14/2)/90))*1000;
    pos_deg1 = 90-nbre_impulsion;

    lcd.setCursor(0,0);
    lcd.print("POS DEG: ");
    lcd.setCursor(10,0);
    lcd.print(pos_deg1);

    lcd.setCursor(0,1);
    lcd.print("POS MRAD: ");
    lcd.setCursor(10,1);    
    lcd.print(pos_rad1);

    lcd.setCursor(0,2);
    lcd.print("vitesse :");
    lcd.setCursor(10,2);
    lcd.print(vitesse);
      }    	
   	
if (ledMetro.check() == 1)
{
nbre_impulsion_vitesse = 0;
lcd.clear();
delay(100);
}

}

while (pos_deg1 <= 0)
{
    lcd.setCursor(0,0);
    lcd.print("POS DEG BP: ");
    lcd.setCursor(14,0);
    lcd.print(pos_deg1_BP);

    lcd.setCursor(0,1);
    lcd.print("POS MRAD BP: ");
    lcd.setCursor(14,1);    
    lcd.print(pos_rad1_BP);

    lcd.setCursor(0,2);
    lcd.print("vitesse BP:");
    lcd.setCursor(14,2);
    lcd.print(vitesse_BP);


  delay (100);
  lcd.clear();


    lcd.setCursor(0,0);
    lcd.print("POS DEG BP: ");
    lcd.setCursor(14,0);
    lcd.print(pos_deg1_BP);

    lcd.setCursor(0,1);
    lcd.print("POS MRAD BP: ");
    lcd.setCursor(14,1);    
    lcd.print(pos_rad1_BP);

    lcd.setCursor(0,2);
    lcd.print("vitesse BP:");
    lcd.setCursor(14,2);
    lcd.print(vitesse_BP);


delay (15000);
lcd.clear();

}    


       }

}



#39187 Le PIC16F84 est- il encore valable de nos jours?

Posté par Valent81320 sur 29 février 2012 - 10:49 dans Electronique

+1 pour le site de go tronic !!!

Ensuite, tu compte le programmer comment ton pic, enfin je veux dire par la qu'il te faut avoir le matos derrière pour pouvoir y insérer un programme, comme une carte matrix par exemple. Nous on se sert de cette carte en SI pour programmer des 16F84A en FlowCode ...



#39186 Comment programmer un pic 16F84

Posté par Valent81320 sur 29 février 2012 - 10:40 dans Programmation

Salut !

Pour le programme, s'il n'est pas trop dur et qu'il comprend un LCD, des boutons poussoir etc ... Ben tu peux faire aussi avec FlowCode, c'est assez simple quand on débute, mais c'est pas top, déjà c'est payant --'

Bon courage !



#39185 [Aide] Premier robot !

Posté par Valent81320 sur 29 février 2012 - 10:34 dans Archives

Oui je veux bien ;) Merci :)


Je te fille sa ce week end, mais honnêtement, une voiture autonome sera plus simple à réaliser je pense ...



#39156 [Aide] Premier robot !

Posté par Valent81320 sur 28 février 2012 - 09:01 dans Archives

Si tu suis le projet roby légèrement modifier, je peux éventuellement te montrer le branchement qui diffère un peu, et aussi le programme.



#39155 [Aide] Premier robot !

Posté par Valent81320 sur 28 février 2012 - 08:59 dans Archives

Salut

Tu pourrai suivre le tutoriel roby, très bien, en enlevant les capteurs de contact, et en mettant des servomoteurs à rotation continu, mais sa te couterai un peu plus de 30€. Il te faudra une carte arduino Uno de toute fason pour programmer assez facilement ...



#39113 Problème avec Bouton Poussoir

Posté par Valent81320 sur 27 février 2012 - 05:42 dans Archives

Ok, je cause essayer sa vendredi ! Merci beaucoup :)



#39112 Problème avec Bouton Poussoir

Posté par Valent81320 sur 27 février 2012 - 05:41 dans Archives

Voila un exemple d'un morceaux de programme pour un bouton poussoir , ça peux te servir je pense.

int LED = 13;                // choisir la broche pour la LED
int BOUTON = 3;             // Branchez le bouton poussoir a la broche 3 broches digital


void setup() {
  pinMode(LED, OUTPUT);      // déclare la LED en ( sortie )
  pinMode(BOUTON, INPUT);   // déclare le bouton-poussoir en ( d'entrée )
}

void loop(){
  val = digitalRead(BOUTON);   // lire la valeur d'entrée
  if (val == HIGH) {          // vérifier si l'entrée est ( HAUTE )
    digitalWrite(LED, LOW);  //  LED OFF ( BASSE )
  } 
else 
{
    digitalWrite(LED, HIGH); //  LED ON ( HAUTE )
  }
}


Je tes détaller le code pour que tu comprène .




#39004 Problème avec Bouton Poussoir

Posté par Valent81320 sur 24 février 2012 - 06:50 dans Archives

ok pas de souci, je reprend tout sa :

#include <stdlib.h>
#include <stdio.h>
#include <Metro.h> // librairie remplacant la librairie <time.h>
#include <LiquidCrystal.h>


const int RS=12;
const int E=11;
const int D4=5;
const int D5=4; 
const int D6=3; 
const int D7=6; 
int BP1State = 13; //BP1 branché sur la patte 13 (digitale), il en est de meme pour les autres boutons poussoir.
int BP3State = 8;
int BP4State = 9;
int BP5State = 10;

LiquidCrystal lcd(RS, E, D4, D5, D6, D7);
Metro ledMetro = Metro(2000); //temps d'une boucle, ici 2sec.


int nbre_impulsion;
int nbre_impulsion_vitesse;
volatile int front_montant = LOW;

void setup() // fonction setup - début de l'exécution du programme
{
Serial.begin(9600);

attachInterrupt(0, counter, RISING); //fonction permettant d’incrémenter le nbre_impulsion, avec la patte digitale de mon codeur branché sur l'entrée 3 digitale

pinMode(BP1State,INPUT); // déclaration de mes BP en tant que entrée
pinMode(BP3State,INPUT);
pinMode(BP4State,INPUT);
pinMode(BP5State,INPUT);

digitalWrite(BP1State, HIGH); // je ne sais plus pourquoi j'ai mis ces fonctions, je l'avais vu dans un autre programme ... peut être pour tester les BP
digitalWrite(BP3State, HIGH);
digitalWrite(BP4State, LOW);
digitalWrite(BP5State, LOW);

lcd.begin(20,4); // propriété de mon écran lcd : 20 caractère et 4 lignes
lcd.print("LCD OK"); // test du lcd
delay(2000);
lcd.clear();
delay(10);
}

void counter() //ici donc ma fonction, ou macro incrémentant le nbre_impulsion
{
++nbre_impulsion;
++nbre_impulsion_vitesse; // cette variable est nécéssaire, car contrairement, a nbre_impulsion, il ne se réinitialise pas en fin de boucle ledMetro.check
}

void loop()
{

int pos_rad;
int pos_deg;
int vitesse; 
int vitesse_BP1;
int position_BP1_rad;
int position_BP1_deg;
int nbre_impulsion_vitesse;
int pos_deg1;
int pos_rad1;


while (digitalRead(BP3State) == HIGH); // tant que je n'appuie pas sur ce bouton, ici, il sert en gros a bouton d'arret d'urgence quoi ...

{

if (digitalRead(BP4State) == HIGH); // cet interrupteur indique s'il est actionné que le portail partira en position fermée

{

while (pos_deg < 90)

{

lcd.clear();

if (ledMetro.check() != 1) //si le temps est different de 2sec.
{
if (digitalRead(BP1State) == LOW); // si l'on appuie sur ce BP, alors on enregistre la position et la vitesse a ce moment
{
vitesse_BP1 = vitesse;
position_BP1_rad = pos_rad;
position_BP1_deg = pos_deg;
}

pos_rad = nbre_impulsion*(3.14/2)/90; // calculs pour avoir les position en radian, degré et la vitesse, précision : mon codeur envoie 1 impulsion par degré
pos_deg = nbre_impulsion;
vitesse = vitesse = (nbre_impulsion_vitesse*(3.14/2)/90)/2;

lcd.setCursor(0,0); // on affiche la position et la vitesse
lcd.print("POS DEG: ");
lcd.setCursor(9,0);
lcd.print(pos_deg);

lcd.setCursor(0,1);
lcd.print("POS RAD: ");
lcd.setCursor(9,1); 
lcd.print(pos_rad);

lcd.setCursor(0,2);
lcd.print("vitesse: ");
lcd.setCursor(9,2);
lcd.print(vitesse);

} 

if (ledMetro.check() == 1) // on efface toute les 2sec.
{
lcd.clear();
delay(100);
}




}

if(pos_deg >= 90) // quand la position en degré est égale a 90, ou un peu supérieure, alors on arrete, puisque le portail ne bouge plus

{
lcd.clear();
delay(10);

lcd.print("INFORMATIONS AU");
lcd.setCursor(0,1);
lcd.print("POINT VOULU");
delay(2000);
lcd.clear();
delay(10);

lcd.setCursor(0,0); // on affiche à ce moment la la vitesse et la position au moment ou l'on avais appuyé sur BP1
lcd.print("vit. BP1: ");
lcd.setCursor(10,0);
lcd.print(vitesse_BP1);

lcd.setCursor(0,1);
lcd.print("POS DEG BP1:");
lcd.setCursor(12,1);
lcd.print(position_BP1_deg);

lcd.setCursor(0,2);
lcd.print("POS RAD BP1:");
lcd.setCursor(12,2); 
lcd.print(position_BP1_rad);

delay(100000000);
}
}

if (digitalRead(BP5State) == HIGH); //si BP5 est appuyé, c'est que le portail part en position ouverte, les calculs de positions sont donc différents

{

while (pos_deg1 > 0) // quand il finira de bouger, la position sera de 0
{

lcd.clear();

if (ledMetro.check() != 1)
{

pos_rad1 = (3.14/2)-(nbre_impulsion*(3.14/2)/90);
pos_deg1 = 90-nbre_impulsion;
vitesse = vitesse = (nbre_impulsion_vitesse*(3.14/2)/90)/2;

lcd.setCursor(0,0);
lcd.print("POS DEG: ");
lcd.setCursor(9,0);
lcd.print(pos_deg1);

lcd.setCursor(0,1);
lcd.print("POS RAD: ");
lcd.setCursor(9,1); 
lcd.print(pos_rad1);

lcd.setCursor(0,2); // pour le reste, tout est pareil que quand BP4 est actionné au lieu de BP5
lcd.print("vitesse: ");
lcd.setCursor(9,2);
lcd.print(vitesse);

if (digitalRead(BP1State) == LOW);
{
vitesse_BP1 = vitesse;
position_BP1_rad = pos_rad1;
position_BP1_deg = pos_deg1;
}

}

if (ledMetro.check() == 1)
{
lcd.clear();
delay(100);
}

}

if (pos_deg <= 0)

{

lcd.print("INFORMATIONS AU");
lcd.setCursor(0,1);
lcd.print("POINT VOULU");
delay(2000);
lcd.clear();
delay(10);

lcd.setCursor(0,0);
lcd.print("vit. BP1: ");
lcd.setCursor(10,0);
lcd.print(vitesse_BP1);

lcd.setCursor(0,0);
lcd.print("POS DEG BP1:");
lcd.setCursor(12,1);
lcd.print(position_BP1_deg);

lcd.setCursor(0,2);
lcd.print("POS RAD BP1:");
lcd.setCursor(12,2); 
lcd.print(position_BP1_rad);

delay(100000000);
}

}



}

if (digitalRead(BP3State) == LOW)
{

lcd.print("! Recommencez !"); // si on a appuyé sur BP3, ce message s'affiche, et le programme doit etre redémarré.
delay(10000000);

}

}



#38987 Problème avec Bouton Poussoir

Posté par Valent81320 sur 24 février 2012 - 09:44 dans Archives

Ok, je vais faire sa, disons que j'avais mis un delay hyper long, parce que après, ben c'est la fin du programme : soit on a appuyé sur BP3 (en cas de souci) et donc la sa demande de recommencer, soit on arrive avec une position de 90 degré, et donc la, le portail ne s'ouvre plus, on affiche la position au moment ou l'on a appuyé sur BP1.

Je vais essayer en tout cas, et je vous tiendrai au courant !

Merci Beaucoup !!


PS : sinon, rien d'autre qui vous choque dans le programme ?



#38982 Problème avec Bouton Poussoir

Posté par Valent81320 sur 23 février 2012 - 11:17 dans Archives

Voila le code :

#include <stdlib.h>
#include <stdio.h>
#include <Metro.h>
#include <LiquidCrystal.h>


const int RS=12;
const int E=11;
const int D4=5;
const int D5=4;
const int D6=3;
const int D7=6;
int BP1State = 13;
int BP3State = 8;
int BP4State = 9;
int BP5State = 10;

LiquidCrystal lcd(RS, E, D4, D5, D6, D7);
Metro ledMetro = Metro(2000);


int nbre_impulsion;
int nbre_impulsion_vitesse;
volatile int front_montant = LOW;

void setup() // fonction setup - début de l'exécution du programme
{
Serial.begin(9600);

attachInterrupt(0, counter, RISING);

pinMode(BP1State,INPUT);
pinMode(BP3State,INPUT);
pinMode(BP4State,INPUT);
pinMode(BP5State,INPUT);

digitalWrite(BP1State, HIGH);
digitalWrite(BP3State, HIGH);
digitalWrite(BP4State, LOW);
digitalWrite(BP5State, LOW);

lcd.begin(20,4);
lcd.print("LCD OK");
delay(2000);
lcd.clear();
delay(10);
}

void counter()
{
++nbre_impulsion;
++nbre_impulsion_vitesse;
}

void loop()
{

int pos_rad;
int pos_deg;
int vitesse;
int vitesse_BP1;
int position_BP1_rad;
int position_BP1_deg;
int nbre_impulsion_vitesse;
int pos_deg1;
int pos_rad1;


while (digitalRead(BP3State) == HIGH);

{

if (digitalRead(BP4State) == HIGH);

{

while (pos_deg < 90)

{

lcd.clear();

if (ledMetro.check() != 1)
{
if (digitalRead(BP1State) == LOW);
{
vitesse_BP1 = vitesse;
position_BP1_rad = pos_rad;
position_BP1_deg = pos_deg;
}

pos_rad = nbre_impulsion*(3.14/2)/90;
pos_deg = nbre_impulsion;
vitesse = vitesse = (nbre_impulsion_vitesse*(3.14/2)/90)/2;

lcd.setCursor(0,0);
lcd.print("POS DEG: ");
lcd.setCursor(9,0);
lcd.print(pos_deg);

lcd.setCursor(0,1);
lcd.print("POS RAD: ");
lcd.setCursor(9,1);
lcd.print(pos_rad);

lcd.setCursor(0,2);
lcd.print("vitesse: ");
lcd.setCursor(9,2);
lcd.print(vitesse);

}

if (ledMetro.check() == 1)
{
lcd.clear();
delay(100);
}




}

if(pos_deg >= 90)

{
lcd.clear();
delay(10);

lcd.print("INFORMATIONS AU");
lcd.setCursor(0,1);
lcd.print("POINT VOULU");
delay(2000);
lcd.clear();
delay(10);

lcd.setCursor(0,0);
lcd.print("vit. BP1: ");
lcd.setCursor(10,0);
lcd.print(vitesse_BP1);

lcd.setCursor(0,1);
lcd.print("POS DEG BP1:");
lcd.setCursor(12,1);
lcd.print(position_BP1_deg);

lcd.setCursor(0,2);
lcd.print("POS RAD BP1:");
lcd.setCursor(12,2);
lcd.print(position_BP1_rad);

delay(100000000);
}
}

if (digitalRead(BP5State) == HIGH);

{

while (pos_deg1 > 0)
{

lcd.clear();

if (ledMetro.check() != 1)
{

pos_rad1 = (3.14/2)-(nbre_impulsion*(3.14/2)/90);
pos_deg1 = 90-nbre_impulsion;
vitesse = vitesse = (nbre_impulsion_vitesse*(3.14/2)/90)/2;

lcd.setCursor(0,0);
lcd.print("POS DEG: ");
lcd.setCursor(9,0);
lcd.print(pos_deg1);

lcd.setCursor(0,1);
lcd.print("POS RAD: ");
lcd.setCursor(9,1);
lcd.print(pos_rad1);

lcd.setCursor(0,2);
lcd.print("vitesse: ");
lcd.setCursor(9,2);
lcd.print(vitesse);

if (digitalRead(BP1State) == LOW);
{
vitesse_BP1 = vitesse;
position_BP1_rad = pos_rad1;
position_BP1_deg = pos_deg1;
}

}

if (ledMetro.check() == 1)
{
lcd.clear();
delay(100);
}

}

if (pos_deg <= 0)

{

lcd.print("INFORMATIONS AU");
lcd.setCursor(0,1);
lcd.print("POINT VOULU");
delay(2000);
lcd.clear();
delay(10);

lcd.setCursor(0,0);
lcd.print("vit. BP1: ");
lcd.setCursor(10,0);
lcd.print(vitesse_BP1);

lcd.setCursor(0,0);
lcd.print("POS DEG BP1:");
lcd.setCursor(12,1);
lcd.print(position_BP1_deg);

lcd.setCursor(0,2);
lcd.print("POS RAD BP1:");
lcd.setCursor(12,2);
lcd.print(position_BP1_rad);

delay(100000000);
}

}



}

if (digitalRead(BP3State) == LOW)
{

lcd.print("! Recommencez !");
delay(10000000);

}

}



#38981 Problème avec Bouton Poussoir

Posté par Valent81320 sur 23 février 2012 - 11:17 dans Archives

Salut à tous,

Bon je rencontre un problème avec mon système, mais je ne sais pas si l'erreur viens du code, ou du branchement, c'est pourquoi je vais vous fournir les 2 (schéma + code).

Tout d'abord, mon problème : sur mon système, j'ai intégré des boutons poussoir (2 bouton qui sont a l'état 1, et quand j'appuie, ils passent à 0 : BP1 & BP3 et 2 boutons de types interrupteur : BP4 & BP5), et lorsque j'appuie dessus, cela ne change strictement rien à mon système. Normallement, un message devrai s'afficher. Ce que je trouve bizarre, c'est que j'ai intégré un encodeur rotatif (acheté sur gotronic : encodeur 3530), mais lui marche très bien, puisque j'arrive à avoir la vitesse et la position. Je ne sais donc pas du tout d'ou viens l'erreur ! HELP ME PLEASE !!

Voila le montage :


montage_electronique_ppe.jpg



#38762 souci de programmation

Posté par Valent81320 sur 16 février 2012 - 05:23 dans Programmation

Toujours pas de solutions ? :/