Centrale électronique avec un arduino
Modérateurs : Modo-Mecano's, The staff
Centrale électronique avec un arduino
Bonjour tout le monde , j ai eu enfin un petit moment pour bricoler sur un petit projet que j avais en tête .
Une centrale électronique pour simplifier le faisceau électrique d'un véhicule .
Elle est composé d'une copie de carte programmable arduino et d'une carte relai ( mon prochain projet est de les remplacer par des transistors type mosfet qui sont silencieux et moins encombrant ).
J ai repris un programme arduino sur un forum américain , j y ai juste rajouté un bouton avec plusieurs clique.
Cette arduino est indéfiniment paramétrable , on peut par exemple rajouter une ligne de code en utilisant l'interrupteur situé sur le levier d'embrayage pour désactivé le relai du démarreur si ce dernier n'est pas appuyé , ou bien rajouté une carte auxiliaire pour démarrer sa moto avec un badge .
Les fonctions boutons poussoirs sont aussi programmable ( plusieurs appui pour plusieurs fonction , fonction appuyé ou verrouillé ...).
Si vous avez des améliorations n hésitez pas.
J ai recablè le commodo gauche avec un cable ethernet en mettant une masse commune à chaque bouton .
Bien évidement il y a un relai prévu pour les freins que je n'ai pas filmé car il me manqué un bouton poussoir.
Une centrale électronique pour simplifier le faisceau électrique d'un véhicule .
Elle est composé d'une copie de carte programmable arduino et d'une carte relai ( mon prochain projet est de les remplacer par des transistors type mosfet qui sont silencieux et moins encombrant ).
J ai repris un programme arduino sur un forum américain , j y ai juste rajouté un bouton avec plusieurs clique.
Cette arduino est indéfiniment paramétrable , on peut par exemple rajouter une ligne de code en utilisant l'interrupteur situé sur le levier d'embrayage pour désactivé le relai du démarreur si ce dernier n'est pas appuyé , ou bien rajouté une carte auxiliaire pour démarrer sa moto avec un badge .
Les fonctions boutons poussoirs sont aussi programmable ( plusieurs appui pour plusieurs fonction , fonction appuyé ou verrouillé ...).
Si vous avez des améliorations n hésitez pas.
J ai recablè le commodo gauche avec un cable ethernet en mettant une masse commune à chaque bouton .
Bien évidement il y a un relai prévu pour les freins que je n'ai pas filmé car il me manqué un bouton poussoir.
Modifié en dernier par chicken le lun. 13 juin 2016 04:56, modifié 1 fois.
- thierry mecano
- Thierry Mecano CX500
- Messages : 4291
- Enregistré le : dim. 01 oct. 2006 20:54
- Localisation : saint remy sur avre 28380
En bref j'ai pas compris l'avantage du système par rapport à l'origine mais j'ai été élevé à l'époque des 4 CV et 125 Motobec 4 temps alors.......................
L'électronique sur un cx, c'est le CDI pratiquement inusable donc ajouter des cartes, des relais, c'est certainement avoir des risques de pannes en plus ou alors il faut refaire entièrement le faisceau électrique.

L'électronique sur un cx, c'est le CDI pratiquement inusable donc ajouter des cartes, des relais, c'est certainement avoir des risques de pannes en plus ou alors il faut refaire entièrement le faisceau électrique.
500 Cx Rickman , 650 SilverWing qui sera remis en état au printemps!!
je suis d'accord avec toi , si le faisceau d'une moto est en bon état il ne faut pas y toucher .( c est une règle en mécanique = si ça fonctionne ne pas y toucher)
Cette centrale simplifie le faisceau , un fils ethernet pour toutes les commandes , et 6 fils d alimentation + une masse et tout est centralisé sur la boîte relais.
J ai eu ce projet car mon cx était dépourvu de faisceau.
Cette centrale simplifie le faisceau , un fils ethernet pour toutes les commandes , et 6 fils d alimentation + une masse et tout est centralisé sur la boîte relais.
J ai eu ce projet car mon cx était dépourvu de faisceau.
voici un petit schéma du montage
Vous pouvez bien sur enlever le relai du warning dans le code et vous servir du relais pour l'alimentation de votre boitier ignitech.

je vous mets le code.
[spoil]
//INCLUDE LIBRARIES:-------------------------------------------------------------
#include "ClickButton.h"
// the LED
const int ledPin = 5;
int ledState = 0;
// the Button
const int buttonPin1 = A6;
ClickButton button1(buttonPin1, HIGH, CLICKBTN_PULLUP);
// Arbitrary LED function
int LEDfunction = 0;
// DEFINE INITIAL FUNCTION STATES: ----------------------------------------------
boolean runlightsActive = true;
boolean britesActive = false;
boolean brakeActive = false;
boolean leftTurnActive = false;
boolean rightTurnActive = false;
boolean hornActive = false;
boolean startActive = false;
boolean suspendRunlights = false;
boolean parkActive = false;
boolean hazzardActive = false;
// DEFINE INPUT PINS: -----------------------------------------------------------//
#define frontCtrlPin
#define britesCtrlPin A7
#define brakeCtrlPin A4
#define leftCtrlPin A2
#define rightCtrlPin A4
#define hornCtrlPin A0
#define startCtrlPin A5
// DEFINE CLICKBUTTONS
ClickButton britesButton (britesCtrlPin, LOW, CLICKBTN_PULLUP);
ClickButton brakeButton (brakeCtrlPin, LOW, CLICKBTN_PULLUP);
ClickButton leftButton (leftCtrlPin, LOW, CLICKBTN_PULLUP);
ClickButton rightButton (rightCtrlPin, LOW, CLICKBTN_PULLUP);
ClickButton hornButton (hornCtrlPin, LOW, CLICKBTN_PULLUP);
ClickButton startButton (startCtrlPin, LOW, CLICKBTN_PULLUP);
// DEFINE RELAY PINS: -----------------------------------------------------------
#define runlightsPin 12
#define britesPin 11
#define brakePin 10
#define leftTurnPin 9
#define rightTurnPin 8
#define hornPin 6
#define startPin 7
// DEFINE INITIAL RELAY STATES FOR TIMED FUNCTIONS: -----------------------------
int leftLight = HIGH;
int rightLight = HIGH;
// DEFINE INITIAL MS COUNT FOR FUNCTIONS: ---------------------------------------
// will store last time LED was updated OR switch debonce
unsigned long leftTurnMs = 0;
unsigned long rightTurnMs = 0;
unsigned long hazzardMs = 0;
unsigned long britesCtrlMs = 0;
unsigned long brakeCtrlMS = 0;
unsigned long leftCtrlMS = 0;
unsigned long rightCtrlMS = 0;
unsigned long hornCtrlMS = 0;
unsigned long startCtrlMS = 0;
// DEFINE CONSTANT INTERVALS:----------------------------------------------------
#define turnInterval 500
#define hazzardInterval 200
// SETUP ///////////////////////////////////////////////////////////////////////
void setup() {
pinMode(ledPin,OUTPUT);
// Setup button timers (all in milliseconds / ms)
// (These are default if not set, but changeable for convenience)
button1.debounceTime = 20; // Debounce timer in ms
button1.multiclickTime = 250; // Time limit for multi clicks
button1.longClickTime = 1000; // time until "held-down clicks" register
// SET INITIAL RELAY STATES TO AVOID MISFIRES AT STARTUP:------------------------
digitalWrite (runlightsPin,LOW);
digitalWrite (britesPin,HIGH);
digitalWrite (brakePin,HIGH);
digitalWrite (rightTurnPin, rightLight);
digitalWrite (leftTurnPin, leftLight);
digitalWrite (hornPin,HIGH);
digitalWrite (startPin, HIGH);
//digitalWrite (killPin, HIGH);
//digitalWrite (headlightPin,HIGH);
/* / ACTIVATE INPUT BUTTION PULLUPS:-----------------------------------------------
digitalWrite (britesCtrlPin, HIGH);
digitalWrite (brakeCtrlPin, HIGH);
digitalWrite (leftCtrlPin, HIGH);
digitalWrite (rightCtrlPin, HIGH);
digitalWrite (hornCtrlPin, HIGH);
digitalWrite (startCtrlPin, HIGH); */
/* // DEFINE INPUT PINS:------------------------------------------------------------
//pinMode(frontCtrlPin,INPUT);
pinMode(britesCtrlPin,INPUT_PULLUP);
pinMode(brakeCtrlPin,INPUT_PULLUP);
pinMode(leftCtrlPin,INPUT_PULLUP);
pinMode(rightCtrlPin,INPUT_PULLUP);
pinMode(hornCtrlPin,INPUT_PULLUP);
pinMode(startCtrlPin,INPUT_PULLUP); */
// Setup button timers (all in milliseconds / ms)
// (These are default if not set, but changeable for convenience)
//button1.debounceTime = 20; // Debounce timer in ms
brakeButton.multiclickTime = 1000; // Time limit for multi clicks
startButton.longClickTime = 1500; // time until "held-down clicks" register
// DEFINE OUTPUT PINS:-----------------------------------------------------------
pinMode(runlightsPin, OUTPUT);
pinMode(britesPin, OUTPUT);
pinMode(brakePin, OUTPUT);
pinMode(leftTurnPin, OUTPUT);
pinMode(rightTurnPin, OUTPUT);
pinMode(hornPin, OUTPUT);
pinMode(startPin, OUTPUT);
//pinMode(killPin, OUTPUT);
//pinMode(headlightPin, OUTPUT);
}
// MAIN LOOP ////////////////////////////////////////////////////////////////////
void loop()
{
// Update button state
button1.Update();
// Save click codes in LEDfunction, as click codes are reset at next Update()
if (button1.clicks != 0) LEDfunction = button1.clicks;
// Simply toggle LED on single clicks
// (Cant use LEDfunction like the others here,
// as it would toggle on and off all the time)
if(button1.clicks == 1) ledState = !ledState;
// blink faster if double clicked
if(LEDfunction == 2) ledState = (millis()/500)%2;
// blink even faster if triple clicked
if(LEDfunction == 3) ledState = (millis()/200)%2;
// slow blink (must hold down button. 1 second long blinks)
if(LEDfunction == -1) ledState = (millis()/1000)%2;
// slower blink (must hold down button. 2 second loong blinks)
if(LEDfunction == -2) ledState = (millis()/2000)%2;
// even slower blink (must hold down button. 3 second looong blinks)
if(LEDfunction == -3) ledState = (millis()/3000)%2;
// update the LED
digitalWrite(ledPin,ledState);
// CHECK CONDITIONS FOR EACH FUNCTION STATE AND CALL APPROPRIATE FUNCTION ////////////////////////
readInputSwitches();
if (runlightsActive == true && suspendRunlights == false ){ runlightsOn();}
else{runlightsOff();}
if (britesActive == true){britesOn();}
else{britesOff();}
if (brakeActive == true){brakeLightsOn();}
else{brakeLightsOff();}
if (hornActive == true){hornOn();}
else{hornOff();}
if (startActive == true){
starterOn();
suspendRunlights = true;
}
else{
starterOff();
suspendRunlights = false;
}
if (leftTurnActive == true){
leftTurnOn();
rightTurnActive = false;
parkActive = false;
hazzardActive = false;
}
else if (rightTurnActive == true){
rightTurnOn();
leftTurnActive = false;
parkActive = false;
hazzardActive = false;
}
else if (hazzardActive == true){
hazzardFlashers();
leftTurnActive = false;
rightTurnActive = false;
parkActive = false;
}
else if (parkActive == true){
parkingLightsOn();
leftTurnActive = false;
rightTurnActive = false;
hazzardActive = false;
}
else {blinkersOff();}
// TEST SEQUENCE TO CHECK FUNCTIONS WITHOUT BUTTONS
//leftTurnActive = true;
//rightTurnActive = true;
//hazzardActive = true;
//parkActive = true;
//brakeActive = true;
//headlightOn();
//britesActive = true;
//runlightsOff();
//hornActive = true;
//startActive = true;
}
//FUNCTIONS///////////////////////////////////////////////////////////////////
// READ INPUT SWITCHES
void readInputSwitches(){
//WITH CLICKBUTTON
britesButton.Update();
if (britesButton.depressed == true){britesActive = true;}
else britesActive = false;
leftButton.Update();
if (leftButton.depressed == true){leftTurnActive = true;}
else leftTurnActive = false;
rightButton.Update();
if (rightButton.depressed == true){rightTurnActive = true;}
else rightTurnActive = false;
brakeButton.Update();
if (brakeButton.depressed == true){brakeActive = true;}
else brakeActive = false;
hornButton.Update();
if (hornButton.depressed == true){hornActive = true;}
else hornActive = false;
startButton.Update();
if (startButton.depressed == true){startActive = true;}
else startActive = false;
/* WITHOUT CLICKBUTTON
if (digitalRead (britesCtrlPin) == LOW){britesActive = true;}
else britesActive = false;
if (digitalRead (leftCtrlPin) == LOW){leftTurnActive = true;}
else leftTurnActive = false;
if (digitalRead (rightCtrlPin) == LOW){rightTurnActive = true;}
else rightTurnActive = false;
if (digitalRead (brakeCtrlPin) == LOW){brakeActive = true;}
else brakeActive = false;
if (digitalRead (hornCtrlPin) == LOW){hornActive = true;}
else hornActive = false;
if (digitalRead (startCtrlPin) == LOW){startActive = true;}
else startActive = false; */
}
// RUNNING LIGHTS: --------------------------------------------------------------
void runlightsOn(){
digitalWrite(runlightsPin, LOW);
}
void runlightsOff(){
digitalWrite(runlightsPin, HIGH);
}
// HIGHBEAM: -------------------------------------------------------------------
void britesOn(){
digitalWrite(britesPin, LOW);
}
void britesOff(){
digitalWrite(britesPin, HIGH);
}
// BRAKE LIGHTS: ---------------------------------------------------------------
void brakeLightsOn(){
digitalWrite(brakePin, LOW);
}
void brakeLightsOff(){
digitalWrite(brakePin, HIGH);
}
// LEFT TURN SIGNAL: ---------------------------------------------------------
void leftTurnOn(){
unsigned long currentMs = millis();
if(currentMs - leftTurnMs >= turnInterval) {
// save the last time you blinked the LED
leftTurnMs = currentMs;
// if the LED is off turn it on and vice-versa:
if (leftLight == HIGH)
leftLight = LOW;
else
leftLight = HIGH;
// set the LED with the ledState of the variable:
digitalWrite(leftTurnPin, leftLight);
digitalWrite(rightTurnPin, HIGH);
}
}
// RIGHT TURN SIGNAL: ---------------------------------------------------------
void rightTurnOn(){
unsigned long currentMs = millis();
if(currentMs - rightTurnMs >= turnInterval) {
// save the last time you blinked the LED
rightTurnMs = currentMs;
// if the LED is off turn it on and vice-versa:
if (rightLight == HIGH)
rightLight = LOW;
else
rightLight = HIGH;
// set the LED with the ledState of the variable:
digitalWrite(rightTurnPin, rightLight);
digitalWrite(leftTurnPin, HIGH);
}
}
// HAZZARD FLASHERS: -----------------------------------------------------------
void hazzardFlashers(){
unsigned long currentMs = millis();
if(currentMs - hazzardMs >= hazzardInterval) {
// save the last time you blinked the LED
hazzardMs = currentMs;
// if the LED is off turn it on and vice-versa:
if (rightLight == HIGH)
rightLight = LOW;
else
rightLight = HIGH;
if (leftLight == HIGH)
leftLight = LOW;
else
leftLight = HIGH;
// set the LED with the ledState of the variable:
digitalWrite(rightTurnPin, rightLight);
digitalWrite(leftTurnPin, leftLight);
}
}
// PARKING LIGHTS: -------------------------------------------------------------
void parkingLightsOn(){
digitalWrite(rightTurnPin, LOW);
digitalWrite(leftTurnPin, LOW);
}
// BLINKERS OFF: ---------------------------------------------------------------
void blinkersOff(){
digitalWrite(rightTurnPin, HIGH);
digitalWrite(leftTurnPin, HIGH);
}
// HORN: ------------------------------------------------------------------------
void hornOn(){
digitalWrite(hornPin, LOW);
}
void hornOff(){
digitalWrite(hornPin, HIGH);
}
// STARTER: ---------------------------------------------------------------------
void starterOn(){
digitalWrite(startPin, LOW);
}
void starterOff(){
digitalWrite(startPin, HIGH);
}
/* / KILLSWITCH: ------------------------------------------------------------------
void killOn(){
digitalWrite(killPin, LOW);
}
void killOff(){
digitalWrite(killPin, HIGH);
}
*/
/* / HEADLIGHT: ------------------------------------------------------------------
void headlightOn(){
digitalWrite(headlightPin, LOW);
}
void headlightOff(){
digitalWrite(headlightPin, HIGH);
}
*/
[/spoil]
Vous pouvez bien sur enlever le relai du warning dans le code et vous servir du relais pour l'alimentation de votre boitier ignitech.

