Partage
  • Partager sur Facebook
  • Partager sur Twitter

jai un probleme en ardiuno sensor 1C + 5 led

sensor 1C + 5 led + carte mega2560 R3

    14 mai 2023 à 20:39:20

    Bonjour, si quelquun sait le faire que avec unled je suis preneur

    j'ai fais un code en ardiuno a vrai dire je pense quil me manque des variable ou quelque chose

    je sui épuisé je trouve pas, 1 led seul jarrive, un sensor seul aussi mais couplet les deux pour que la led reponde a un certain niveau

    de son du capteur pour que la led sallume.

    Donc, dnas le schéma il y a :

    5 led et 5 resistance 1K

    pourquoi pour chaque niveau de son elle sallume toute ou pas quune ou que deux, avec une fourchette de reception de l'information

    et un capteur sensor 1C pour le son qui réagie quand il y a un bruit.

    brancher sur les intput et les output

    je vous transmet le code ci dessous

    photo si vous le shéma electrique

    en privée

    int led1 = 2;
    int led2 = 4;
    int led3 = 6;
    int led4 = 8;
    int Led5 = 10;
    int Anal = A0;
    int Digital = 11;
    int AnalValue = 0;
    int DigitalValue;
    
    bool ledPin1Status;
    bool ledPin2Status;
    bool ledPin3Status;
    bool ledPin4Status;
    bool ledPin5Status;
    
    void setup() {
      Serial.begin(9600);
      pinMode(DigitalValue, INPUT);
      pinMode(Led1, OUTPUT);
      pinMode(Led2, OUTPUT);
      pinMode(Led3, OUTPUT);
      pinMode(Led4, OUTPUT);
      pinMode(Led5, OUTPUT);
    }
    
    void loop() {
      AnalValue = analogRead(Anal);
      DigitalValue = digitalRead(Digital);
      Serial.println(AnalValue);
    
      if (DigitalValue > 555  )
    
        ledPin1Status = 1;
    
       if (DigitalValue > 558  )
    
        ledPin2Status = 1;
    
       if (DigitalValue > 560  )
    
        ledPin3Status = 1;
    
       if (DigitalValue > 562  )
    
        ledPin4Status = 1;
    
       if (DigitalValue > 564 )
    
        ledPin5Status = 1;
    
      if (ledPin1Status == 1 || ledPin2Status == 1 || ledPin3Status == 1 || ledPin4Status == 1 || ledPin5Status == 1)
    
      {
    
        if (DigitalValue > 555 || DigitalValue < 537  )
    
          digitalWrite(Led1, HIGH);
    
         if (DigitalValue > 558 || DigitalValue < 534  )
    
          digitalWrite(Led2, HIGH);
    
         if (DigitalValue > 560 || DigitalValue < 534  )
    
          digitalWrite(Led3, HIGH);
    
         if (DigitalValue > 562 || DigitalValue < 531 )
    
          digitalWrite(Led4, HIGH);
    
         if (DigitalValue > 564 || DigitalValue < 528)
    
          digitalWrite(Led4, HIGH);
    
         if (DigitalValue > 568 || DigitalValue < 525)
    
          digitalWrite(Led5, HIGH);
    
        delay(200);
    
        ledPin5Status = 0;
    
        ledPin4Status = 0;
    
        ledPin3Status = 0;
    
        ledPin2Status = 0;
    
        ledPin1Status = 0;
    
      }
    
      digitalWrite(Led1, LOW);
    
      digitalWrite(Led2, LOW);
    
      digitalWrite(Led3, LOW);
    
      digitalWrite(Led4, LOW);
    
      digitalWrite(Led5, LOW);
    
    }
    



    -
    Edité par PlusDePseudoDisponible 14 mai 2023 à 23:57:10

    • Partager sur Facebook
    • Partager sur Twitter
      15 mai 2023 à 22:51:17

      Salut,

      il ya trop de trucs dans ton code, tes limites lignes 56 à 76, tu as des limites inférieures supérieures aux limites inférieures, avec un test OU en plus..

      Tu compares une valeur digital dans tout ton code sans utiliser ta valeur analogique (pour laquelle l'utilisation du terme "anal" semble bien malheureuse).

      Si je comprends bien, tu veux faire un vumètre à partir d'un truc qui mesure le bruit. Tu devrais déjà t'assurer de la plage de valeur que tu vas avoir en lecture. Les entrées ana sont sur 10 bits, de 0 à 1023, travailler sur seulement 10 points en plein milieu me semble un peu faible. Je séparerais les plage en 1/5ièm pour commencer et tester : 0, 200, 400, 600, 800

      ça se fait en 5 lignes si on se donne un peu de mal.

      unsigned    pinValue[5] = {2, 4, 6, 8, 10};
                  limits[5]   = {555, 558, 560, 562, 564},
                  analogValue = 0,
                  anaIn       = A0;
                  
      
      void loop()
      {
          analogValue = analogRead(anaIn);
          
          for(int i=0; i<5; i++)    
              digitalWrite(pinValue[i], analogValue > limits[i]);
      }

      Bonne continuation.

      • Partager sur Facebook
      • Partager sur Twitter

      Bonhomme !! | Jeu de plateforme : Prototype.

        16 mai 2023 à 10:12:43

        bonjour, 

        merci pour votre reponse

        du coup jai limpression que le sensor ce regle tres peu cest pas de la qualité.

        plutard une fois jai reussi je prendrais quelque chose qui captre mieux

        pour Anal, jai pas fait le rapprochement, désolé.

        Jai poster un sujet ou jessaye au final avec une, jai eux plus de resultat

        maispas encore au point. je l ai poster hier.

        par contre une fois fini jessayerai avec un sensor et un casque

        • Partager sur Facebook
        • Partager sur Twitter

        jai un probleme en ardiuno sensor 1C + 5 led

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown