besoin d'aide pour un chenillard en C++
Répondre à la discussion
Affichage des résultats 1 à 26 sur 26

besoin d'aide pour un chenillard en C++



  1. #1
    aure96

    Smile besoin d'aide pour un chenillard en C++


    ------

    bonsoir, je suis actuellement étudiant en bts iris 1ere année et j'ai de grave difficulté dans le monde du C++.J'ai un mini projet que je dois rendre avant les vacances d'hiver, mon but étant de créer un chenillard sur une carte velleman VM110N, j'ai les dll et le code pour la connecter et je dois trouver le code pour créer un chenillard avec sélection de séquence. Si quelqu'un ou un professionnel pourrais m'aider à voir comment pourrais ressembler le code du chenillard? Sachant que je dois utiliser le TTimer inclus dans Embarcadero. ça serais vraiment sympas Ah et je tiens a vous dire que je travaille sur Embarcadero C++ Builder 2010.

    -----
    Dernière modification par aure96 ; 13/01/2016 à 19h13.

  2. #2
    Jack
    Modérateur

    Re : besoin d'aide pour un chenillard en C++

    Il faut que tu montres que tu as un minimum bossé:http://forums.futura-sciences.com/pr...ces-forum.html

    PS: le BTS IRIS n'existe plus depuis 2 ans

  3. #3
    aure96

    Re : besoin d'aide pour un chenillard en C++

    Bonjour Jack effectivement le bts iris n'existe plus je me suis trompé je suis en bts sn voici le code que j'ai:
    Code:
    //---------------------------------------------------------------------------
    
    #include <vcl.h>
    #pragma hdrstop
    
    #include "CarteUSBvelleman.h"
    #include <stdio.h>
    
    //---------------------------------------------------------------------------
    #pragma package(smart_init)
    #pragma resource "*.dfm"
    TFkitUSBvelleman *FkitUSBvelleman;
    //---------------------------------------------------------------------------
    __fastcall TFkitUSBvelleman::TFkitUSBvelleman(TComponent* Owner)
    	: TForm(Owner)
    {
    }
    //---------------------------------------------------------------------------
    void __fastcall TFkitUSBvelleman::BConnectClick(TObject *Sender)
    {
      // determination de l'adresse de la carte usb et connexion
      char texte[20];
      int CardAddr = 3 - (int(CheckBoxSK5->Checked) + int(CheckBoxSK6->Checked) * 2);
      unsigned long numCarteConnectee=OpenDevice(CardAddr);
      switch (numCarteConnectee)
      {
    	case 0 :
    	case 1 :
    	case 2 :
    	case 3 :
    	sprintf (texte, " Carte %u connectée" ,CardAddr);
    	LEtatConnexion->Caption = texte;
    	// LEtatConnexion->Caption = "Carte " + IntToStr(CardAddr) + " connectée";
    
    	LEtatConnexion->Font->Color = clGreen;
    	break;
    	case -1 :
    	  LEtatConnexion->Caption = "Carte " + IntToStr(CardAddr) + " introuvable";
    	  LEtatConnexion->Font->Color=clRed;
      }
    }
    //---------------------------------------------------------------------------
    void __fastcall TFkitUSBvelleman::BdeconnecterClick(TObject *Sender)
    {
    	CloseDevice(); //fonction "close device" de la dll
    	LEtatConnexion->Caption = "Carte déconnectée";
    	LEtatConnexion->Font->Color=clPurple;
    }
    //---------------------------------------------------------------------------
    void __fastcall TFkitUSBvelleman::BValidSortiesClick(TObject *Sender)
    {
       int OutCNA1=(int)ESortieCNA1->Text.ToInt();  //convertir editBox en nmbre entier
       OutputAnalogChannel(1,OutCNA1);    // affcte la valeur OutCNA1 a SortieAnalog1
       WriteAllDigital(ESortieNum->Text.ToInt());  // affectation des valeurs sorties logiques
    }
    //---------------------------------------------------------------------------
    void __fastcall TFkitUSBvelleman::BReleverClick(TObject *Sender)
    {
       long InCAN;    // acquisition mesures CAN
       long InNum;    // acquisition entrees numeriques
       InCAN=ReadAnalogChannel(1); //lire le CAN 1 de carte USB
       EEntreeCAN1->Text=InCAN; //affichage valeur InCAN dans editBox  EEntreeCAN1
    
       InCAN=ReadAnalogChannel(2);  //lire le CAN 2 de carte USB
       EEntreeCAN2->Text=InCAN;   // affichage valeur InCAN dans editbox EEntreeCAN2
    
       InNum=ReadAllDigital();  // lire les entrees numeriques
       EEntreeNum->Text=InNum; // afficher l'etat des entrees numeriques
    }
    //---------------------------------------------------------------------------
    Dernière modification par Jack ; 15/01/2016 à 09h53. Motif: Ajout balises code

  4. #4
    Jack
    Modérateur

    Re : besoin d'aide pour un chenillard en C++

    Le code est plus lisible avec les balises code.

    Je ne vois pas le rapport avec ton problème. Ca ressemble à un exemple que tu as simplement recopié sur internet et qui semble bien plus compliqué que ce qui t'est demandé, vu qu'il utilise une interface graphique.
    Il faut que tu montres un peu de code PERSONNEL. Commence par allumer/éteindre une des leds, puis la faire clignoter. Le reste viendra ensuite.

  5. A voir en vidéo sur Futura
  6. #5
    aure96

    Re : besoin d'aide pour un chenillard en C++

    Salut jack désolé pour les balises je sais pas vraiment ou ça se trouve, si non de puis quelques temps j'ai réussi a moitié ce que je voulais faire:
    Code:
    void __fastcall TF_Vellemanchenillard::OutputTest1Click(TObject *Sender)
    {
     SetAllDigital();
      CheckBox1->Checked = true;
      CheckBox2->Checked = true;
      CheckBox3->Checked = true;
      CheckBox4->Checked = true;
      CheckBox5->Checked = true;
      CheckBox6->Checked = true;
      CheckBox7->Checked = true;
      CheckBox8->Checked = true;
    }
    //---------------------------------------------------------------------------
    
    void __fastcall TF_Vellemanchenillard::OutputTest2Click(TObject *Sender)
    {
    ClearAllDigital();
      CheckBox1->Checked = false;
      CheckBox2->Checked = false;
      CheckBox3->Checked = false;
      CheckBox4->Checked = false;
      CheckBox5->Checked = false;
      CheckBox6->Checked = false;
      CheckBox7->Checked = false;
      CheckBox8->Checked = false;
    }
    //---------------------------------------------------------------------------
    
    
    void __fastcall TF_Vellemanchenillard::Timer1Timer(TObject *Sender)
    {
    Timer1->Enabled = false;
      int i;
      i = ReadAllDigital();
      CheckBox3->Checked = (i & 1)>0;
      CheckBox4->Checked = (i & 2)>0;
      CheckBox5->Checked = (i & 4)>0;
      CheckBox6->Checked = (i & 8)>0;
      CheckBox7->Checked = (i & 16)>0;
      Timer1->Enabled = true;
    }
    //---------------------------------------------------------------------------
    
    void __fastcall TF_Vellemanchenillard::Timer2Timer(TObject *Sender)
    {
    ClearDigitalChannel(n);
      n++;
      if (n == 9)
    	n = 7;
      SetDigitalChannel(n);
    }
    //---------------------------------------------------------------------------
    Dernière modification par Antoane ; 22/01/2016 à 09h37. Motif: Remplacement des balises [QUOTE] par [CODE].

  7. #6
    aure96

    Re : besoin d'aide pour un chenillard en C++

    J'ai du chercher un peu le code dans la demo du logiciel de la carte et j'ai des difficultés pour trouver comment défiler vers la gauche ou vers la droite puis choisir sa fréquence de défilement pouvez vous m'ai der ? ou il faut que je le cherche tout seul ?

  8. #7
    Jack
    Modérateur

    Re : besoin d'aide pour un chenillard en C++

    On ne comprends rien à ton code: il faudrait quelques commentaires.
    A quoi te servent toutes tes checkbox?
    Code:
      if (n == 9)
        n = 7;  SetDigitalChannel(n);
    J'avoue que la logique de ces quelques lignes m'échappe.

    comment défiler vers la gauche ou vers la droite
    Un simple décalage à gauche ou à droite de la valeur correspondant à l'état des leds suffit: opérateurs << et >>. Une multiplication ou une division par 2 de cette valeur devrait produire le même effet.
    puis choisir sa fréquence de défilement
    Elle doit être fixée par la valeur que tu as choisie pour ton timer

  9. #8
    JPL
    Responsable des forums

    Re : besoin d'aide pour un chenillard en C++

    Pour la balise Code avec l'éditeur en mode avance c'est # dans la barre d'outils. Sinon tu peux l'écrire toi-même avec [code]....[/code].
    Rien ne sert de penser, il faut réfléchir avant - Pierre Dac

  10. #9
    Jack
    Modérateur

    Re : besoin d'aide pour un chenillard en C++

    Il aurait suffi qu'aure96 lise les règles participatives de ce forum info ...

  11. #10
    JPL
    Responsable des forums

    Re : besoin d'aide pour un chenillard en C++

    Oui mais j'ai donné l'information pour qu'un modérateur ne soit pas obligé de faire le travail à chaque fois.
    Rien ne sert de penser, il faut réfléchir avant - Pierre Dac

  12. #11
    Jack
    Modérateur

    Re : besoin d'aide pour un chenillard en C++

    Quel optimisme

  13. #12
    aure96

    Re : besoin d'aide pour un chenillard en C++

    Bonjour, oui dsl pour les balises et merci donc c'est {CODE} et {/CODE} qu'il faut mettre.
    J'ai trouvé comment choisir l'intervalle de fréquence de défilement des leds voici le code que j'ai fait:
    Code:
    Timer2 -> Interval = 100
    Ce pendant j'aimerais la choisir moi même en utilisant l'IHM, en utilisant une Editbox, j'ai essayé plusieurs solutions mais je n'y arrive pas je suis vraiment novice en prog c++.
    Pensez vous pouvoir m'aider ? Merci d'avance.

  14. #13
    Jack
    Modérateur

    Re : besoin d'aide pour un chenillard en C++

    je n'utilise plus C++ builder depuis longtemps, mais il me semble qu'il suffit de récupérer la propriété Text de l'editBox et de le convertir en entier. Quelque chose du genre:

    Code:
    Timer2-> Interval = MonEditBox->Text.toInt();

  15. #14
    aure96

    Re : besoin d'aide pour un chenillard en C++

    Effectivement, j'ai réussi grâce a ton code merci beaucoup jack. Il me reste plus qu'à savoir comment je pourrais faire un autre style de défilement car malgré le code que j'ai :
    Code:
    int n = 8;
    //---------------------------------------------------------------------------
    
    void __fastcall TF_Vellemanchenillard::Timer2Timer(TObject *Sender)
    {
    ClearDigitalChannel(n);
      n++;
      if (n == 9)
    	n = 1;
      SetDigitalChannel(n);
    }
    //---------------------------------------------------------------------------
    Je ne comprend pas bien comment il est fait pour associer les leds a une tel valeur, sans connaissance je suis un peu perdu.
    Dernière modification par aure96 ; 29/01/2016 à 13h36.

  16. #15
    Jack
    Modérateur

    Re : besoin d'aide pour un chenillard en C++

    Comme on ne connait pas ton schéma de câblage, je ne vois pas trop comment t'aider

  17. #16
    aure96

    Re : besoin d'aide pour un chenillard en C++

    Enfaîte c'est une simple carte velleman avec des pilotes sous un fichier .dll déjà fournies avec la carte et quand je cherche sur d'autres postes sur internet je ne vois que des programmations ardunio, je trouve que c'est plus facile que ce qu'on a sous la main avec une velleman VM110N :/ sous ardunio tu peux associer des leds a des valeurs de ton choix il me semble alors que velleman c'est déjà prédéfini je crois, je suis pas sur je suis mauvais en c++.

  18. #17
    Jack
    Modérateur

    Re : besoin d'aide pour un chenillard en C++

    Ce qui ne m'avance pas plus. Je ne sais pas quelle est cette DLL, ni quelles fonctions elle contient.

  19. #18
    aure96

    Re : besoin d'aide pour un chenillard en C++

    voici le contenu du dll:
    http://forums.futura-sciences.com/at...1&d=1454675641
    Images attachées Images attachées

  20. #19
    Jack
    Modérateur

    Re : besoin d'aide pour un chenillard en C++

    Bon bin tu as tout ce qu'il faut.
    Tu mets dans un octet l'état correspondant aux 8 leds et tu l'envoie avec la fonction WriteAllDigital, tu fais une tempo pour que l'affichage soit maintenu le temps qu'il faut, puis tu décales à droite ou à gauche l'octet que tu renvoies sur les leds, etc.

  21. #20
    aure96

    Re : besoin d'aide pour un chenillard en C++

    j'ai commencer un peu mais je sais pas si c'est juste et puis le tempo comment on fait ça ? voila le code que j'ai commencer:
    Code:
    void __fastcall TF_Vellemanchenillard::Blancer2Click(TObject *Sender)
    {
    int j = 1,2,4,8,16,32,64,128;
    WriteAllDigital(j);
    
    }
    //---------------------------------------------------------------------------

  22. #21
    Jack
    Modérateur

    Re : besoin d'aide pour un chenillard en C++

    int j = 1,2,4,8,16,32,64,128;
    ??? . Une variable ne peut prendre qu'une valeur. Il faudrait que tu crées un tableau pour en stocker plusieurs:

    int tab[] = {1,2,4,8,16,32,64,128};

    mais comme je te l'ai indiqué, tu peux aussi décaler la valeur à gauche ou à droite à l'aide des opérateurs << et >> . Du coup, plus besoin de tableau.

    puis le tempo comment on fait ça ?
    Tu peux utiliser un timer dans C++ builder.

  23. #22
    aure96

    Re : besoin d'aide pour un chenillard en C++

    tu pourrais m'expliquer plus clairement je ne comprend plus rien.

  24. #23
    Jack
    Modérateur

    Re : besoin d'aide pour un chenillard en C++

    Expliquer quoi? Les tableaux? Difficile de faire un cours de C++ dans un post.

    Les décalages? 0000 0001 décalé d'un bit à gauche donne 0000 0010. Si un '0' éteint une led et un '1' l'allume, tu vas voir la led allunée se déplacer => chenillard.

    Les timer? tu prends celui de C++ builder, tu le colles sur ta form et tu regardes la doc.

  25. #24
    Bluedeep

    Re : besoin d'aide pour un chenillard en C++

    Bonjour

    J'ajouterai à ce que dit Jack que se lancer dans la programmation C++ sans maitriser les syntaxes de base est quand même étrange.

  26. #25
    aure96

    Re : besoin d'aide pour un chenillard en C++

    Ok merci quand même de votre aide, je vais me débrouiller. Bluedeep je commence juste la programmation cette année c'est la première fois pour moi Je sort tout juste d'un Bac Pro SEN donc c'est très compliquer pour moi je n'ai jamais vu ça avant.

  27. #26
    Jack
    Modérateur

    Re : besoin d'aide pour un chenillard en C++

    En principe, tu dois faire du C++ depuis septembre. Ca permet d'avoir quelques notions.

Discussions similaires

  1. Réponses: 0
    Dernier message: 06/03/2012, 16h15
  2. aide pour un chenillard de 60 LEDs avec CD4017
    Par badr-MOB dans le forum Électronique
    Réponses: 10
    Dernier message: 20/05/2011, 10h44
  3. demande d'aide pour transformation chenillard
    Par inviteb1be5fe6 dans le forum Électronique
    Réponses: 48
    Dernier message: 31/07/2009, 12h07
  4. besoin d'aide exercices pour m'antrainer mes j'ai besoin d'aide
    Par invite5e082da7 dans le forum Physique
    Réponses: 4
    Dernier message: 06/12/2008, 22h37
  5. Aide pour chenillard
    Par invite8b29fc9c dans le forum Électronique
    Réponses: 4
    Dernier message: 21/01/2007, 15h54