PB init D7 Nano

Bonjour,

Je vous avoue que je patauge et pourtant je n'en suis pas à mon 1er projet... mais je finis par ne plus y voir clair !

J'utilise la pin D7 (configurée en Output) d'une Nano pour commander l'entrée 2A d'un chip L2932NDE.

Cette pin D7 est toujours à+5V quoi que je fasse dans mon programme (et par conséquent le L293NDE réagit normalement en envoyant du +5V sur sa sortie 2Y, ce qui me met la bazar).

Cette D7 est à+5V dès la fin du VoidSetup (avant même que la Nano ait reçu le moindre code lu par son capteur IR, càd avant-même d'avoir touché la télécommande, puisque cette carte lit des codes IR et réagit en conséquence=.

Je patauge et pourtant j'utilise déjà ce programme (que j'avais moi-même écrit il y a longtemps) sur plusieurs autres cartes sans souci...

Voici les portions concernées du programme:

// Début de déclaration des variables de commande pour le Moteur 1 du L293D
int Motor1Pin1=6; // car on utilise D6 pour attaquer l'entrée Input1 du L293D
int Motor1Pin2=7; // car on utilise D7 pour attaquer l'entrée Input2 du L293D
//La carte active elle-même ENABLE1 du L293D toujours relié au +5V
// Fin de la déclaration des variables de commande pour le Moteur 1 du L293D

#include <IRremote.h> // librairy permettant d'utiliser l'IR
const int RECV_PIN = 12; // car on relie la sortie du récepteur IR à la pin 12 de l'Arduino
IRrecv irrecv(RECV_PIN);
decode_results results;

void setup()
{
Serial.begin(9600); // Démarre le transmetteur série pour voir les résultats sur PC
irrecv.enableIRIn();

// On définit les pins de la Nano en Output
pinMode(Motor1Pin1, OUTPUT);
pinMode(Motor1Pin2, OUTPUT);
}

void loop() {
if (irrecv.decode(&results)) {
if (results.decode_type == NEC) {
Serial.print("NEC: "); // comme dans le Tuto 10 précédent, cela affiche la marque de la télécommande
} else if (results.decode_type == SONY) {
Serial.print("SONY: ");
} else if (results.decode_type == RC5) {
Serial.print("RC5: ");
} else if (results.decode_type == RC6) {
Serial.print("RC6: ");
} else if (results.decode_type == UNKNOWN) {
Serial.print("UNKNOWN: ");
}
Serial.println(results.value, HEX);

if(results.value==0x5CA857){ // "5CA857" correspond au Bouton VOL+ de la Télécommande utilisée

Serial.println("Appui sur Bouton VOL+:");

digitalWrite(Motor1Pin1, HIGH); // fait tourner le moteur dans un sens
digitalWrite(Motor1Pin2, LOW);
delay(100); // devrait faire tourner pendant 100ms pour un ajustement précis du volume
// puis il faut stopper le moteur, donc probablement mettre les 2 sorties au même niveau LOW

digitalWrite(Motor1Pin1, LOW); // devrait stopper le moteur puisque les 2 sorties sont à LOW

// delay(100); // on introduit ici un délai de 100millisecondes pour que le code de la télécommande ne se répète pas plusieurs fois
}

if(results.value==0x5C906F){ // on répète le raisonnement avec la valeur "5C906F" correspondant au Bouton VOL- de la Télécommande
// sans oublier le 0x devant le code pour que l'Arduino comprenne que c'est de l'hexadécimal...
Serial.println("Appui sur Bouton VOL-:");
// digitalWrite(3,LOW); // et ici on décide d'allumer la LED 2 et d'éteindre les LED 1 et 3.
// digitalWrite(4,HIGH);
// digitalWrite(5,LOW);

digitalWrite(Motor1Pin1, LOW); // fait tourner le moteur dans un sens
digitalWrite(Motor1Pin2, HIGH);
delay(100); // devrait faire tourner pendant 100ms pour un ajustement précis du volume
// puis il faut stopper le moteur, donc probablement mettre les 2 sorties au même niveau LOW

digitalWrite(Motor1Pin2, LOW); // devrait stopper le moteur puisque les 2 sorties sont à LOW: OK

// delay(100); // on introduit ici un délai de 100millisecondes pour que le code de la télécommande ne se répète pas plusieurs fois
}

J'en arrive à me demander si ce n'est pas la carte qui est en cause pour que cette pin D7 soit toujours à +5V, mais par expérience c'est surement moi et non le hardware !

Avez-vous une idée ?

Merci !

P.S.: IDE 1.8.10. Quelqu'un sait-il pourquoi le menu "Outils -> Processeur ATmega328" ne propose plus que les options "ATmega 328 et Atmega168" et que je ne vois plus l'option "OldBootLoader" ? le pgm se téléverse normalement, mais avant j'avais une option "OldBootloader"... Peut-être est-ce atomatique avec cette version 1.8.10...

Branchez en série une résistance de limitation de courant de 220Ω et une led sur cette pin D7 et faites la clignoter... si ça fonctionne c'est que votre matériel va bien et qu'il faut chercher ailleurs

void setup() {
  pinMode(7, OUTPUT);
}

void loop() {
  digitalWrite(7, HIGH); 
  delay(1000);
  digitalWrite(7, LOW);
  delay(1000);
}

lisez comment utiliser le forum (les posts épinglés en haut du forum comme "Bien éditer son post pour les nuls" , "Faire un Nouveau Sujet ou le corriger avec les Balises..." et "Règles du forum francophone"), et faites un post "propre"

Bonjour,

Le problème venait bien de la Nano qui a un défaut et dont la pin D7 est bloquée à +5V: je l'ai remplacée par une autre Nano et tout fonctionne à merveille.

pour une fois, ça ne venait pas de moi !!

Je passe le sujet en résolu,

Merci