je vous mets le code.
[spoil]
//INCLUDE LIBRARIES:-------------------------------------------------------------
#include "ClickButton.h"
// the LED
const int ledPin = 5;
int ledState = 0;
// the Button
const int buttonPin1 = A6;
ClickButton button1(buttonPin1, HIGH, CLICKBTN_PULLUP);
// Arbitrary LED function
int LEDfunction = 0;
// DEFINE INITIAL FUNCTION STATES: ----------------------------------------------
boolean runlightsActive = true;
boolean britesActive = false;
boolean brakeActive = false;
boolean leftTurnActive = false;
boolean rightTurnActive = false;
boolean hornActive = false;
boolean startActive = false;
boolean suspendRunlights = false;
boolean parkActive = false;
boolean hazzardActive = false;
// DEFINE INPUT PINS: -----------------------------------------------------------//
#define frontCtrlPin
#define britesCtrlPin A7
#define brakeCtrlPin A4
#define leftCtrlPin A2
#define rightCtrlPin A4
#define hornCtrlPin A0
#define startCtrlPin A5
// DEFINE CLICKBUTTONS
ClickButton britesButton (britesCtrlPin, LOW, CLICKBTN_PULLUP);
ClickButton brakeButton (brakeCtrlPin, LOW, CLICKBTN_PULLUP);
ClickButton leftButton (leftCtrlPin, LOW, CLICKBTN_PULLUP);
ClickButton rightButton (rightCtrlPin, LOW, CLICKBTN_PULLUP);
ClickButton hornButton (hornCtrlPin, LOW, CLICKBTN_PULLUP);
ClickButton startButton (startCtrlPin, LOW, CLICKBTN_PULLUP);
// DEFINE RELAY PINS: -----------------------------------------------------------
#define runlightsPin 12
#define britesPin 11
#define brakePin 10
#define leftTurnPin 9
#define rightTurnPin 8
#define hornPin 6
#define startPin 7
// DEFINE INITIAL RELAY STATES FOR TIMED FUNCTIONS: -----------------------------
int leftLight = HIGH;
int rightLight = HIGH;
// DEFINE INITIAL MS COUNT FOR FUNCTIONS: ---------------------------------------
// will store last time LED was updated OR switch debonce
unsigned long leftTurnMs = 0;
unsigned long rightTurnMs = 0;
unsigned long hazzardMs = 0;
unsigned long britesCtrlMs = 0;
unsigned long brakeCtrlMS = 0;
unsigned long leftCtrlMS = 0;
unsigned long rightCtrlMS = 0;
unsigned long hornCtrlMS = 0;
unsigned long startCtrlMS = 0;
// DEFINE CONSTANT INTERVALS:----------------------------------------------------
#define turnInterval 500
#define hazzardInterval 200
// SETUP ///////////////////////////////////////////////////////////////////////
void setup() {
pinMode(ledPin,OUTPUT);
// Setup button timers (all in milliseconds / ms)
// (These are default if not set, but changeable for convenience)
button1.debounceTime = 20; // Debounce timer in ms
button1.multiclickTime = 250; // Time limit for multi clicks
button1.longClickTime = 1000; // time until "held-down clicks" register
// SET INITIAL RELAY STATES TO AVOID MISFIRES AT STARTUP:------------------------
digitalWrite (runlightsPin,LOW);
digitalWrite (britesPin,HIGH);
digitalWrite (brakePin,HIGH);
digitalWrite (rightTurnPin, rightLight);
digitalWrite (leftTurnPin, leftLight);
digitalWrite (hornPin,HIGH);
digitalWrite (startPin, HIGH);
//digitalWrite (killPin, HIGH);
//digitalWrite (headlightPin,HIGH);
/* / ACTIVATE INPUT BUTTION PULLUPS:-----------------------------------------------
digitalWrite (britesCtrlPin, HIGH);
digitalWrite (brakeCtrlPin, HIGH);
digitalWrite (leftCtrlPin, HIGH);
digitalWrite (rightCtrlPin, HIGH);
digitalWrite (hornCtrlPin, HIGH);
digitalWrite (startCtrlPin, HIGH); */
/* // DEFINE INPUT PINS:------------------------------------------------------------
//pinMode(frontCtrlPin,INPUT);
pinMode(britesCtrlPin,INPUT_PULLUP);
pinMode(brakeCtrlPin,INPUT_PULLUP);
pinMode(leftCtrlPin,INPUT_PULLUP);
pinMode(rightCtrlPin,INPUT_PULLUP);
pinMode(hornCtrlPin,INPUT_PULLUP);
pinMode(startCtrlPin,INPUT_PULLUP); */
// Setup button timers (all in milliseconds / ms)
// (These are default if not set, but changeable for convenience)
//button1.debounceTime = 20; // Debounce timer in ms
brakeButton.multiclickTime = 1000; // Time limit for multi clicks
startButton.longClickTime = 1500; // time until "held-down clicks" register
// DEFINE OUTPUT PINS:-----------------------------------------------------------
pinMode(runlightsPin, OUTPUT);
pinMode(britesPin, OUTPUT);
pinMode(brakePin, OUTPUT);
pinMode(leftTurnPin, OUTPUT);
pinMode(rightTurnPin, OUTPUT);
pinMode(hornPin, OUTPUT);
pinMode(startPin, OUTPUT);
//pinMode(killPin, OUTPUT);
//pinMode(headlightPin, OUTPUT);
}
// MAIN LOOP ////////////////////////////////////////////////////////////////////
void loop()
{
// Update button state
button1.Update();
// Save click codes in LEDfunction, as click codes are reset at next Update()
if (button1.clicks != 0) LEDfunction = button1.clicks;
// Simply toggle LED on single clicks
// (Cant use LEDfunction like the others here,
// as it would toggle on and off all the time)
if(button1.clicks == 1) ledState = !ledState;
// blink faster if double clicked
if(LEDfunction == 2) ledState = (millis()/500)%2;
// blink even faster if triple clicked
if(LEDfunction == 3) ledState = (millis()/200)%2;
// slow blink (must hold down button. 1 second long blinks)
if(LEDfunction == -1) ledState = (millis()/1000)%2;
// slower blink (must hold down button. 2 second loong blinks)
if(LEDfunction == -2) ledState = (millis()/2000)%2;
// even slower blink (must hold down button. 3 second looong blinks)
if(LEDfunction == -3) ledState = (millis()/3000)%2;
// update the LED
digitalWrite(ledPin,ledState);
// CHECK CONDITIONS FOR EACH FUNCTION STATE AND CALL APPROPRIATE FUNCTION ////////////////////////
readInputSwitches();
if (runlightsActive == true && suspendRunlights == false ){ runlightsOn();}
else{runlightsOff();}
if (britesActive == true){britesOn();}
else{britesOff();}
if (brakeActive == true){brakeLightsOn();}
else{brakeLightsOff();}
if (hornActive == true){hornOn();}
else{hornOff();}
if (startActive == true){
starterOn();
suspendRunlights = true;
}
else{
starterOff();
suspendRunlights = false;
}
if (leftTurnActive == true){
leftTurnOn();
rightTurnActive = false;
parkActive = false;
hazzardActive = false;
}
else if (rightTurnActive == true){
rightTurnOn();
leftTurnActive = false;
parkActive = false;
hazzardActive = false;
}
else if (hazzardActive == true){
hazzardFlashers();
leftTurnActive = false;
rightTurnActive = false;
parkActive = false;
}
else if (parkActive == true){
parkingLightsOn();
leftTurnActive = false;
rightTurnActive = false;
hazzardActive = false;
}
else {blinkersOff();}
// TEST SEQUENCE TO CHECK FUNCTIONS WITHOUT BUTTONS
//leftTurnActive = true;
//rightTurnActive = true;
//hazzardActive = true;
//parkActive = true;
//brakeActive = true;
//headlightOn();
//britesActive = true;
//runlightsOff();
//hornActive = true;
//startActive = true;
}
//FUNCTIONS///////////////////////////////////////////////////////////////////
// READ INPUT SWITCHES
void readInputSwitches(){
//WITH CLICKBUTTON
britesButton.Update();
if (britesButton.depressed == true){britesActive = true;}
else britesActive = false;
leftButton.Update();
if (leftButton.depressed == true){leftTurnActive = true;}
else leftTurnActive = false;
rightButton.Update();
if (rightButton.depressed == true){rightTurnActive = true;}
else rightTurnActive = false;
brakeButton.Update();
if (brakeButton.depressed == true){brakeActive = true;}
else brakeActive = false;
hornButton.Update();
if (hornButton.depressed == true){hornActive = true;}
else hornActive = false;
startButton.Update();
if (startButton.depressed == true){startActive = true;}
else startActive = false;
/* WITHOUT CLICKBUTTON
if (digitalRead (britesCtrlPin) == LOW){britesActive = true;}
else britesActive = false;
if (digitalRead (leftCtrlPin) == LOW){leftTurnActive = true;}
else leftTurnActive = false;
if (digitalRead (rightCtrlPin) == LOW){rightTurnActive = true;}
else rightTurnActive = false;
if (digitalRead (brakeCtrlPin) == LOW){brakeActive = true;}
else brakeActive = false;
if (digitalRead (hornCtrlPin) == LOW){hornActive = true;}
else hornActive = false;
if (digitalRead (startCtrlPin) == LOW){startActive = true;}
else startActive = false; */
}
// RUNNING LIGHTS: --------------------------------------------------------------
void runlightsOn(){
digitalWrite(runlightsPin, LOW);
}
void runlightsOff(){
digitalWrite(runlightsPin, HIGH);
}
// HIGHBEAM: -------------------------------------------------------------------
void britesOn(){
digitalWrite(britesPin, LOW);
}
void britesOff(){
digitalWrite(britesPin, HIGH);
}
// BRAKE LIGHTS: ---------------------------------------------------------------
void brakeLightsOn(){
digitalWrite(brakePin, LOW);
}
void brakeLightsOff(){
digitalWrite(brakePin, HIGH);
}
// LEFT TURN SIGNAL: ---------------------------------------------------------
void leftTurnOn(){
unsigned long currentMs = millis();
if(currentMs - leftTurnMs >= turnInterval) {
// save the last time you blinked the LED
leftTurnMs = currentMs;
// if the LED is off turn it on and vice-versa:
if (leftLight == HIGH)
leftLight = LOW;
else
leftLight = HIGH;
// set the LED with the ledState of the variable:
digitalWrite(leftTurnPin, leftLight);
digitalWrite(rightTurnPin, HIGH);
}
}
// RIGHT TURN SIGNAL: ---------------------------------------------------------
void rightTurnOn(){
unsigned long currentMs = millis();
if(currentMs - rightTurnMs >= turnInterval) {
// save the last time you blinked the LED
rightTurnMs = currentMs;
// if the LED is off turn it on and vice-versa:
if (rightLight == HIGH)
rightLight = LOW;
else
rightLight = HIGH;
// set the LED with the ledState of the variable:
digitalWrite(rightTurnPin, rightLight);
digitalWrite(leftTurnPin, HIGH);
}
}
// HAZZARD FLASHERS: -----------------------------------------------------------
void hazzardFlashers(){
unsigned long currentMs = millis();
if(currentMs - hazzardMs >= hazzardInterval) {
// save the last time you blinked the LED
hazzardMs = currentMs;
// if the LED is off turn it on and vice-versa:
if (rightLight == HIGH)
rightLight = LOW;
else
rightLight = HIGH;
if (leftLight == HIGH)
leftLight = LOW;
else
leftLight = HIGH;
// set the LED with the ledState of the variable:
digitalWrite(rightTurnPin, rightLight);
digitalWrite(leftTurnPin, leftLight);
}
}
// PARKING LIGHTS: -------------------------------------------------------------
void parkingLightsOn(){
digitalWrite(rightTurnPin, LOW);
digitalWrite(leftTurnPin, LOW);
}
// BLINKERS OFF: ---------------------------------------------------------------
void blinkersOff(){
digitalWrite(rightTurnPin, HIGH);
digitalWrite(leftTurnPin, HIGH);
}
// HORN: ------------------------------------------------------------------------
void hornOn(){
digitalWrite(hornPin, LOW);
}
void hornOff(){
digitalWrite(hornPin, HIGH);
}
// STARTER: ---------------------------------------------------------------------
void starterOn(){
digitalWrite(startPin, LOW);
}
void starterOff(){
digitalWrite(startPin, HIGH);
}
/* / KILLSWITCH: ------------------------------------------------------------------
void killOn(){
digitalWrite(killPin, LOW);
}
void killOff(){
digitalWrite(killPin, HIGH);
}
*/
/* / HEADLIGHT: ------------------------------------------------------------------
void headlightOn(){
digitalWrite(headlightPin, LOW);
}
void headlightOff(){
digitalWrite(headlightPin, HIGH);
}
*/
[/spoil]
salut.
tu penses faire comment pour installer les mosfet ?
tu fais imprimer un circuit ?
je te demande çà , car j'ai commandé un kit arduino , pour m'entrainer à faire un petit montage et de la programmation.
mais les relais comme les tiens sont un peu 'encombrants' , donc dans l'avenir je compterai faire comme toi avec mosfet .
A+
tu penses faire comment pour installer les mosfet ?
tu fais imprimer un circuit ?
je te demande çà , car j'ai commandé un kit arduino , pour m'entrainer à faire un petit montage et de la programmation.
mais les relais comme les tiens sont un peu 'encombrants' , donc dans l'avenir je compterai faire comme toi avec mosfet .
A+
Bonsoir
Je ne voie pas en quoi cela simplifie le faisceau.
Si je ne me trompe pas, il y a autant de fils que de boutons . Sauf erreur, le seul gain que je voie est sur la section des fils puisqu'ils ne font plus transiter la puissance des éléments à activer. Pour les sorties, idem, autant de fils que d'éléments à commander + le commun.
Si ensuite je rajoute les différents fils d'interconnexion entre les cartes et le pavé du programme.... je ne voie pas où est la simplification.
Après, si c'est pour ce faire plaisir en programmation et automatisme
J'ai un petit bémol aussi sur le langage C mais cela reste personnel. Pour ce type d'application ça le fera, sur quelque chose de plus compliqué il y a des risques de latence.
Pourquoi ne pas utiliser un nano automate industriel, ça existe en 12V, la programmation reste simple et le logiciel parfois gratuit, c'est compacte, extensible, entrees / sorties analogiques possibles..... ????
Je ne voie pas en quoi cela simplifie le faisceau.
Si je ne me trompe pas, il y a autant de fils que de boutons . Sauf erreur, le seul gain que je voie est sur la section des fils puisqu'ils ne font plus transiter la puissance des éléments à activer. Pour les sorties, idem, autant de fils que d'éléments à commander + le commun.
Si ensuite je rajoute les différents fils d'interconnexion entre les cartes et le pavé du programme.... je ne voie pas où est la simplification.
Après, si c'est pour ce faire plaisir en programmation et automatisme

