IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Arduino Discussion :

Programmation de capteurs


Sujet :

Arduino

  1. #1
    Candidat au Club
    Femme Profil pro
    Lycéen
    Inscrit en
    Mai 2020
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 21
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Mai 2020
    Messages : 4
    Points : 2
    Points
    2
    Par défaut Programmation de capteurs
    Bonjour à toutes et à tous,
    Je suis lycéenne en terminal et ai fait un programme sur arduino pour mon projet de fin d'année. Le projet consiste à améliorer la sécurité d'une fendeuse à bois. Pour cela on a décidé de mettre 3 capteurs, un de pressions, un à effet hall et un inductif. Mon programme ne fonctionne pas le moins du monde. Pourriez vous s'il vous plaît à comprendre mes erreurs et à m'aider à y remédier (elles sont sûrement nombreuses ) ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    //Constantes
    const int weight = 7;
    const int electromagnet = 8;
    const int inductivesensor = 9;
    const int buton = 2;
     
    //Variables
    int inductivesensor = false;
    int electromagnet = false;
    int weight = 0;
    int counter = 0;
    int systèmedelevage = false
    int verin = false
     
    void setup() {
      Serial.begin(9600);
      pinMode(weight, OUTPUT);
      pinMode(electromagnet, OUTPUT);
      pinMode(inductivesensor, OUTPUT);
      pinMode(buton, INPUT);
    }
     
    void loop() {
      Repeat
      Serial.print("Reading");
      float p = readWeight();
      Serial.print("p");
      Serial.print("kg");
     
      if (p > 20)
      {
        if (electromagnet = false && inductivesensor = false)
        {
          ceinturedelevage = true;
          systèmedelevage = true;
          capo = true;
          electromagnet = 1;
          verin = true;
          inductivesensor = 1;
          counter = ++;
          vérin = true;
          inductivesensor = 0;
          electromagnet = 0;
          capo = false;
          systèmedelevage = true;
          ceinturedelevage = true;
        }
        else if (electromagnet = false && inductivesensor = true)
        {
          machine = 0;
        }
        else if (electromagnet = true && inductivesensor = true)
        {
          machine = 0;
        }
        else if (electromagnet = true && inductivesensor = false)
        {
          machine = 0;
        }
        else if (p < 20)
        {
          delay(2000)
        }
     
     
     
      }
    S'il n'est pas clair et que vous ne comprenez rien de ce que j'ai voulue faire n'hésitez pas à demander, je répondrai immédiatement.
    En vous remerciant par avance,
    Ambre

    Edit:
    Suite a une recommandation plus que logique, je me suis un peu entraînée et ai fait quelques recherches. J'ai donc modifié mon programme. Est ce que vous pouvez me dire s'il vous semble cohérent ou si je dois encore revoir le tout ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
     
    //Constantes
     
    const int buton = 2;
     
    //Variables
    bool inductivesensor = false;
    bool electromagnet = false;
    int weightsensor = 0;
    int counter = 0;
    bool systemedelevage = false;
    bool verin = false;
    bool ceinturedelevage = false;
    bool capo = false;
     
     
     
    void setup() {
      Serial.begin(9600);
      pinMode(weightsensor, INPUT);
      pinMode(electromagnet, INPUT);
      pinMode(inductivesensor, INPUT);
      pinMode(buton, INPUT);
    }
     
    void loop() {
     
      Serial.print("Reading");
      int weight;
      Serial.print("p");
      Serial.print("kg");
      int counter = 0;
     
      if (weight > 20)
      {
        if (electromagnet == false && inductivesensor == false)
        {
          ceinturedelevage = true;
          systemedelevage = true;
          capo = true;
          verin = true;
          counter = counter ++;
          verin = true;
          capo = false;
          systemedelevage = true;
          ceinturedelevage = true;
        }
        else if (electromagnet == false && inductivesensor == true)
        {
     
        }
        else if (electromagnet == true && inductivesensor == true)
        {
     
        }
        else if (electromagnet == true && inductivesensor == false)
        {
     
        }
        else if (weight < 20)
        {
          delay(2000);
        }
     
      }
    }
    Si vous avez des remarques n'hésitez pas !
    En souhaitant à tous une bonne soirée,
    Ambre

  2. #2
    Expert confirmé

    Homme Profil pro
    mad scientist :)
    Inscrit en
    Septembre 2019
    Messages
    2 685
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : mad scientist :)

    Informations forums :
    Inscription : Septembre 2019
    Messages : 2 685
    Points : 5 328
    Points
    5 328
    Par défaut


    Merci d'utiliser les balises de code, ça facilite la lecture...

    - on ne peut pas mettre d''accent dans le nom des variables en C ou C++ (cf systèmedelevage)
    - pour des valeurs de vérité (vrai faux) on utilise des bool pas des int
    - je croyais que vous aviez des capteurs, pourquoi les pins sont en OUTPUT ?
    - c'est quoi "Repeat" ??
    - une affection c'est =, un test d'égalité c'est ==
    - vous dites au début "const int inductivesensor = 9;" mais ensuite "int inductivesensor = false" et ensuite "inductivesensor = 1"... c'est quoi finalement cette variable ? un N° de pin qui ne doit pas changer, un booléen ou un entier ?
    ....

    mettez ce projet de coté et prenez une ou deux heures pour lire la syntaxe de base du langage et faire des tutos simples... ça vous aidera bcp...

  3. #3
    Candidat au Club
    Femme Profil pro
    Lycéen
    Inscrit en
    Mai 2020
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 21
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Mai 2020
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Bonsoir,
    excusez-moi, effectivement je n'ai pas pensé à mettre les balises de codes. Merci pour votre réponse. Vous avez raison, je vais prendre un peu de temps pour revoir la syntaxe de base, cela me semble aussi plus judicieux. Je vais aussi modifier mon programme en prenant en compte toutes vos remarques qui sont très constructives. Concernant la variable, c'est un booléen.
    Merci encore,
    et bonne soirée.

  4. #4
    Expert éminent sénior
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 646
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 646
    Points : 11 135
    Points
    11 135
    Par défaut
    Bonjour,


    je vois dans le code :
    Code Arduino : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    //Constantes
     
    const int buton = 2;
     
    //Variables
    bool inductivesensor = false;
    bool electromagnet = false;
    int weightsensor = 0;
    et plus loin
    Code Arduino : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
      Serial.begin(9600);
      pinMode(weightsensor, INPUT);
      pinMode(electromagnet, INPUT);
      pinMode(inductivesensor, INPUT);
      pinMode(buton, INPUT);

    Quel Arduino utilises-tu ? Uno ? Leonard ? Mega ? Mini ? ??
    Quels sont les arguments de la fonction pinMode ? Si tu utilises l'objet Serial() quelles précautions dois-tu prendre vis à vis des entrées/sorties ?
    Une lecture approfondie de la documentation de l'Arduino et de ses fonctions te sera utile pour programmer correctement cette carte.

    pinMode
    Serial
    Digitals Pins

  5. #5
    Candidat au Club
    Femme Profil pro
    Lycéen
    Inscrit en
    Mai 2020
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 21
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Mai 2020
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Bonjour, tout d'abord merci beaucoup d'avoir répondu. J'utilise une Arduino Uno. J'ai mis le numéro de pin 0 et il ne faut utiliser ni 0 ni 1, c'est ça ? Je ne comprends pas trop lorsque vous parlez des arguments de la fonction pinMode. Est ce en rapport avec INPUT, OUTPUT, et INPUT_PULLUP ?
    Merci encore et bonne journée

  6. #6
    Expert confirmé

    Homme Profil pro
    mad scientist :)
    Inscrit en
    Septembre 2019
    Messages
    2 685
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : mad scientist :)

    Informations forums :
    Inscription : Septembre 2019
    Messages : 2 685
    Points : 5 328
    Points
    5 328
    Par défaut
    Je ne comprends pas trop lorsque vous parlez des arguments de la fonction pinMode. Est ce en rapport avec INPUT, OUTPUT, et INPUT_PULLUP ?
    il y a deux arguments. Le N° de pin et comment on veut la configurer.

    Ce qu'on essaye de vous dire c'est que le N° de pin que vous utilisez est louche...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    const int inductivesensor = 9;
    ...
    int inductivesensor = false;
    ...
    pinMode(inductivesensor, OUTPUT);
    ...
    inductivesensor = 1;
    (mais il n'y a pas que cela à corriger....)

  7. #7
    Candidat au Club
    Femme Profil pro
    Lycéen
    Inscrit en
    Mai 2020
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 21
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Mai 2020
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Bonjour, merci beaucoup de votre réponse. Je pense allez me documenter un peu avant de reprendre ce projet, merci pour toutes vos réponses ! Passez une bonne journée.

  8. #8
    Expert éminent sénior
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 646
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 646
    Points : 11 135
    Points
    11 135
    Par défaut
    Citation Envoyé par Ambre56 Voir le message
    Bonjour, tout d'abord merci beaucoup d'avoir répondu. J'utilise une Arduino Uno. J'ai mis le numéro de pin 0 et il ne faut utiliser ni 0 ni 1, c'est ça ?
    Exactement. Dans la programmation du UNO, l'objet Serial utilise les pin 0 (Rx) et 1 (Tx) donc il ne faut pas les utiliser pour des entrées / sorties.

    Citation Envoyé par Jay M Voir le message
    Ce qu'on essaye de vous dire c'est que le N° de pin que vous utilisez est louche...
    oui, il y a des erreurs dans les arguments de la fonction pinMode().


    Citation Envoyé par Ambre56
    Bonjour, merci beaucoup de votre réponse. Je pense allez me documenter un peu avant de reprendre ce projet, merci pour toutes vos réponses ! Passez une bonne journée.
    Très bien. Reviens vers nous si certains éléments restent obscurs.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Programmation Arduino + capteurs de flexion
    Par kakthus dans le forum Arduino
    Réponses: 1
    Dernier message: 21/10/2015, 13h45
  2. programme pour calibrage d'un capteur
    Par inf2013 dans le forum Autres éditeurs
    Réponses: 0
    Dernier message: 24/10/2013, 14h06
  3. Réponses: 0
    Dernier message: 20/06/2013, 01h32
  4. [Débutant] programme capteur de mouvement
    Par CrashouilleX22 dans le forum C#
    Réponses: 6
    Dernier message: 22/03/2013, 11h34
  5. installer capteur programmable
    Par pitou58 dans le forum Programmation système
    Réponses: 1
    Dernier message: 17/11/2011, 23h50

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo