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 LOWdigitalWrite(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 LOWdigitalWrite(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...