En Français plus loin ci-dessous.
#Story I own a beautiful little Renault Clio 2. As I was building a Arduino-based radio for the car, I wanted to be able to control it with the steering wheel controller.
Here's a library to listen to the controller.
#Wiring and init Simply remove the existing radio to find the good cable.
It's basically a matrix type keypad :
The library need the green, blue and yellow wires to be linked to digital pins, and the black, brown and red ones to analog pins. Be carefull, order is important !
uint8_t inputs[3] = {
0, //black
1, //brown
2 //red
}; //analog A0, A1, A2
uint8_t outputs[3] = {
7, //green
6, //blue
5 //yellow
}; //digital D7, D6, D5
WHEEL_CMD controller(inputs, outputs);#API See example.ino.
Update buttons status.
Will goes on each output wire and check if there is a button pressed.
void loop() {
controller.update()
//stuff
}It returns the events PRESSED, HOLD or NO_NEWS of a button.
button could be :
BTN_SOURCE_RIGHTBTN_MUTEBTN_SOURCE_LEFTBTN_WHEEL_1BTN_WHEEL_2BTN_WHEEL_3BTN_MODEBTN_VOL_UPBTN_VOL_DOWN
PRESS and HOLD events are fired after a certain number of loop()
defined by the INTERVAL_PRESS and INTERVAL_HOLD constants.
uint8_t btn = controller.getButton(BTN_VOL_UP);
if (btn == PRESSED) {
Serial.print(buttons_str_test[BTN_VOL_UP]);
Serial.println(F("Volume up please"));
} else if (btn == HOLD) {
Serial.print(buttons_str_test[BTN_VOL_UP]);
Serial.println(F("Volume up is hold"));
}It returns WHEEL_UP, WHEEL_DOWN or NO_NEWS events of the little wheel
behind the controller.
uint8_t wheel = controller.getWheel();
if (wheel == WHEEL_UP) {
Serial.println(F("Wheel UP"));
} else if (wheel == WHEEL_DOWN) {
Serial.println(F("Wheel DOWN"));
}French:
Je possède une Renault Clio 2 pour laquelle j'ai construit un autoradio Arduino pour remplacer l'autoradio d'origine qui rendait l'âme.
J'ai eu besoin de développer cette librairie pour écouter les commandes envoyées par le conducteur via la manette placée sous le volant

