Teensy 2++ et programmation C/C++
Répondre à la discussion
Affichage des résultats 1 à 10 sur 10

Teensy 2++ et programmation C/C++



  1. #1
    invitef1ad610d

    Teensy 2++ et programmation C/C++


    ------

    Bonjour à tous,
    Je viens d'acheter une carte Teensy 2++ dans le but de créer un cockpit d'avion pour mon aéroclub.
    Je suis en collaboration avec un membre de ce forum déjà, mais on a un peu de mal.
    Est-ce que quelqu'un pourrait nous éclaircir sur les lignes de code à écrire?
    Je détaille un peu ce qu'on voudrait faire:
    Connecter un interrupteur à la teensy.
    Lorsque cet interrupteur est levé, la carte doit simuler l'appui de la touche 'L' (par exemple) du clavier.
    Quand on baisse l'inter, il doit refaire la même chose.
    On souhaiterais savoir quoi écrire dans Arduino, sachant qu'il supporte le C/C++
    J'espère que cette explication est claire, si vous souhaitez plus de renseignements, demandez-moi
    Merci à tous pour l'aide que vous pourrez nous apporter !

    -----

  2. #2
    invitef1ad610d

    Re : Teensy 2++ et programmation C/C++

    Allez mesdames, messieurs, ya bien quelqu'un qui sait programmer quand même?
    Voici ce qu'on a déjà écrit:
    Code:
    // constants won't change. They're used here to 
    // set pin numbers:
    const int buttonPin = 39;     // the number of the pushbutton pin
    const int ledPin =  6;      // the number of the LED pin
    
    // variables will change:
    int buttonState = 0;         // variable for reading the pushbutton status
    int etat = 0;
    void setup() {
      // initialize the LED pin as an output:
      pinMode(ledPin, OUTPUT);      
      // initialize the pushbutton pin as an input:
      pinMode(buttonPin, INPUT);     
    }
    
    void loop(){
      // read the state of the pushbutton value:
      buttonState = digitalRead(buttonPin);
    
      // check if the pushbutton is pressed.
      // if it is, the buttonState is HIGH:
      if (buttonState == HIGH) {     
        // turn LED on:    
        digitalWrite(ledPin, HIGH); 
        if ((etat == 0 ) && ( buttonState == HIGH ))
        {
            Serial.println("sa marche");
            etat = 1;
        }
      } 
      else {
        // turn LED off:
        digitalWrite(ledPin, LOW); 
           if ((etat == 0 ) && ( buttonState == LOW ))
        {
            Serial.println("sa marche plus");
            etat = 0;
        } 
      }
    }
    Le problème c'est que ça fait que écrire sa marche sa marche sa marche ou sa marche plus sa marche plus sa marche plus selon que l'interrupteur est enclenché ou pas.
    Merci de votre aide à tous !
    Dernière modification par yoda1234 ; 25/08/2011 à 17h40.

  3. #3
    invitef1ad610d

    Re : Teensy 2++ et programmation C/C++

    J'ai d'ailleurs oublié d'ajouter la ligne Serial.begin(9600) dans le void setup

  4. #4
    invitef1ad610d

    Re : Teensy 2++ et programmation C/C++

    Allez les gens s'il vous plaît un peu de bonne volonté c'est à la portée de tout le monde (sauf de moi) !! Il doit manquer un tout petit quelque chose dans le programme qu'on a créé, personne n'a d'idées?!

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

    Re : Teensy 2++ et programmation C/C++

    edit: merci d'utiliser le bouton # pour baliser en code pour la lisibilité...
    Code:
    int etat = 0;
    void loop()
    {
        int buttonState; // variable for reading the pushbutton status
        // read the state of the pushbutton value:
        buttonState = digitalRead(buttonPin);
        // check if the pushbutton is pressed.
        // if it is, the buttonState is HIGH:
        if (buttonState == HIGH) 
        {
            // turn LED on:
            digitalWrite(ledPin, HIGH);
            if (etat == 0)
            {
                Serial.println("passage a 1... ");
                etat = 1;
            }
        }
        else if(buttonState == LOW )
        {
            // turn LED off:
            digitalWrite(ledPin, LOW);
            if (etat == 1)
            {
                Serial.println("passage a 0... ");
                etat = 0;
            }
        }
    }
    j'ai mis buttonState dans la fonction (normalement pas besoin ailleurs)
    etat doit être global
    j'ai corrigé un copié/collé ( if (etat == 1) )

    normalement envoie les messages à chaque changement seulement, mais devrait rafraichir l'état de la led à chaque bonne lecture du poussoir.

    mais comme à part ça on ne sait pas ce qui ne va pas...
    Jusqu'ici tout va bien...

  7. #6
    invitef1ad610d

    Re : Teensy 2++ et programmation C/C++

    Merci pour ta réponse!
    J'ai modifié le code pour que certaines fonctions soient reconnues dans le scope, et ça donne ça:
    Code:
    int etat = 0;
    const int buttonPin = 39;
    const int ledPin =  6; 
    void setup() {
      // initialize the LED pin as an output:
      pinMode(ledPin, OUTPUT);      
      // initialize the pushbutton pin as an input:
      pinMode(buttonPin, INPUT);   
    Serial.begin(9600);  
    }
    void loop()
    {
       int buttonState; // variable for reading the pushbutton status
       // read the state of the pushbutton value:
       buttonState = digitalRead(buttonPin);
       // check if the pushbutton is pressed.
       // if it is, the buttonState is HIGH:
       if (buttonState == HIGH)
       {        // turn LED on:
           digitalWrite(ledPin, HIGH);
           if (etat == 0)
           {
               Serial.println("passage a 1... ");
               etat = 1;
               Serial.stopbits();
           }
       }
       else if(buttonState == LOW )
       {
           // turn LED off:
           digitalWrite(ledPin, LOW);
           if (etat == 1)
           {
               Serial.println("passage a 0... ");
               etat = 0;
               
           }
       }
    }
    Le seul problème est qu'il continues a écrire "passage à 0" tout le temps, mais ça marche pour le "passage à 1".
    Effectivement, lors du passage à 1, on remet l'etat à 0, et la première condition veut que si l'etat est égal à 0, sa marque "passage à 1".
    Il y a une erreur du genre redondance cyclique :/
    Dernière modification par yoda1234 ; 25/08/2011 à 17h41.

  8. #7
    invitef1ad610d

    Re : Teensy 2++ et programmation C/C++

    Dans ce lien, la led est allumée, les fils du pin 39 et du ground ne sont pas connectés. Les écritures ne cessent de se succéder:


    Dans ce lien en revanche, la led est éteinte, les 2 fils en contact, les écritures se stoppent (elle défilaient car les 2 fils étaient en contact avant, mais s'interrompent dès le contact établi):
    Images attachées Images attachées
    Dernière modification par yoda1234 ; 25/08/2011 à 17h47.

  9. #8
    invitef1ad610d

    Re : Teensy 2++ et programmation C/C++

    Yoda1234, je te remercies de me corriger, comment fais-tu pour faire apparaitre le code ainsi?
    Ta modification a fichue mes images en l'air, elles sont illisibles, ce n'était pas le but.
    Les liens sont interdits??
    Merci

  10. #9
    polo974

    Re : Teensy 2++ et programmation C/C++

    Citation Envoyé par matt02100 Voir le message
    Yoda1234, je te remercies de me corriger, comment fais-tu pour faire apparaitre le code ainsi?
    Citation Envoyé par polo974 Voir le message
    edit: merci d'utiliser le bouton # pour baliser en code pour la lisibilité...
    en édition "avancée", il y a tout un tas de commandes en plus dont le bouton #...
    Citation Envoyé par matt02100
    Ta modification a fichue mes images en l'air, elles sont illisibles, ce n'était pas le but.
    Les liens sont interdits??
    Merci
    Eh oui, car ils sont parfois volatiles, lents et envahissants...
    Donc importer éventuellement une image, sinon décrire clairement ce qu'on veut et ce qu'on a avec des mots.
    Parfois même, ça permet de trouver tout seul le problème et même la solution...

    [raleur ON]
    Raahhh, l'époque du copié/collé d'images... On est en totale régression mentale...
    [raleur OFF]
    Jusqu'ici tout va bien...

  11. #10
    inviteb9f779aa

    Re : Teensy 2++ et programmation C/C++

    Bonjour,

    Je ne sais pas si vous avez avancé dans vos travaux:
    Avez vous une résistance pull up sur votre circuit? ou votre interrupteur est en direct sur votre circuit.
    position 1 au repos (tirage au +VDD)
    position 0 actif (mise a la masse via l interrupteur)

    pour rajouter une résistance de pull up via le code il faut utiliser digitalwrite(...) ( même si votre entrée est déclarée INPUT... c est fait expret)

    Par ce biais vous éviterez tout probleme de parasite surtout si vous déportez votre bouton.

    De plus , je vous suggère de rajouter une tempo entre chaque lecture d’état de vos entrées avec la fonction delay(200) ici par exemple 200 ms.

    Bon codage

    iKhe

Discussions similaires

  1. Programmation
    Par inviteddefc4b3 dans le forum Programmation et langages, Algorithmique
    Réponses: 6
    Dernier message: 18/07/2011, 18h52
  2. Connecter une teensy à une manette de playstation2
    Par invite2a2aaaa3 dans le forum Électronique
    Réponses: 0
    Dernier message: 30/01/2011, 13h53
  3. programmation
    Par invite458f4569 dans le forum Logiciel - Software - Open Source
    Réponses: 2
    Dernier message: 17/09/2010, 04h47
  4. programmation
    Par invite1f9136b7 dans le forum Logiciel - Software - Open Source
    Réponses: 0
    Dernier message: 29/05/2009, 17h16
  5. Programmation de µC
    Par invitefdead068 dans le forum Électronique
    Réponses: 2
    Dernier message: 30/01/2009, 12h50