Je possède un ampli Yamaha qui me donne toute satisfaction .
pour info : lien-Web-Yamaha
je n'ai pas sa télécommande .... et je dois me lever pour modifier le son.
Je ne trouve pas la télécommande originale qui ne doit pas être bon marché.
Alors je vais tenter de réaliser avec Arduino un moyen de tourner le bouton de volume a partir d'une télécommande quelconque !
*********
il me faut
une détection Ir
un Arduino Uno pour commencer avec les connections volantes
une télécommande quelconque
un moteur Pas à Pas
une poulie + courroie (ou élastique)
Un boîtier
l'interface de programmation Arduino
sous Linux dans mon cas .
ET
faire le programme
****************
La liste est faite..... c'est parti !
une détection Ir
un arduino Uno pour commencer
Une télécommande quelconque
et je prévois une deuxième télécommande qui traînait dans un tiroir
un moteur Pas à Pas
Une poulie + courroie
boutons + élastique
le boitier
l'interface arduino
**************
Pour le programme je ne vais pas réinventer l'eau tiède
la méthode existe.
il faut
choisir les touches de la télécommande à utiliser
identifier le code de ces touches
Définir l'action selon la touche pressée
---
Pour le programme
il faut inclure les bibliothèques
"Infrarouge"
et
"moteur pas a pas"
--
lire le code reçu par la partie Ir
et
selon ce code
actionner le moteur vers la droite ou la gauche.
voici un exemple de code à recevoir et à traiter
Le programme final (trés court)
se trouve tout en bas.
----
Passons au prototype
Je travaille sur une serviette cela me permet de
tout faire pivoter d'un coup, c'est bien plus facile .
j'ai utilisé dans un premier temps un Arduino Uno + plus une plaque de connections et tout le câblage volant.
--
voici la partie Ir et sa diode témoin (avec la commande de l'affichage 16*2)
là tout est câblé et fonctionnel.
il faut maintenant réduire le volume de tout cela
utiliser un Arduino Nano
virer l'afficheur de test , la diode témoin puis souder le tout.
ici l'arduino Nano , bien plus petit.
placer le tout dans le boîtier de pilule après avoir
forer un trou pour le moteur
vernir les bavures et rayures
coller le moteur dans la boite
et voilà
Pour la poulie , le premier essai fut un échec puis j'ai utilisé des boutons de manteau , là ça marche !
---------
le contrôleur du moteur
le nano et ses connections
le détecteur ir
Le tout dans sa boite et la première poulie.
voici le tout en place , je dois repeindre la poulie
J'ai repeint la poulie ... plus joli , non ?
Les vidéos montrant le fonctionnement
(fonctionnent elles avec tous les navigateurs ????)
avec la première poulie
et finalement avec la deuxième commande et la deuxième poulie
Amélioration à prévoir
tenter l'implantation sur Arduino Tyni et un I²C pour combler le manque de pattes du Tyni - A évaluer -
Prévoir une touche autre sur la télécommande qui baisse le son d'un coup automatiquement et une autre qui le remet au même volume , en cas de coup de téléphone par exemple une fonction MUTE en quelque sorte
Pour le moment l'appui prolongé ne fonctionne pas (je ne l'ais pas programmé) il le faudrait pour économiser les piles de la télécommande
-------------
Le programme
#include "IRremoteInt.h"
#include "IRremote.h"
#include "Stepper.h"
const int RECV_PIN = 8; // reception pin 8
IRrecv irrecv(RECV_PIN);
decode_results results;
double stepsPerRevolution = 2048;
Stepper myStepper(stepsPerRevolution, 9, 11, 10, 12);
// sequence des pin moteur
void setup() {
Serial.begin(9600); // initialisation liaison série
irrecv.enableIRIn(); // initialisation reception Ir
irrecv.blink13(true); // la diode implémenté clignote a la reception
myStepper.setSpeed(10); // pas du moteur
} // void setup
void loop() {
if (irrecv.decode(&results)){ // si reception trame correcte
Serial.println(results.value); // liaison pc
irrecv.resume(); / resume Ir
}
switch (results.value) { // debut de la structure code sylver crest kh 2311
case (16748655): // cas <<<<< autre touche
myStepper.step(-100);
break;
case (16756815): // cas volume -
myStepper.step(100);
break;
case (16724175): // cas volume +
myStepper.step(-100);
break;
case (16740495): // cas >>>>> autre touche
myStepper.step(100);
break;
case (1489202892): // cas commande blanche off = +
myStepper.step(-100);
break;
case (3925222132): // cas commande blanche on = -
myStepper.step(100);
break;
case (4294967295): // cas touche enfoncé longuement non fonctionnel
break;
} // fin switch
results.value= 0; // force l' arret du moteur en effaçant le code
} //void loop
void setup() {
Serial.begin(9600); // initialisation liaison série
irrecv.enableIRIn(); // initialisation reception Ir
irrecv.blink13(true); // la diode implémenté clignote a la reception
myStepper.setSpeed(10); // pas du moteur
} // void setup
void loop() {
if (irrecv.decode(&results)){ // si reception trame correcte
Serial.println(results.value); // liaison pc
irrecv.resume(); / resume Ir
}
switch (results.value) { // debut de la structure code sylver crest kh 2311
case (16748655): // cas <<<<< autre touche
myStepper.step(-100);
break;
case (16756815): // cas volume -
myStepper.step(100);
break;
case (16724175): // cas volume +
myStepper.step(-100);
break;
case (16740495): // cas >>>>> autre touche
myStepper.step(100);
break;
case (1489202892): // cas commande blanche off = +
myStepper.step(-100);
break;
case (3925222132): // cas commande blanche on = -
myStepper.step(100);
break;
case (4294967295): // cas touche enfoncé longuement non fonctionnel
break;
} // fin switch
results.value= 0; // force l' arret du moteur en effaçant le code
} //void loop
**********************************************************
c'est une bien petite réalisation qui permet d'approcher la programmation avec de l'Ir et des moteurs pas à pas, de tenter d'identifier le code Ir des différentes télécommandes
Il faut maintenant l' améliorer !
Je suis preneur de toute suggestion !
Cdlt.
LN 03/2020