J'ai un petit bémol aussi sur le langage C mais cela reste personnel. Pour ce type d'application ça le fera, sur quelque chose de plus compliqué il y a des risques de latence.
Pourquoi ne pas utiliser un nano automate industriel, ça existe en 12V, la programmation reste simple et le logiciel parfois gratuit, c'est compacte, extensible, entrees / sorties analogiques possibles..... ????
Salut
Il y a moins de fils car les boutons ont une masse commune donc pour 6 boutons = 7 fils avec une petite section de fils . ( on peut diminuer le nombres de boutons en attribuant plusieurs fonctions pour un bouton )
Pour la partie puissance ,il y aura une masse commune aussi .( avec la carte relai )
Pour les fils interconnections entre la carte et le relai , je pense intégrer la carte arduino + carte mosfet dans un même circuit.
J ai utilisé une carte compatible arduino pour son faible coût .
Il y a moins de fils car les boutons ont une masse commune donc pour 6 boutons = 7 fils avec une petite section de fils . ( on peut diminuer le nombres de boutons en attribuant plusieurs fonctions pour un bouton )
Pour la partie puissance ,il y aura une masse commune aussi .( avec la carte relai )
Pour les fils interconnections entre la carte et le relai , je pense intégrer la carte arduino + carte mosfet dans un même circuit.
J ai utilisé une carte compatible arduino pour son faible coût .
-
- CXMen Master
- Messages : 153
- Enregistré le : dim. 16 nov. 2014 14:14
- Localisation : Charente maritime
cool moi toute ma maison est gérée par un raspberry, manque plus que la moto.
Pour te donner des idées
https://buzzcasoni.blogspot.fr/
Pour te donner des idées
https://buzzcasoni.blogspot.fr/
- thierry mecano
- Thierry Mecano CX500
- Messages : 4291
- Enregistré le : dim. 01 oct. 2006 20:54
- Localisation : saint remy sur avre 28380
En regardant tout cela, c'est super intéressant pour le coté technique de la chose mais ou caser tout le bazar en plus par rapport au faisceau d'origine ?
Pour moi la moto doit rester simple à tous niveau, c'est le plus fiable et facile à entretenir.
Mais pourquoi pas tout gérer depuis son portable, c'est cela le progrès
Pour moi la moto doit rester simple à tous niveau, c'est le plus fiable et facile à entretenir.
Mais pourquoi pas tout gérer depuis son portable, c'est cela le progrès

