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 :

Girouette électronique


Sujet :

Arduino

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    Lycéen
    Inscrit en
    Mars 2021
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Mars 2021
    Messages : 8
    Par défaut Girouette électronique
    Bonjour, J'aimerais réaliser une girouette qui marche a base d’Arduino. Malheureusement, Je suis débutant en langage Arduino et j'ai un peu de mal avec le code.
    Le système marcha avec 6 leds et 6 photorésistance. Chaque photorésistance correspond a un bit. Vous trouverez une meilleur description du projet sur ce site : [URL="https://www.yoctopuce.com/FR/article/comment-mesurer-le-vent-partie-2"]. L'affichage se fera sur un écran LCD
    Merci d'avance !


    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
    68
    69
    70
    71
    72
    73
    74
     
    #include <LiquidCrystal_I2C.h> 
    // En cas de non fonctionnement, mettez la ligne 8 en
    // commentaire et retirez le commentaire à la ligne 9.
    LiquidCrystal_I2C lcd(0x27, 20, 4); // ligne 8
    //LiquidCrystal_I2C lcd(0x3F,20,4); // ligne 9
    void setup()
    int 
    const int Led = 1;     // Définition des Leds
    const int phre = 1;    // definition borne positive photoresistance
    int Pr1 = A1;          // Déclaration broche photorésistance 1
    int Pr2 = A2;          // Déclaration broche photorésistance 2
    int Pr3 = A3;          // Déclaration broche photorésistance 3
    int Pr4 = A4;          // Déclaration broche photorésistance 4
    int Pr5 = A5;          // Déclaration broche photorésistance 5
    int bit0 = 0;
    int bit1 = 0;
    int bit2 = 0;
    int bit3 = 0;
    int bit4 = 0;
     
    void setup() {
     pinMode(Led, OUTPUT); //definition de la broche led comme sortie
     pinMode(phre, OUTPUT); //definition de la broche positive phre comme sortie
     pinMode(Pr1, INPUT);   //definition de la broche photoresistance1 comme entrée
     pinMode(Pr2, INPUT);   //definition de la broche photoresistance2 comme entrée
     pinMode(Pr3, INPUT);   //definition de la broche photoresistance3 comme entrée
     pinMode(Pr4, INPUT);   //definition de la broche photoresistance4 comme entrée
     pinMode(Pr5, INPUT);   //definition de la broche photoresistance5 comme entrée
     Serial.begin(9600);
     lcd.init(); // initialisation de l'afficheur
    }
     
     
    void loop() {
    digitalWrite(Led, HIGH);//leds allumées
    digitalWrite(phre, HIGH);
    int val = analogRead(A0); // Un entier pour contenir une valeur variant de 0 à 1023 
      Serial.println(val);
      delay(1);
    lcd.backlight(); // active le rétro-éclairage
    lcd.setCursor(0, 0); // se positionner à la première ligne
    lcd.print("       ");  // Afficher le mot 'carte'
    lcd.setCursor(0,1);  // se positionner à la deuxième ligne
    lcd.print("de texte"); // Afficher le mot 'Arduino'
    }
     
    void getDirVent()
      bit0 = not(digitalRead(Pr1));
      bit1 = not(digitalRead(Pr2));
      bit2 = not(digitalRead(Pr3));
      bit3 = not(digitalRead(Pr4));
      bit4 = not(digitalRead(Pr5));
     
      girouette =  (bit4 * 16) + (bit3 * 8) + (bit2 * 4) + (bit1 * 2) + bit0;
     
      Serial.print(bit0); Serial.print(bit1); Serial.print(bit2); Serial.print(bit3); Serial.print(bit4);
      Serial.print(" => ");
      Serial.print(girouette);
      Serial.print(" Orientation");
      switch (girouette) {
        case 24: dirVent="N"; break;
        case 10: dirVent="NE"; break;
        case 18: dirVent="E"; break;
        //case 18: dirVent="SE"; break;
        case 16: dirVent="S"; break;
        case 2: dirVent="SW"; break;
        case 26: dirVent="O"; break;
        case 8: dirVent="NO"; break;
        default: dirVent="N"; break; 
      }
     
     
    }

  2. #2
    Expert confirmé

    Homme Profil pro
    mad scientist :)
    Inscrit en
    Septembre 2019
    Messages
    2 921
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : mad scientist :)

    Informations forums :
    Inscription : Septembre 2019
    Messages : 2 921
    Par défaut
    Quel est votre souci réellement ?

  3. #3
    Membre Expert
    Avatar de jpbbricole
    Homme Profil pro
    Retraité des réseaux informatiques
    Inscrit en
    Février 2013
    Messages
    1 017
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Retraité des réseaux informatiques
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2013
    Messages : 1 017
    Par défaut
    Bonjour Matcha95

    C'est 5 LED et non pas 6.
    Ton principal problème provient de l'attribution des pins, de A1 à A5 pour les photorésistances et tu veux utiliser un affichage LCD sur bus i2C. Or le bus i2C a 2 signaux SDA et SCL, respectivement les pin A4 et A5, donc il y a comflit!
    De même que les ports Led et phre ont le même port 1 qui est, lui aussi, dédicacé à la transmission série du port USB, qui te sert à afficher des données (Serial.print(...)), ainsi qu'à télécharger ton programme.
    J'ai, un peu, réaménagé ton programme en conséquence, je te laisse jouer au jeu des 7 différences pour voire ces modifications.
    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
    68
    69
    70
    71
    72
    73
    74
    75
    76
     
     #include <LiquidCrystal_I2C.h>
     // En cas de non fonctionnement, mettez la ligne 8 en
     // commentaire et retirez le commentaire à la ligne 9.
     LiquidCrystal_I2C lcd(0x27, 20, 4); // ligne 8
     //LiquidCrystal_I2C lcd(0x3F,20,4); // ligne 9
     
     const int Led = 4;     // Définition des Leds
     const int phre = 5;    // definition borne positive photoresistance
     int Pr1 = 6;          // Déclaration broche photorésistance 1
     int Pr2 = 7;          // Déclaration broche photorésistance 2
     int Pr3 = 8;          // Déclaration broche photorésistance 3
     int Pr4 = 9;          // Déclaration broche photorésistance 4
     int Pr5 = 10;          // Déclaration broche photorésistance 5
     int bit0 = 0;
     int bit1 = 0;
     int bit2 = 0;
     int bit3 = 0;
     int bit4 = 0;
     int girouette = 0;
     String dirVent = "";
     
     void setup() {
    	 pinMode(Led, OUTPUT); //definition de la broche led comme sortie
    	 pinMode(phre, OUTPUT); //definition de la broche positive phre comme sortie
    	 pinMode(Pr1, INPUT_PULLUP);   //definition de la broche photoresistance1 comme entrée
    	 pinMode(Pr2, INPUT_PULLUP);   //definition de la broche photoresistance2 comme entrée
    	 pinMode(Pr3, INPUT_PULLUP);   //definition de la broche photoresistance3 comme entrée
    	 pinMode(Pr4, INPUT_PULLUP);   //definition de la broche photoresistance4 comme entrée
    	 pinMode(Pr5, INPUT_PULLUP);   //definition de la broche photoresistance5 comme entrée
    	 Serial.begin(9600);
    	 lcd.init(); // initialisation de l'afficheur
    	 lcd.backlight(); // active le rétro-éclairage
     }
     
     
     void loop() {
    	 digitalWrite(Led, HIGH);//leds allumées
    	 digitalWrite(phre, HIGH);
    	 int val = analogRead(A0); // Un entier pour contenir une valeur variant de 0 à 1023
    	 //Serial.println(val);
    	 //delay(1);
    	 getDirVent();
    	 delay(2000);     // Toutes les 2 secondes
     }
     
     void getDirVent(){
    	bit0 = !digitalRead(Pr1);     // Comme l'entrée active renvoie un 0 (LOW)
    	bit1 = !digitalRead(Pr2);     // On inverse l'entrée avec un NOT (!)
    	bit2 = !digitalRead(Pr3);
    	bit3 = !digitalRead(Pr4);
    	bit4 = !digitalRead(Pr5);
     
    	girouette =  (bit4 * 16) + (bit3 * 8) + (bit2 * 4) + (bit1 * 2) + bit0;
     
    	Serial.print(bit0); Serial.print(bit1); Serial.print(bit2); Serial.print(bit3); Serial.print(bit4);
    	Serial.print(" => ");
    	Serial.print(girouette);
    	Serial.print(" Orientation ");
    	switch (girouette) {
    		case 24: dirVent="N"; break;
    		case 10: dirVent="NE"; break;
    		case 18: dirVent="E"; break;
    		//case 18: dirVent="SE"; break;
    		case 16: dirVent="S"; break;
    		case 2: dirVent="SW"; break;
    		case 26: dirVent="O"; break;
    		case 8: dirVent="NO"; break;
    		default: dirVent="?"; break;
    	}
    	Serial.println(dirVent);
     
     	 lcd.setCursor(0,0);  // se positionner à la deuxième ligne
     	 lcd.print("Direction " + dirVent + "  "); // Afficher le mot 'Arduino'
     
     }
    Cordialement
    jpbbricole

  4. #4
    Membre habitué
    Homme Profil pro
    Lycéen
    Inscrit en
    Mars 2021
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Mars 2021
    Messages : 8
    Par défaut
    Bonjour,
    Merci beaucoup pour votre réponse !
    Effectivement, ça risque de mieux marcher maintenant.

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

Discussions similaires

  1. Signature électronique de documents (XMLdsig?)
    Par Bartuk dans le forum Sécurité
    Réponses: 4
    Dernier message: 02/05/2013, 23h59
  2. Réponses: 3
    Dernier message: 05/12/2006, 16h13
  3. Signature électronique gratuite ?
    Par Invité dans le forum Dépannage et Assistance
    Réponses: 2
    Dernier message: 25/07/2006, 09h12
  4. Réponses: 2
    Dernier message: 07/06/2006, 09h50
  5. Réponses: 3
    Dernier message: 12/01/2006, 13h27

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