Arduino nano A6 A7

Bonjour,

Je suis débutant en arduino et j'essaie de programmer les sorties A6 et A7 de l'Arduino nano.

J'ai bien compris que celles-ci doivent être utilisée avec analogRead/analogWrite, mais je n'arrive pas à utiliser les deux broches simultanément. J'ai essayé avec une en sortie et l'autre en entrée, les deux en sortie et les deux en entrée mais je n'arrive jamais à les faire fonctionner les deux.

Je n'ai rien trouvé qui disait qu'on ne pouvait pas utiliser les deux en même temps, juste qu'elle doivent être utilisée uniquement en analogique.

Je met les bouts code qui doivent faire fonctionner pour exemple, j'espère que vous pourrez m'aider ;

Dans le setup :

  pinMode(A6, OUTPUT);
  pinMode(A7, OUTPUT);

Dans la loop :

    case 10:
      if (etat[Touche_enfoncee])
      {
        Donnee=100;
        Transmettre(Donnee);
        analogWrite(A6, 0);
        etat[Touche_enfoncee]=false;
        Serial.println(100);
      }
      else
      {
        Donnee=101;
        Transmettre(Donnee);
        analogWrite(A6, 1023);
        etat[Touche_enfoncee]=true;
        Serial.println(101);
      }
    break;
    case 11:
      if (etat[Touche_enfoncee])
      {
        Donnee=110;
        Transmettre(Donnee);
        analogWrite(A7, 0);
        etat[Touche_enfoncee]=false;
        Serial.println(110);
      }
      else
      {
        Donnee=111;
        Transmettre(Donnee);
        analogWrite(A7, 1023);
        etat[Touche_enfoncee]=true;
        Serial.println(111);
      }
    break;

Merci d'avance.

C'est pas facile d'aider avec seulement un morceau de code (le problème peut être ailleurs) et sans une description précise de ce que veut dire "je n'arrive pas à utiliser les deux broches simultanément". Que se passe-t-il exactement : ça plante ? Ça ne compile pas ?

A6 et A7 sur un nano ne sont pas utilisables en digital (et n'ont pas de pullup) : elles sont branchées sur l'ADC, donc elles ne supportent que analogRead... ?

AnalogWrite s'utilise sur les pins digitales.

analogWrite() fonctionne avec les pins PWM.

https://www.arduino.cc/reference/en/language/functions/analog-io/analogwrite/

Pour moi, les broches A6 et A7 ne sont que des entrées du CAN, ce ne sont pas des sorties, ni analogiques, ni numériques.

analogWrite(Ax, 1023);

La fonction est définie par

Syntax

analogWrite(pin, value)
Parameters

pin: the pin to write to.

value: the duty cycle: between 0 (always off) and 255 (always on).

Donc il vaut mieux passer 255 que 1023.

Tout est dans la page 6 de la datasheet du micro atmega328p


Les "pins" A0 à A5 selon la dénomination arduino et PC0 à PC5 et/ou ADC0 à ADC5 selon la dénomination officiel ATMEL sont reliées à un port numérique (le port C) et à des entrées du multiplexeur précédent le convertisseur Analogique digital.
Le choix de leur usage se fait en modifiant des registres ou plus simplement en utilisant les fonctions Wiring/arduino digitalRead/Write() ou analogRead().

Les pins A6 et A47 selon la dénomination arduino ne sont pas reliées à un port numérique, il n'y en avait plus de disponible, mais seulement aux entrées du multiplexeur analogique AD6 et ADC7.
Note : l'atmega328pb possède un port numérique de plus que le 328p ce qui a permis de relier A6 et A7 à un port numérique mais il n'a pas été utilisé dans les nanos.

Ces pin A6 et A7 ne sont pas accessibles avec une carte UNO car le boîtier du micro de la UNO (Dip 28) a moins de broches de sortie que le boîtier CMS qui en a 32.

Quant à la PWM comme dit par Hbachetti seules les E/S pilotables par un timer peuvent en faire. Sur l'atmega328p il y a 3 timers et chaque timer ne peut piloter que 2 sorties, soit 6 sorties PWM au total.

Merci pour vos réponse, ça confirme ce que je pensais, je ne peux pas faire comme je voulais. Je vais faire autrement ! :slight_smile:

N'oublie pas ceci non plus :

vileroi:
Donc il vaut mieux passer 255 que 1023.