Répondre à la discussion
Affichage des résultats 1 à 3 sur 3

Programmer sur Arduino et transfert sur carte SD (TIPE)



  1. #1
    moinonodu55

    Programmer sur Arduino et transfert sur carte SD (TIPE)


    ------

    Bonjour,

    J'ai un problème de programmation concernant mon TIPE qui consiste en l’étude d’un ABS de moto, et je voudrais mesurer les vitesses des roues avant et arrière de la moto pour pouvoir comparer "pour de vrai", les modèles industriels et mon modèle théorique, et c’est la finalité de mon travail.
    Je voudrais programmer le calcul des vitesses sur Arduino UNO, et l’envoi des valeurs de vitesses calculées sur une carte SD à l’aide de cette plaquette : https://www.sparkfun.com/products/9802
    J’utilise un capteur inductif TOR par roue, qui, devant chaque disque de frein, va permettre de calculer, grâce aux trous régulièrement espacés sur les disques, la vitesse de la roue. On considère qu’on ne freine que de la roue arrière, la roue avant servant donc de référence, et permettant de calculer la vitesse de la moto par rapport au sol.

    Seulement, faire clignoter une LED, ca va, mais créer un fichier texte sur une carte SD, et envoyer les données de mon programme dessus, c’est un peu plus compliqué... Il n’y a pas d’erreur de syntaxe dans mon programme, toutes les variables sont définies, les ; sont présents... Donc l’erreur vient de la manière de programmer elle même.

    Voici le programme permettant seul de calculer la vitesse des roues:

    // définition des variables
    int capteurroueavant =8;
    int capteurrouearriere = 7;
    int valeurroueavant;
    int valeurrouearriere;
    int vitesseroueavant = 4;
    int vitesserouearriere =2;


    void setup() //Définition des entrées et sorties
    {


    pinMode(capteurroueavant, INPUT);
    pinMode(capteurrouearriere, INPUT);
    }
    // définition des valeurs hautes et basses de ces entrées et sorties


    //Définition des fonctions

    void valroueavant()
    //definition des valeurs hautes et basses des entrées capteur (car il y a toujours une tension résiduelle)
    { analogRead (capteurroueavant);
    if (valeurroueavant <= 0.1)
    { valeurroueavant ==HIGH ;}
    else { valeurroueavant ==LOW ;}
    }

    void valrouearriere()//definition des valeurs hautes et basses des entrées capteur (car il y a toujours une tension résiduelle)
    { analogRead (capteurrouearriere);
    if (valeurroueavant <= 0.1)
    { valeurroueavant ==HIGH ;}
    else {valeurroueavant ==LOW ;}
    }

    void vav() //vitesse roue avant
    {
    // définition de la vitesse roue avant (donc de la moto)
    if (valeurroueavant == LOW)
    { valroueavant(); //on fait le programme de calcul de la valeur de la roue avant
    delay(valeurroueavant == HIGH); // jusqu'à ce que cette valeurt change (c'est ca, ou est ce que la manière d'ecrire est fausse?)
    #define temps1=(delay(valeurroueavant == LOW));
    valroueavant(); //on recommence la meme chose pour voir à quel moment le capteur revient dans l'état bas
    delay(valeurroueavant == HIGH);
    #define temps2=(delay(valeurroueavant == HIGH));
    #define vitesserroueavant=1/*angle*//(temps1+temps2);//en fonction de l'angle que fait la roue entre deux trous dans le disque de frien
    }
    else
    {
    { valroueavant(); //on fait le programme de calcul de la valeur de la roue avant
    delay(valeurroueavant == LOW); // jusqu'à ce que cette valeurt change (c'est ca, ou est ce que la manière d'ecrire est fausse?)
    #define temps1=(delay(valeurroueavant == HIGH));
    valroueavant(); //on recommence la meme chose pour voir à quel moment le capteur revient dans l'état bas
    delay(valeurroueavant == LOW);
    #define temps2=(delay(valeurroueavant == LOW));
    #define vitesserroueavant=1/*angle*//(temps1+temps2);//en fonction de l'angle que fait la roue entre deux trous dans le disque de frien (pas le meme angle !!!!!!!)
    }
    }

    }


    void var() //vitesse roue arriere (construit à partir du calcul de la vitesse de roue avant)

    {
    // définition de la vitesse roue arriere (donc de la moto)
    if (valeurrouearriere == LOW)
    { valrouearriere(); //on fait le programme de calcul de la valeur de la roue avant
    delay(valeurrouearriere == HIGH); // jusqu'à ce que cette valeurt change (c'est ca, ou est ce que la manière d'ecrire est fausse?)
    #define temps1=(delay(valeurrouearrier e == LOW));
    valrouearriere(); //on recommence la meme chose pour voir à quel moment le capteur revient dans l'état bas
    delay(valeurrouearriere == HIGH);
    #define temps2=(delay(valeurrouearrier e == HIGH));
    #define vitesserrouearriere=1/*angle*//(temps1+temps2);//en fonction de l'angle que fait la roue entre deux trous dans le disque de frien
    }
    else if (valeurrouearriere==HIGH)
    { valrouearriere(); //on fait le programme de calcul de la valeur de la roue avant
    delay(valeurrouearriere == HIGH); // jusqu'à ce que cette valeurt change (c'est ca, ou est ce que la manière d'ecrire est fausse?)
    #define temps1=(delay(valeurrouearrier e == LOW));
    valrouearriere(); //on recommence la meme chose pour voir à quel moment le capteur revient dans l'état bas
    delay(valeurrouearriere == HIGH);
    #define temps2=(delay(valeurrouearrier e == HIGH));
    #define vitesserrouearriere=1/*angle*//(temps1+temps2);//en fonction de l'angle que fait la roue entre deux trous dans le disque de frien
    }
    }






    void loop()
    { valroueavant();
    valrouearriere(); /*On calcule les valeurs pour initialiser ce calcul*/


    // Maintenant seulement on peut commencer à calculer les vitesses des roues avant et arrière
    vav();
    var();
    }
    //fin du programme


    Je compile le programme sur Arduino-> pas d'erreur de syntaxe. Comment faire pour déjà vérifier qu'il fonctionne bien? (au cas où je n'arrive pas à extraire les valeurs sur carte SD, ce qui sera la prochaine étape, je pourrais au moins présenter ceci, qui serait alors déjà fait, à l'oral des concours).

    -----

  2. #2
    Antoane

    Re : Programmer sur Arduino et transfert sur carte SD (TIPE)

    Bonjour et bienvenue,
    j'ai pas compris le problème : tu veux tester ton programme qui, selon toutes vraisemblances, fonctionne ???

    Ta question serait plus à sa place en section électronique, demande à un modérateur de l'y déplacer.
    Deux pattes c'est une diode, trois pattes c'est un transistor, quatre pattes c'est une vache.

  3. #3
    moinonodu55

    Re : Programmer sur Arduino et transfert sur carte SD (TIPE)

    oui apparemment, il fonctionne. Ou du moins il n'y a pas d'erreur de syntaxe à la compilation. Mais comment savoir si il fonctionne vraiment? C'est à dire si il réalise ce que je lui demande?

Discussions similaires

  1. Logiciel pour programmer un Arduino UNO
    Par Zozet dans le forum Électronique
    Réponses: 1
    Dernier message: 02/10/2012, 00h02
  2. Programmer un Micro-controlleur avec Arduino?
    Par Sauval_Danny dans le forum Électronique
    Réponses: 4
    Dernier message: 19/07/2012, 15h57
  3. Transfert de mon progamme sur ma carte Arduino
    Par jiji18 dans le forum Électronique
    Réponses: 14
    Dernier message: 26/03/2011, 20h28
  4. tipe sur le transfert d'une information par infrarouge
    Par juflo dans le forum TPE / TIPE et autres travaux
    Réponses: 3
    Dernier message: 03/11/2008, 18h55
  5. Programmer un carte Arduino pour contrôler un moteur pas à pas
    Par JFSGeneva dans le forum Électronique
    Réponses: 2
    Dernier message: 22/05/2008, 07h28