Aller au contenu


Valent81320

Inscrit(e) (le) 22 oct. 2010
Déconnecté Dernière activité Privé
-----

Sujets que j'ai initiés

HandiBot

24 mai 2012 - 10:06

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 :)

Besoin d'aide pour langage Arduino

08 avril 2012 - 02:34

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();

}    


       }

}

Problème avec Bouton Poussoir

23 février 2012 - 11:17

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 :


Fichier joint  montage_electronique_ppe.jpg   143,66 Ko   205 téléchargement(s)

souci de programmation

14 février 2012 - 12:26

Bonjour, je suis en train de finir mon projet de ppe, mais il reste une chose sur laquelle je bloque : une partie du programme. Je code avec une Arduino uno, relié a un écran lcd et a un codeur (http://www.gotronic.fr/art-encodeur-rotatif-3530-12123.htm). En fait, j'ai branché le codeur sur une entrée analogique (jusque-là, pas de souci) et je dois l'incrémenter dans mon programme : a chaque foi que son état est 1, je dois incrémenter, et afficher cette valeur sur le lcd, mais sa ne marche pas. Je met le programme si dessous :


#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=2;


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



void setup() // fonction setup - début de l'exécution du programme
{
Serial.begin(9600);
lcd.begin(20,4);
lcd.print("LCD OK");
delay(2000);
lcd.clear();
delay(10);
}

void loop()
{


int nbre_impulsion;
int pos_rad;
int pos_deg;
lcd.clear();

while (pos_deg != 90)

{

lcd.clear();

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

int front_montant = digitalRead(7);
for (int nbre_impulsion = 0; nbre_impulsion < 90;++nbre_impulsion)
{
++nbre_impulsion;
}

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

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);

}

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

}

voila, je précise que la librairie metro.h sert a gérer le temps (tant que le temps est différent de 5 secondes, Faire ...)

Merci par avance pour vos réponses

Présentation Valent81320

07 janvier 2012 - 09:26

Bonjour à tous, bon ben je faire faire comme bcp de monde le fait : me présenter

Nom / Prénom : Sylvain Valentin

Age : 17 ans

Ville : Murat sur Vèbre (Tarn 81)

Formation : Terminale S-SI à La Borde Basse (Castres 81)

Métier envisagé : ingénieur (en mécatronique si possible)

Passions : Tennis de Table, piano, musique et sport en général

Robot que je possède : le célèbre robot "Roby" (fait à l'occasion de mon TPE)

Concours Robotique : Aucun pour le moment

Ce que j'aime dans la Robotique : matière très diversifiée, amusante, utile, intéressante

Ce que je n'aime pas dans la robotique : la suppression de certains emplois à cause de la robotique

Films que j'aime : 8 Mile, Green Street Hooligans, Get Rich or Dye Tryn'

Roman que j'aime : Les Arpenteurs du Monde (actuellement en train de le lire, mais très bon livre)

Ce que je voudrai faire dans le domaine de la robotique : si possible des projets utilitaires, comme la bio-mécatronique

La robotique plus tard : de plus en plus indispensable

Musique que j'aime : rap (IAM, NTM, Sinik, Shurik'n, Furax ...)