Bonjour à tous, j'ai un problème avec un projet où je pense avoir identifié le problème sans etre sure. Dans mon projet , j'utilise 7 interrupteur poussoir pour allumer 7 led (independament ) via un module RF 433 MHz ( 1 emetteur et 2 recepteurs ) . Le code marche parfaitement quand le arduino-emetteur est connecter au pc . Mais quand je le debranche et que le arduino est alimenter en batterie, 1 seul led refuse de s allumé. Les autres marchent parfaitement.
J'ai changer cable, resistance ( tjs en 10k ohms ) , led et meme les emplacements de la plaquette, le problème persiste. J'ai mesuré les tensions à chaque interrupteurs , tous 4,8 ou 5 V. Et cette led qui ne veut pas s'allumer à 2,1 V .
Donc , si quelqu'un aurais rencontrer ce meme genre de probleme ou aurait une solution pour mettre cette led a 4,8V , ca m'aiderais bcp .
seul la couleur change ( ce sont les led fourni par le kit starter arduino uno ) . On a dans l ordre : rouge vert jaune bleu jaune vert blanc . C'est la 2e jaune qui ne va pas ( en partant de la gauche )
//GILZEEBROEK
#include "TM1651.h"
#define CLK 5//pins definitions for TM1651 and can be changed to other ports
#define DIO 4
TM1651 batteryDisplay(CLK,DIO);
const int analogInput = A0;
/*const float TMaxA0 = 5.0;
float R1 = 20000.0;
float R2 = 13000.0;*/
#include <avr/sleep.h>//this AVR library contains the methods that controls the sleep modes
#define inter 3 //A5-6
const int led = 7;
byte etat; //1 ou 0
boolean boutonRelache; //Vrai ou faux (true/false)
//------------------
int lastButtonState = LOW;
unsigned long lastDebounceTime = 0;
unsigned long debounceDelay = 5000;
//____________________
const int nEchantillons = 400; // correspond au nbr indice total et mets 23 sec approxi pour faire 1 cycle
int echantillon[nEchantillons];
int i = 0;
int minVal ;
//----------------------
#include <VirtualWire.h>
char *controller;
//#define Joystick1 A2
const char* CMD_BUTTON_A = "Av1-PONTX" ;
const char* CMD_BUTTON_B = "Av2-PONTX" ;
const char* CMD_BUTTON_C = "Av3-PONTX" ;
const char* CMD_BUTTON_D = "Av4-PONTX" ;
const char* CMD_BUTTON_E = "Ar1PONTX" ;
const char* CMD_BUTTON_F = "Arr3-PONTX" ;
const char* CMD_BUTTON_G = "FreinPONTX" ;
const char* CMD_BUTTON_NUL = "NUL" ;
const int Frein = 9;
const int Arr3 = 8;
const int Arr1 = 11; // PROBLEME avec digital 11
const int Av1 = A2;
const int Av2 = A3;
const int Av3 = A4;
const int Av4 = A5;
int buttonState1 = 0;
int buttonState2 = 0;
int buttonState3 = 0;
int buttonState4 = 0;
int buttonState5 = 0;
int buttonState6 = 0;
int buttonState7 = 0;
void setup()
{
Serial.begin(9600);//Start Serial Comunication
//pinMode(LED_BUILTIN,OUTPUT);//We use the led on pin 13 to indecate when Arduino is A sleep
pinMode(inter, INPUT_PULLUP); //entree interrupteur, en Pull up afin d'avoir un signale claire (et car il est integre a l'arduino contrairement au pull down <-- necessite un circuit en plus)
//digitalWrite(LED_BUILTIN,HIGH);//turning LED on
pinMode(led, OUTPUT);
// on verifie l'etat du bouton au cas ou il est deja enfonce quand on commence
boutonRelache = (digitalRead(inter) == HIGH); //Initialisation de la variable "boutonRelache", on teste la variable inter pour savoir si elle = HIGH, si oui boutonRelache = 0, si non boutonRelache = 1
etat = boutonRelache ? LOW : HIGH; //if(), si boutonRelache = true (valeur boolean), etat = LOW, sinon etat = HIGH
// on allume la LED en fonction de l'etat (etat = LOW ou a HIGH, a 1 ou a 0)
//-----------------------
pinMode(analogInput, INPUT);
batteryDisplay.init();
batteryDisplay.set(BRIGHTEST);//BRIGHT_TYPICAL = 2,BRIGHT_DARKEST = 0,BRIGHTEST = 7;
batteryDisplay.frame(FRAME_ON);//light the frame of the battery display
for (int i = 0; i < nEchantillons; i++) {
echantillon[i] = 0;
}
minVal = 1023; // ou mettre 1023
//--------------------------
pinMode(Frein, INPUT);
pinMode(Arr3, INPUT);
pinMode(Arr1, INPUT);
pinMode(Av1, INPUT);
pinMode(Av2, INPUT);
pinMode(Av3, INPUT);
pinMode(Av4, INPUT);
pinMode(13,OUTPUT);
vw_set_ptt_inverted(true); //
vw_set_tx_pin(12);
vw_setup(4500);
}
void loop()
{
//----------------------------------------------------------------------
echantillon[i] = analogRead(analogInput);
/*Serial.print("A0 :");
Serial.print(echantillon[i]);*/
if(minVal > echantillon[i]){
minVal = echantillon[i];
}
//float Vout = ((minVal * (TMaxA0 / 1024))/(R2/(R1+R2)));
float Vout = ((minVal * (5.0 / 1024))/(13000.0/(20000.0+13000.0)));
Serial.print("Vout :");
Serial.println(Vout);
i++;
if (Vout > 12.6) // max est 100%
{
Vout = 12.6;
}
else if (Vout < 9.0) //min est 0%
{
Vout = 9.0;
}
if(Vout<=12.6 && Vout>12.04)
{
batteryDisplay.displayLevel(5);
batteryDisplay.frame(FRAME_ON);
}
else{
if(Vout<=12.04 && Vout>11.71)
{
batteryDisplay.displayLevel(4);
batteryDisplay.frame(FRAME_ON);
}
else{
if(Vout<=11.71 && Vout>11.49){
batteryDisplay.displayLevel(3);
batteryDisplay.frame(FRAME_ON);
}
else{
if(Vout<=11.49 && Vout>11.29){
batteryDisplay.displayLevel(2);
batteryDisplay.frame(FRAME_ON);
}
else{
if(Vout<=11.29 && Vout>11){
//blinkfaible();
batteryDisplay.displayLevel(1);
batteryDisplay.frame(FRAME_ON);
}
else{
if(Vout<=11 && Vout>9){
//blinkTresfaible();
batteryDisplay.displayLevel(0);
batteryDisplay.frame(FRAME_ON);
}
}
}
}
}
}
if (i >= nEchantillons) {
i = 0;
minVal = echantillon[nEchantillons-1];
}
//----------------------------------------------------------------------
int reading = digitalRead(inter);
if (reading != lastButtonState){
lastDebounceTime = millis();
}
if (digitalRead(inter) == HIGH) { // PULLUP = logique inversee, le bouton est relache en HIGH
if (!boutonRelache) { // on vient de relacher, on debounce et memorise
//delay(20); // debounce
boutonRelache = true;
}
}
else {
// le bouton est appuye. est-ce un nouvel appui?
if (boutonRelache) {
// le bouton n'etait pas appuye avant donc c'est un nouvel appui, on inverse l'etat de la lampe
boutonRelache = false;
etat = (etat == HIGH) ? LOW : HIGH; // ou de facon pas tres propre etat = 1 - etat <-- Inverser l'etat (qui vaut 0 ou 1);
//delay(20); // debounce
}
}
//--------------------------------------------------
//------------------------------------------
digitalWrite(led, etat); // allume led
lastButtonState = reading;
unsigned long diff = millis() - lastDebounceTime;
/*if(abs(diff) > debounceDelay){
Going_To_Sleep();
}*/
//--------------------------------------------------------------------------------
buttonState1 = digitalRead(Arr1);
buttonState2 = digitalRead(Arr3);
buttonState3 = digitalRead(Frein);
buttonState4 = digitalRead(Av1);
buttonState5 = digitalRead(Av2);
buttonState6 = digitalRead(Av3);
buttonState7 = digitalRead(Av4);
//Serial.println(value);
Serial.println(controller); // affiche la valeur controle associe au bouton si
// si appyué
if (buttonState4 == HIGH)
{
controller="1" ;
vw_send((byte*) CMD_BUTTON_A, strlen(CMD_BUTTON_A) + 1);
//vw_wait_tx(); // Wait until the whole message is gone
digitalWrite(13,LOW);
}
else if (buttonState5 == HIGH)
{
controller="2" ;
vw_send((byte*) CMD_BUTTON_B, strlen(CMD_BUTTON_B) + 1);
//vw_wait_tx(); // Wait until the whole message is gone
digitalWrite(13,LOW);
}
else if (buttonState6 == HIGH)
{
controller="3" ;
vw_send((byte*) CMD_BUTTON_C, strlen(CMD_BUTTON_C) + 1);
//vw_wait_tx(); // Wait until the whole message is gone
digitalWrite(13,LOW);
}
else if (buttonState7 == HIGH)
{
controller="4" ;
vw_send((byte*) CMD_BUTTON_D, strlen(CMD_BUTTON_D) + 1);
//vw_wait_tx(); // Wait until the whole message is gone
digitalWrite(13,LOW);
}
else if (buttonState1 == HIGH)
{
controller="5" ;
vw_send((byte*) CMD_BUTTON_E, strlen(CMD_BUTTON_E) + 1);
//vw_wait_tx(); // Wait until the whole message is gone
digitalWrite(13,LOW);
}
else if (buttonState2 == HIGH)
{
controller="6" ;
vw_send((byte*) CMD_BUTTON_F, strlen(CMD_BUTTON_F) + 1);
//vw_wait_tx(); // Wait until the whole message is gone
digitalWrite(13,LOW);
}
else if (buttonState3 == HIGH)
{
controller="7" ;
vw_send((byte*) CMD_BUTTON_G, strlen(CMD_BUTTON_G) + 1);
//vw_wait_tx(); // Wait until the whole message is gone
digitalWrite(13,LOW);
}
else
{
controller="0" ;
vw_send((byte*) CMD_BUTTON_NUL, strlen(CMD_BUTTON_NUL) + 1);
//vw_wait_tx(); // Wait until the whole message is gone
digitalWrite(13, HIGH);
}
}
non ça revien au meme problème. Les leds sont relie au arduino recepteurs, donc elle ne s allume que si arduino emetteur envoie un message correspondant ( dans le code c est le Arr1 où le problème vient, sur la digital 11 et le message emetteur et recepteur sont sur CMD_BUTTON_E )
Le problème doit venir a l'emetteur car normalement , quand l'emetteur envoie correctement le message , la led 13 integré à l'arduino emetteur s'eteint quand le message est envoyer ( donc si je mtn le bouton poussoir enfoncé, cette led 13 reste eteint jusqu a ce que je relache le bouton ) .
En gros, le led 13 s etaint et une des led recepteur s allume . Ainsi je peux voir que le module RF 433 MHz a bien envoye et "recu" le message . Maintenant concernant la led disfonctionnel , la led 13 de l'emetteur clignote ( etaint et allume a intervalle regulier et dans l'ordre de 0.75 sec je dirais ) . Ca signifie que le message ne passe pas correctement .
Donc voila le probleme , niveau code la led devrait fonctionner comme les autres et niveau materiel j ai tous changer sauf le arduino emetteur , et rien ne change à mon probleme.
Donc en fin de compte ce n'est pas un problème avec la LED?
Tu pourrais essayer de faire un effort dans la description de tes problèmes. On arrive au 9ème post en on apprend maintenant qu'en fait le problème est dans l'émetteur où il n'y a pas de LED.