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 :

Problème de code


Sujet :

Arduino

  1. #1
    Candidat au Club
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Janvier 2025
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2025
    Messages : 2
    Par défaut Problème de code
    bonjour nous somme en train de crée un code Arduino pour activer un moteur dans un sens ou un autre selon la température mais ne nous ne parvenons pas a trouver de solution. Nous aurions eu besoin d'aide.
    Le matériel utiliser et une carte Arduino Uno / un capteur de température (asair DHT22) / un moteur 5V.
    merci de votre aide
    ps: voici le dernier code fournie par mon informaticien

    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
    const int tempPin = A0; 
    const int relayPin = 7; 
    const float temperatureThreshold = 25.0; 
     
     
    void setup() {
        Serial.begin(9600);
        pinMode(relayPin, OUTPUT);
        digitalWrite(relayPin, LOW);
    }
     
     
    void loop() {
     
     
        int sensorValue = analogRead(tempPin);
        float voltage = sensorValue * (5.0 / 1023.0);
        float temperature = voltage * 100; // LM35: 10mV par °C
     
     
        Serial.print("Température: ");
        Serial.print(temperature);
        Serial.println(" °C");
     
     
        if (temperature > temperatureThreshold) {
            // Lever le vérin
            digitalWrite(relayPin, HIGH); // Activer le relais
            Serial.println("Vérin levé.");
        } else {
            // Abaisser le vérin
            digitalWrite(relayPin, LOW); // Désactiver le relais
            Serial.println("Vérin abaissé.");
        }
     
     
        // Attendre un certain temps avant de lire à nouveau
        delay(2000); // 2 secondes
    }

  2. #2
    Membre Expert

    Homme Profil pro
    Directeur de projet
    Inscrit en
    Mai 2013
    Messages
    1 582
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2013
    Messages : 1 582
    Par défaut
    Bonjour,

    Le moteur est câblé comment derrière le relais ? Marche/arrêt ou inversion de sens ? Dans les deux cas cela ne semble pas suffisant.

    Marche arrêt : il ne tourne que dans un sens (montée?) quand la température est supérieure au seuil et ne s'arrête pas sauf si la montée du vérin induit une baisse de température (volet de ventilation par exemple). Mais il ne redescend jamais.

    inversion de sens: le moteur ne s'arrête jamais. Même si le vérin induit une rétro action, il oscillera autour du point d'équilibre correspondant à la température de consigne.

    Le vérin a combien de positions (2, une infinité). Que se passe-t-il en butée (il a des contacts de fin ?).

    Il me semble qu'il y a trois modes : monter le vérin, le descendre, ne rien faire. Or le programme actuel n'en gère que deux.

    Salutations

  3. #3
    Candidat au Club
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Janvier 2025
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2025
    Messages : 2
    Par défaut réponse vérin
    bonjour de se que mon informaticien ma dit il y a une infinité de position sur un labse de temps de 12s il fonctionne selon le sens de courant si le + et le - son inverser Alor il change de sens une fois en buter il s'arrête mais on peut Aussie couper le courant pour éviter tout problème. Aussie le verin et connecter sur deux broche de la carte

  4. #4
    Membre éprouvé
    Homme Profil pro
    Retraité de l'électronique analogique
    Inscrit en
    Avril 2021
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Retraité de l'électronique analogique

    Informations forums :
    Inscription : Avril 2021
    Messages : 50
    Par défaut
    Dans le code, je ne vois pas d'include pour indiquer au compilateur d'utiliser une bibliothèque pour le DHT22 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    #include<machin.h> // Absent !!!
    Par contre je vois :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     int sensorValue = analogRead(tempPin);
    float voltage = sensorValue * (5.0 / 1023.0);
        float temperature = voltage * 100; // LM35: 10mV par °C
    Le DHT22 est un capteur numérique, il ne se lit pas comme un capteur analogique.
    Le code proposé convient effectivement à un capteur non numérisé comme un Lm35.

    Impératif :
    1) Lire les datasheets des composants. Avoir ne serait-ce qu'un vernis sur leur fonctionnement permet d'éviter de faire des bétises.
    2) Trouver et choisir une bibliothèque pour gérer chaque capteur.
    3) Avant de programmer quoi que ce soit, faire au minimum un exemple de la bibliothèque choisie. Cela permet de s'assurer que le capteur est fonctionnel et que l'on a su le câbler correctement.
    4) Quand les 3 étapes précédentes sont passée positivement, on peut commencer à construire son propre programme.

Discussions similaires

  1. De la rapidité du code
    Par jfloviou dans le forum Contribuez
    Réponses: 233
    Dernier message: 29/05/2009, 02h17
  2. code pour interbase 6.0 et 6.5 de generateur
    Par tripper.dim dans le forum InterBase
    Réponses: 4
    Dernier message: 01/07/2002, 11h29
  3. [MFC](encapsulation ADO) ou placer le code
    Par philippe V dans le forum MFC
    Réponses: 2
    Dernier message: 13/06/2002, 14h58
  4. Explorateur de code C
    Par Zero dans le forum C
    Réponses: 14
    Dernier message: 06/06/2002, 09h41
  5. OmniORB : code sous Windows et Linux
    Par debug dans le forum CORBA
    Réponses: 2
    Dernier message: 30/04/2002, 17h45

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