500 Cx Rickman , 650 SilverWing qui sera remis en état au printemps!!
Pour les mosfet il y deux solutions .
Celle utilisant un mosfet type n

Il y a qu un seul transistor et une résistance . Le petit soucis est qu il est impossible d avoir une masse commune.
Car les éléments sont contrôlés par le pôle négatif .
Celle utilisant un mosfet type p

Il y a plus de composants mais le montage est simplifié car la masse est commune .
Un plaque d essai me semble pas mal

Celle utilisant un mosfet type n

Il y a qu un seul transistor et une résistance . Le petit soucis est qu il est impossible d avoir une masse commune.
Car les éléments sont contrôlés par le pôle négatif .
Celle utilisant un mosfet type p

Il y a plus de composants mais le montage est simplifié car la masse est commune .
Un plaque d essai me semble pas mal

ce boîtier sert à remplacer tout le faisceau d'origine .
Il faut tout recabler. ( comme le boîtier de motogadget .)
Avec l arduino vous pouvez via le Bluetooth utiliser votre portable pour remplacer vos commodos .
Il faut tout recabler. ( comme le boîtier de motogadget .)
Avec l arduino vous pouvez via le Bluetooth utiliser votre portable pour remplacer vos commodos .
Modifié en dernier par chicken le sam. 18 juin 2016 08:54, modifié 1 fois.
Pour simplifier encore plus le faisceau , on peut aussi multiplexer le signal des boutons poussoirs . Il n y aurais plus que deux fils .Un peu comme chez motogadget
Explication
Je ne sais pas si cela marchera au top car j ai peur des interférences .
Explication
Je ne sais pas si cela marchera au top car j ai peur des interférences .
-
- CXMen forumeur
- Messages : 53
- Enregistré le : sam. 13 avr. 2019 12:00
- Localisation : 38150 salaise sur sanne
Re: Centrale électronique avec un arduino
Bonjour,
Je suis nouveau sur le forum. J'ai aqcueri il y a peut de temps une Honda cx 500 de 1980 et en cherchant un peu sur internet des idées de transformations,je suis tombé sur votre forum qui est super. On y trouve plein d'infos et d'avis intéressants dont ce sujet qui m'intéresse beaucoup étant donné que je suis passionné d'électronique. Je trouve que c'est une excellente idée d installer un arduino ainsi que le multiplexage pour simplifier le faisceau. Je ne sais pas encore si je vais le faire sur la cx, mais c'est sur que je vais essayer sur un projet de sustom
Je suis nouveau sur le forum. J'ai aqcueri il y a peut de temps une Honda cx 500 de 1980 et en cherchant un peu sur internet des idées de transformations,je suis tombé sur votre forum qui est super. On y trouve plein d'infos et d'avis intéressants dont ce sujet qui m'intéresse beaucoup étant donné que je suis passionné d'électronique. Je trouve que c'est une excellente idée d installer un arduino ainsi que le multiplexage pour simplifier le faisceau. Je ne sais pas encore si je vais le faire sur la cx, mais c'est sur que je vais essayer sur un projet de sustom