Problème sur entrée analogiques



Bonjours, débutant sur Arduino, j'ai voulu essayé de créer un sonomètre à l'aide de mon capteur son max9814, cependant, peu importe le réglage gain ou le signal injecté je n'arrive pas à récupérer de signal de sortie. J'ai donc essayer de lire directement l'entrée analogique raccordée à mon capteur, toujours pareil. J'ai aussi essayé de changer de voie je suis passé de la voie analogue 0 à la 4 et rebelotte. Quand je teste le micro à l'oscilloscope, avec le même montage, celui-ci est fonctionnel.
J'ai trouver d'autres exercice du genre avec des écran LCD dotés d'I2C et pareil, rien ne s'affiche, pourtant l'alimentation se fait et l'écran s'allume. Je suis perdu, si jamais quelqu'un peut m'éclairer, merci d'avance. Yann

Post mis dans la mauvaise section, on parle anglais dans les forums généraux. ➜ déplacé vers le forum francophone.

Merci de prendre en compte les recommandations listées dans "Les bonnes pratiques du Forum Francophone".

Bonjour,
votre moniteur série est en 115200 ?


On ne dirait pas ...

Qui est le premier moi ou @fdufnews :smile:

PS : @y2545, ils répondent tellement vite que parfois j'ai la réponse mais je mets trop de temps soit à vérifier, soit à rédiger :wink: Cette fois-ci je suis le premier.
Oupssssss pas facile avec les surdoués du forum dans placer une. Soit je ne sais pas, soit le peu de fois où je sais répondre, je suis grillé :blush:

Y'a quelque chose qui cloche là-dedans
image

image

Penser à lire les "Bonnes Pratiques du Forum Francophone"
Merci de ne pas mettre de copie d'écran pour le code mais de faire des copié-collé de celui-ci en utilisant les balises code comme expliqué dans les bonnes pratiques.

En plus de la configuration correcte du moniteur série comme vos collègues l'ont indiqué.
Avec:

Le compilateur indique à l'arduino d'utiliser la broche Digitad D4.
Il faut mettre :

Bonjour @gonpezzi

ça fonctionne quand même avec :

analogRead (4)

différent de :

digitalRead(4)

Bonne journée.

En fait il y a un define dans pins_arduino.h qui fait la conversion si l'argument de analogRead est inférieur à 6 (pour les UNO, par exemple) ou 16 (pour les Mega).
Mais pour la clarté du code je pense qu'il vaut mieux mettre le A pour éviter cette ambiguïté.

Je ne le savais pas et j'ai dû l'essayer pour savoir que @philippe86220 avait raison.

Oui mais comme @fdufnews l'explique, tu as tout de même raison car c'est plus clair et ça rend le code lisible.

Bonne journée.

Bonjour je vous remercie de vos réponses rapides, après ajustement cela fonctionne bel et bien. Merci à tous.

Si on va jusqu'au bout les entrées reliées au Port C (pour le 328p) ne devraient pas s'appeler A0-A5 mais D14-D19, et c'est même prévu dans l'API Wiring/Arduino.

Essayes un digitalWrite(15, HIGH) et tu verras que cela fonctionne exactement comme digitalWrite(A0, HIGH).

Si on veut être rigoureux elles ne devraient s'appeler A0 et A5 uniquement quand on fait appel aux fonctions analogiques, car dans ce cas elles sont déconnectées du port C et connectées au multiplexeur analogique.

Et l'I2C ?
L'I2C c'est du numérique, les pins sont reliées au port C, ce devrait être D18 et D19.

Je persiste à penser que l'appellation Ax est une absurdité. A l'extrême rigueur, cette appellation ne devrait concerner que A"6" et A"7" qui ne sont connectées qu'au multiplexeur analogique.

C'était valable du temps des micros avr, maintenant que les affectations des fonctions ne sont plus câblées "en dur" dans le micro et sont "déplaçables", c'est devenu dérisoire.

Oui c'est exact A0 à A5 sont utilisées pour l'analogique. et D14 à D15 pour le numérique en sortie comme en entrée bien sûr.

Je me rappelle de mon tout premier projet, une calculatrice :

Je me suis servi de D14, D15, D16, D17 comme entrée numérique en INPUT_PULLUP afin de gérer mes boutons poussoirs et D18 - D19 me servaient pour la liaison I2C de mon écran :

// initialise le pull up interne pour D0 à D12 - A1 - A2 - A3 - A6 et A7 - A4 et A5 sont utilisés pour l'I2C de l'écran LCD
// exclu au passage D13 qui en raison de sa liaison avec la LED_BUILTIN interdit le pull up interne et externe 
    for (byte f = 0; f <= 21; f++) 
  {
    if ((bouton[f] !=13) && (bouton[f] !=18) && (bouton[f] !=19))
    {
         pinMode(bouton[f], INPUT_PULLUP);
    } 
  }

J'avais été aidé par @dfgh ...

Tout ce que tu expliques est parfaitement exact comme d'habitude.
Merci pour ces précisions.

Bonne soirée à toi.

Ps : sur le projet de la calculatrice c’est une nano 33 ble avec deux entrées analogiques supplémentaires (ou deux pins digitales) comme sur la nano classique…

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.