Arduino sur moto


bonjour à tous,

je réalise mon premier projet sur arduino uno. je l'utilise pour gérer les clignotants ainsi que l'enclenchement/déclenchement des feux de croisement sur une moto.

j'utilise la batterie de la moto pour alimenter l'arduino, en passant par un régulateur à découpage 5v (alim sur borne 5v).
les actions 12v (clignotant et feu) sont enclencher par des relais 5v (3x).

cela fait maintenant plusieurs jour que j'essaie de faire fonctionner ton ça mais chaque fois que je résous un problème un autre apparaît et la je suis vrmt bloqué:

j'ai d'abord configurer mes entrées avec une pull-up, cela fonctionnait bien jusqu'à ce que finalement à l'enclenchement d'une entrée, les autres s'activent intenpestivement. ne comprenant pas pourquoi et pensant que l'énergie du relais créé une chute de tension sur la carte, je décide de supprimer le pull-up, et d'alimenté mes interrupteur par 5v, sur entrée analogique.tout fonctionne bien. je décide alors de m'attaquer au toggle on/off des feu de croisements. et la les feu fonctionne bien, mais lorsque je l'enclenche, cela enclenche le clignotant gauche. et les relais s'affole lorsque je passe de cligno gauche cligno droite, ce qui ne posait pas de problème auparavant.

je decide de supprimer le code de la partie feu de croisement pour retrouver qqch de stable et là... les clignos s'affole toujours. je suis perdu, je ne comprend vrmt pas le problème, j'espère que qqun saura m'aider!! :)

ci-dessous, mon code:

code: [select]
// auteur du programme : patrick
// programme écrit le : 19/5/2013.

/* commande clignotant et feu de croisement */

#include <servo.h> // inclusion de la librairie servo
#include <bounce.h> //

const int gauche=2; // constante pour la broche 2
const int reset=3; // constante pour la broche 3
const int droite=4; // constante pour la broche 4
const int feu_on_off=5;
const int feu=10; // constante pour la broche 8
const int cli_g=12; // constante pour la broche 11
const int cli_d=8; // constante pour la broche 10


bool clign_g=false;
bool clign_d=false;
bool washigh = false;
bool beenlow = true;
bool tictac = false;
long previousmillis = 0;
long interval = 450;
//long time=500000;

bounce bouton_feu = bounce(etat_feu,100 );

void setup()  
{
serial.begin(9600);

// ------- broches en sorties numériques -------  
pinmode (cli_d,output); // broche cli_d configurée en sortie
pinmode (cli_g,output); // broche cli_g configurée en sortie
pinmode (feu,output); // broche feu configurée en sortie
 
// ------- broches en entrées numériques -------  
pinmode (gauche,input); // broche gauche configurée en entrée
 digitalwrite(guache,high);
pinmode (droite,input); // broche droite configurée en entrée
 digitalwrite(droite,high);
pinmode (reset,input); // broche reset configurée en entrée
 digitalwrite(reset,high);
pinmode (feu_on_off,input); // broche feu_on_off configurée en entrée
 digitalwrite(feu_on_off,high);


// ********************************************************************************

void loop()
{
//-------------------------------------------------------------------------
//---------phare
//-----------------------------------------------------------------

   bouton_feu.update();  
 
   if (bouton_feu.read()==low && beenlow)      // if switch has been pressed , has been released (beenlow == true)
 {
   if (washigh)                         // , if light high last time
   {
     digitalwrite(feu,low);             // toggle light low
     washigh = false;                   // define light not high
   }
   else                               // otherwise light low last time
   {
     digitalwrite(feu, high);             // toggle light high
     washigh = true;                   // , define light high
     }
   beenlow = false;                         // define switch hasnt been released, prevent light flashing loop runs
 }

 if (bouton_feu.read()==high)                   // if switch has been released (and pulled low pulldown resistor)
 {
   if (washigh)                         // , if light on
     digitalwrite(feu,high);             // keep on
   else                               // otherwise light off
     digitalwrite(feu,low);             // keep off
   beenlow = true;                         // define switch has been released
 }

//-------------------------------------------------------------------------
//---------clignotants
//-----------------------------------------------------------------
 
   unsigned long currentmillis = millis();
     
      if (currentmillis- previousmillis > interval)
{
 previousmillis = currentmillis;
 if (tictac == false)
       {tictac = true;
            }
 else
tictac = false;
       }
 //    tictac = true;
 
      if (digitalread(droite)==low)
     {
clign_d=true;
     }
     
     if (digitalread(gauche)==low)
     {
clign_g=true;
     }

     if (digitalread(reset)==low)
     {
clign_g=false;
clign_d=false;
   //    time=5000000;
     }      

//---------gauche
 
       if (clign_g==true && tictac == true && cli_g==low)
        {digitalwrite(cli_g, high);
        clign_d=false;
       }
         
//---------droite

      if (clign_d==true && tictac == true && cli_d==low)
        {digitalwrite(cli_d, high);
        clign_g=false;
     }
}

merci bcp, j'ai vrmt besoin d'aide cela fait une semaine que je cherche chaque soir et je tourne en rond :(

mets le code entre les balises "code" stp, le bouton avec # .


Arduino Forum > International > Français (Moderators: jfs, Snootlab) > Arduino sur moto


arduino

Comments

Popular posts from this blog

Convierte tu Raspberry en un NAS. Firmware fvdw-sl 15.3 - Raspberry Pi Forums

How to format a Get Request

avrdude: verification error, first mismatch at byte 0x0000 0x0c != 0x62