|
Modérateurs: Modération Forum Installations, Modération Forum DIY, Le Bureau de l’Association HCFR • Utilisateurs parcourant ce forum: breizh_surfer et 79 invités
Discussions générales sur le DIY Audio : choix des HP, comparaisons des principes : clos vs BR, etc
Projet integration ampli+dsp+vu-metres etc
[Mod-On] Supprimé, message publicitaire [/Mod-Off]
- sounox
- Messages: 2
- Inscription Forum: 19 Oct 2022 9:31
- Le yann
- Messages: 358
- Inscription Forum: 29 Mai 2010 11:18
C'est beau !
La configuration dans mon profil
La bougie de ton intelligence n'éclairera ta vie que le jour où tu arrêteras toi-même de souffler dessus !
On ne peut pas donner à boire à un âne qui n'a pas soif π
- Dagda
- Membre HCFR
- Messages: 15244
- Inscription Forum: 22 Déc 2005 14:53
Salut,
Il me reste toujours la plaque du dessus à faire, mais comme l’ampli est dans son meuble à l’abri de la poussiere et que ca se voit pas ben ca me pousse pas à la faire. Mais la faut que je m’y mette histoire d’avoir vraiment fini à 100%.
Bref.
J’ai un petit bug, mais qui à la longue me les brise : dés que l’ampli est eteint (inactif) depuis longtemps genre 1 semaine environ (donc aucun signal n’a ete recu par l’arduino), ben il ne veut pas s’allumer.
On dirait que l’arduino est dans un sommeil profond et j’arrive pas a le reveiller. Pour sortir de ce bug, il faut que je coupe l’alimentation ( a la prise) et que je rebranche. Et la tout fonctionne parfaitement, le bonton de la telecommande actionne bien on/off
Une idee ?
Il me reste toujours la plaque du dessus à faire, mais comme l’ampli est dans son meuble à l’abri de la poussiere et que ca se voit pas ben ca me pousse pas à la faire. Mais la faut que je m’y mette histoire d’avoir vraiment fini à 100%.
Bref.
J’ai un petit bug, mais qui à la longue me les brise : dés que l’ampli est eteint (inactif) depuis longtemps genre 1 semaine environ (donc aucun signal n’a ete recu par l’arduino), ben il ne veut pas s’allumer.
On dirait que l’arduino est dans un sommeil profond et j’arrive pas a le reveiller. Pour sortir de ce bug, il faut que je coupe l’alimentation ( a la prise) et que je rebranche. Et la tout fonctionne parfaitement, le bonton de la telecommande actionne bien on/off
Une idee ?
- Le yann
- Messages: 358
- Inscription Forum: 29 Mai 2010 11:18
Bonjour
Cela ressemble a un débordement de compteur. Quand tu débranches et rebranches, en fait tu fais un reset de l'arduino, et le compteur repart à 0.
Il doit y avoir un compteur de temps mal défini dans le programme. Tu as le code complet du programme? Je ne suis pas un pro, mais des fois je trouve le bug...
Cela ressemble a un débordement de compteur. Quand tu débranches et rebranches, en fait tu fais un reset de l'arduino, et le compteur repart à 0.
Il doit y avoir un compteur de temps mal défini dans le programme. Tu as le code complet du programme? Je ne suis pas un pro, mais des fois je trouve le bug...
- fiscal
- Pro-Fabricant
- Messages: 2985
- Inscription Forum: 31 Aoû 2006 15:29
- Localisation: VILLEURBANNE
Salut, et merci, je l’avais note. Le voici :
Pour les vu metre
#include <IRremote.h>
#define RECV_PIN 3
#define RELAY_PIN 5
#define RELAY_TYPE HIGH // for a low level relay
//#define RELAY_TYPE HIGH // for a high level relay
IRrecv irrecv(RECV_PIN);
decode_results results;
void setup()
{
Serial.begin(115200);
Serial.println("IR remote");
pinMode(RELAY_PIN, OUTPUT);
digitalWrite(RELAY_PIN, RELAY_TYPE == HIGH);
irrecv.enableIRIn();
}
void loop()
{
if (irrecv.decode(&results)) {
Serial.println(results.value, HEX);
if (results.value == 0xAC53609F) {
int actual = digitalRead(RELAY_PIN);
Serial.print(actual == RELAY_TYPE ? "Turn OFF" : "Turn ON"); Serial.println(" the relay");
digitalWrite(RELAY_PIN, !actual);
}
irrecv.resume();
}
delay(100);
}
Pour l’ampli :
#include <IRremote.h>
#define RECV_PIN 3
#define RELAY_PIN 4
#define RELAY_TYPE HIGH // for a low level relay
//#define RELAY_TYPE HIGH // for a high level relay
IRrecv irrecv(RECV_PIN);
decode_results results;
void setup()
{
Serial.begin(115200);
Serial.println("IR remote");
pinMode(RELAY_PIN, OUTPUT);
digitalWrite(RELAY_PIN, RELAY_TYPE == HIGH);
irrecv.enableIRIn();
}
void loop()
{
if (irrecv.decode(&results)) {
Serial.println(results.value, HEX);
if (results.value == 0xAC5302FD) {
int actual = digitalRead(RELAY_PIN);
Serial.print(actual == RELAY_TYPE ? "Turn OFF" : "Turn ON"); Serial.println(" the relay");
digitalWrite(RELAY_PIN, !actual);
}
irrecv.resume();
}
delay(100);
}
Ils sont similaires car je n'ai changé que le PIN et le code hexa.
Pour les vu metre
#include <IRremote.h>
#define RECV_PIN 3
#define RELAY_PIN 5
#define RELAY_TYPE HIGH // for a low level relay
//#define RELAY_TYPE HIGH // for a high level relay
IRrecv irrecv(RECV_PIN);
decode_results results;
void setup()
{
Serial.begin(115200);
Serial.println("IR remote");
pinMode(RELAY_PIN, OUTPUT);
digitalWrite(RELAY_PIN, RELAY_TYPE == HIGH);
irrecv.enableIRIn();
}
void loop()
{
if (irrecv.decode(&results)) {
Serial.println(results.value, HEX);
if (results.value == 0xAC53609F) {
int actual = digitalRead(RELAY_PIN);
Serial.print(actual == RELAY_TYPE ? "Turn OFF" : "Turn ON"); Serial.println(" the relay");
digitalWrite(RELAY_PIN, !actual);
}
irrecv.resume();
}
delay(100);
}
Pour l’ampli :
#include <IRremote.h>
#define RECV_PIN 3
#define RELAY_PIN 4
#define RELAY_TYPE HIGH // for a low level relay
//#define RELAY_TYPE HIGH // for a high level relay
IRrecv irrecv(RECV_PIN);
decode_results results;
void setup()
{
Serial.begin(115200);
Serial.println("IR remote");
pinMode(RELAY_PIN, OUTPUT);
digitalWrite(RELAY_PIN, RELAY_TYPE == HIGH);
irrecv.enableIRIn();
}
void loop()
{
if (irrecv.decode(&results)) {
Serial.println(results.value, HEX);
if (results.value == 0xAC5302FD) {
int actual = digitalRead(RELAY_PIN);
Serial.print(actual == RELAY_TYPE ? "Turn OFF" : "Turn ON"); Serial.println(" the relay");
digitalWrite(RELAY_PIN, !actual);
}
irrecv.resume();
}
delay(100);
}
Ils sont similaires car je n'ai changé que le PIN et le code hexa.
- Le yann
- Messages: 358
- Inscription Forum: 29 Mai 2010 11:18
Bonjour
Je ne vois pas dans cet extrait de fonction faisant appel à un compteur de temps (genre micros() ou millis()). Ce n'est donc pas ce que je croyais.
As tu vérifié que les tensions d'alimentation de la carte arduino sont bien constantes sur une longue durée?
Tu utilises la fonction "serial", c'est pour afficher quelques chose sur le serial monitor (je n'ai pas vu d'autres afficheurs, LCD ou autre)?
Si je comprends bien, tu as deux programmes distincts, un pour fonction ON/OFF avec la télécommande, et l'autre pour les vu mètres (je n'ai pas bien compris le fonctionnement de ce dernier, mais ce n'est pas sujet), le tout sur une seule carte arduino?
Cdt
Je ne vois pas dans cet extrait de fonction faisant appel à un compteur de temps (genre micros() ou millis()). Ce n'est donc pas ce que je croyais.
As tu vérifié que les tensions d'alimentation de la carte arduino sont bien constantes sur une longue durée?
Tu utilises la fonction "serial", c'est pour afficher quelques chose sur le serial monitor (je n'ai pas vu d'autres afficheurs, LCD ou autre)?
Si je comprends bien, tu as deux programmes distincts, un pour fonction ON/OFF avec la télécommande, et l'autre pour les vu mètres (je n'ai pas bien compris le fonctionnement de ce dernier, mais ce n'est pas sujet), le tout sur une seule carte arduino?
Cdt
- fiscal
- Pro-Fabricant
- Messages: 2985
- Inscription Forum: 31 Aoû 2006 15:29
- Localisation: VILLEURBANNE
Salut,
Oui en effet j’ai 2 programmes sur le meme arduino. Cet arduino commande 2 relais : un pour commuter l’ampli de puissance, et l’autre pour commuter les vu-metre. Ainsi, je peux choisir d’ecouter de la musique sans forcement avoir les vu metre allumes (pratique pour les films dans le noir par exemple)
Pour cette histoire de tension, c’est pas bete j’y avais pas pense. Je vais mesurer combien j’ai en sortie de mon alim qui est celle-ci https://www.audiophonics.fr/fr/kits-et- ... 10285.html
Mais de toute facon l’arduino transforme le 7 à 12v en 5v sur sa borne VIN, donc il ne devrait pas y avoir de probleme a ce niveau la non ?
Oui en effet j’ai 2 programmes sur le meme arduino. Cet arduino commande 2 relais : un pour commuter l’ampli de puissance, et l’autre pour commuter les vu-metre. Ainsi, je peux choisir d’ecouter de la musique sans forcement avoir les vu metre allumes (pratique pour les films dans le noir par exemple)
Pour cette histoire de tension, c’est pas bete j’y avais pas pense. Je vais mesurer combien j’ai en sortie de mon alim qui est celle-ci https://www.audiophonics.fr/fr/kits-et- ... 10285.html
Mais de toute facon l’arduino transforme le 7 à 12v en 5v sur sa borne VIN, donc il ne devrait pas y avoir de probleme a ce niveau la non ?
- Le yann
- Messages: 358
- Inscription Forum: 29 Mai 2010 11:18
Bonjour
Déjà on peut simplifier le programme.
Si j'ai bien compris ce sont deux relais de type High, c'est à dire que les relais collent lorsque la tension de commande est au niveau haut (5V)
Ensuite, aucune autre fonction de l'arduino que de commander ces deux relais à l'aide de la télécommande
je te proposerai ce soir un programme plus simple. Il y a des redondances dans le tien, et tu n'as plus besoin de la fonction serial (qui t'as servi au départ pour détecter le code envoyé par la télécommande). Il est possible que le problème vienne de là
Cdt
Déjà on peut simplifier le programme.
Si j'ai bien compris ce sont deux relais de type High, c'est à dire que les relais collent lorsque la tension de commande est au niveau haut (5V)
Ensuite, aucune autre fonction de l'arduino que de commander ces deux relais à l'aide de la télécommande
je te proposerai ce soir un programme plus simple. Il y a des redondances dans le tien, et tu n'as plus besoin de la fonction serial (qui t'as servi au départ pour détecter le code envoyé par la télécommande). Il est possible que le problème vienne de là
Cdt
- fiscal
- Pro-Fabricant
- Messages: 2985
- Inscription Forum: 31 Aoû 2006 15:29
- Localisation: VILLEURBANNE
Le yann a écrit:
Mais de toute facon l’arduino transforme le 7 à 12v en 5v sur sa borne VIN, donc il ne devrait pas y avoir de problème a ce niveau la non ?
Non, sur la borne Vin, c'est la tension qui alimente ton arduino (12V dans ton cas si j'ai bien suivi).
les 5V c'est sur la borne 5V de l'arduino
- fiscal
- Pro-Fabricant
- Messages: 2985
- Inscription Forum: 31 Aoû 2006 15:29
- Localisation: VILLEURBANNE
Bonsoir
Je te propose de tester le prog suivant. La version que tu utilises actuellement a été réalisé par une personne vraisemblablement bien plus expérimenté que moi, mais réalisé en C++ et incluant des fonctions qui ne sont plus utiles depuis que tu as détecté le code d'émission de ta telco.
les joies des bibliothèques arduino; j'utilise ici la dernière bibliothèque de Shirriff, alors que dans ton programme il s'agit d'une ancienne version qui ne fonctionne plus (sauf si tes bibliothèques n'ont pas été mises à jour). Bref, il faudra veiller à l'avoir installer , sinon revenir à l'ancienne. Si tu ne sais pas vérifier ou installer une bibliothèque, ne t'inquiètes pas, c'est très simple!
https://github.com/Arduino-IRremote/Arduino-IRremote pour plus d'info.
Cordialement
Je te propose de tester le prog suivant. La version que tu utilises actuellement a été réalisé par une personne vraisemblablement bien plus expérimenté que moi, mais réalisé en C++ et incluant des fonctions qui ne sont plus utiles depuis que tu as détecté le code d'émission de ta telco.
les joies des bibliothèques arduino; j'utilise ici la dernière bibliothèque de Shirriff, alors que dans ton programme il s'agit d'une ancienne version qui ne fonctionne plus (sauf si tes bibliothèques n'ont pas été mises à jour). Bref, il faudra veiller à l'avoir installer , sinon revenir à l'ancienne. Si tu ne sais pas vérifier ou installer une bibliothèque, ne t'inquiètes pas, c'est très simple!
https://github.com/Arduino-IRremote/Arduino-IRremote pour plus d'info.
Cordialement
- Code: Tout sélectionner
#include <IRremote.hpp> // Inclue bibliothèque IR (dernière version 4.4.0 de shirriff )
//#include <IRremote.h> //Idem, vieille bibliothèque à tester, les codes des fonctions appelées doivent être changées, Cf ton prog ini.
const int RECV_PIN = 3; // défini pin de réception du modulateur IR
const int relai_amp = 4; // défini pin de de commande du relai ampli
const int relai_vm = 5; // défini pin de de commande du relai ampli
bool etat_relai_amp = LOW; // variable de stockage de l'état du relais ampli, bas au démarrage du prg
bool etat_relai_vm = LOW; // variable de stockage de l'état du relais vu mètre, bas au démarrage du prg
void setup() {
IrReceiver.begin(RECV_PIN, ENABLE_LED_FEEDBACK); // demarre la fonction reception IR
//IRrecv irrecv(RECV_PIN); // idem, mais ne fonctionne vraisemblablement plus avec la mise à jour de la bibliothèque
pinMode(relai_amp, OUTPUT);
pinMode(relai_vm, OUTPUT);
//digitalWrite(relai_amp, LOW); //fixe état bas au relai ampli, (normalement inutile)
//digitalWrite(relai_vm, LOW); //idem relai vu mètre
}
void loop() {
if (IrReceiver.decode()) {
if (IrReceiver.decodedIRData.decodedRawData == 0xAC5302FD) { // si reception du code allumage ampli
etat_relai_amp = !etat_relai_amp; // inverse la variable de stockage de l'état du relais ampli
digitalWrite(relai_amp, etat_relai_amp); // écrit cette variable sur la pin de commande du relais
delay(100);
}
IrReceiver.resume(); // Reception valeur suivante
}
if (IrReceiver.decode()) {
if (IrReceiver.decodedIRData.decodedRawData == 0xAC53609F) { // si reception du code allumage vu mètre
etat_relai_vm = !etat_relai_vm; // inverse la variable de stockage de l'état du relais vu mètre
digitalWrite(relai_vm, etat_relai_vm); // écrit cette variable sur la pin de commande du relais
delay(100);
}
IrReceiver.resume(); // Reception valeur suivante
}
}
- fiscal
- Pro-Fabricant
- Messages: 2985
- Inscription Forum: 31 Aoû 2006 15:29
- Localisation: VILLEURBANNE
- Le yann
- Messages: 358
- Inscription Forum: 29 Mai 2010 11:18
C'est propre
Si tu testes le code que j'ai proposé, il faut simplement copié collé dans l'IDE Arduino.
Si tu as un message d'erreur au téléversement, c'est probablement que la bibliothèque n'est pas installée. Le message d'erreur te l'indiquera.
Dans ce cas, il faut aller dans le menu gestionaire des bibliothèque, taper IRremote dans la barre de recherche, et trouver celle que je t'ai indiquée (il faut être connecté au réseau)
Tu l'installes, tu fermes tout, et tu recommences.
Dans ton code original, il y a deux fonctions setup, avec du code redondant, je ne sais pas comment l'arduino l'interprète. De plus, toutes les fonctions Serial... sont inutiles, çà bouffe de la mémoire pour rien, et c'est aussi la redondance infinie d'envoi des mêmes données qui n'aboutissent nul part qui peut faire planter ton programme.
Tu me diras si çà marche mieux!
Cordialement
Si tu testes le code que j'ai proposé, il faut simplement copié collé dans l'IDE Arduino.
Si tu as un message d'erreur au téléversement, c'est probablement que la bibliothèque n'est pas installée. Le message d'erreur te l'indiquera.
Dans ce cas, il faut aller dans le menu gestionaire des bibliothèque, taper IRremote dans la barre de recherche, et trouver celle que je t'ai indiquée (il faut être connecté au réseau)
Tu l'installes, tu fermes tout, et tu recommences.
Dans ton code original, il y a deux fonctions setup, avec du code redondant, je ne sais pas comment l'arduino l'interprète. De plus, toutes les fonctions Serial... sont inutiles, çà bouffe de la mémoire pour rien, et c'est aussi la redondance infinie d'envoi des mêmes données qui n'aboutissent nul part qui peut faire planter ton programme.
Tu me diras si çà marche mieux!
Cordialement
- fiscal
- Pro-Fabricant
- Messages: 2985
- Inscription Forum: 31 Aoû 2006 15:29
- Localisation: VILLEURBANNE
|
Retourner vers Discussions Générales
|