|
| contrôle de prise avec code 433mhz | |
| | |
Auteur | Message |
---|
Biduleohm Modérateur
Nombre de messages : 8851 Date d'inscription : 25/03/2009
| Sujet: Re: contrôle de prise avec code 433mhz Lun 21 Jan - 2:27 | |
| Ben l'idéal serait de trouver le signal qui pilote l'émetteur (un signal carré). Une fois trouvé il vaut mieux voir les différences en appuyant sur différents boutons. Mais en fait, je viens de penser que si t'as accès à un oscillo t'as pas besoin d'arduino ou autre il suffit de faire une capture si c'est un oscillo numérique ou une photo ou un relevé à la main si c'est un analogique | |
| | | Nightmare Jeune bricoleur
Nombre de messages : 240 Age : 31 Localisation : Lille Emploi/loisirs : Doctorant / artificier Humeur : Bonne :) Date d'inscription : 28/10/2009
| Sujet: Re: contrôle de prise avec code 433mhz Lun 21 Jan - 2:30 | |
| Ah bah ça serait direct c'est cool ^^ mais je vais devoir faire 8 captures au total, mais c'est numérique donc ça devrait aller. Je mesure entre l'entrée émetteur et quoi aussi? la borne négative? | |
| | | Biduleohm Modérateur
Nombre de messages : 8851 Age : 33 Localisation : 77 Seine-et-Marne Emploi/loisirs : bricolage, informatique, électronique, THT, laser, aquariophilie Humeur : Date d'inscription : 25/03/2009
| Sujet: Re: contrôle de prise avec code 433mhz Lun 21 Jan - 2:42 | |
| Oui, on mesure toujours par rapport à la masse, sauf cas particulier | |
| | | coco pop's Habitué du marteau
Nombre de messages : 790 Age : 30 Localisation : Tours / Centre Emploi/loisirs : BTS Electrotechnique / Patator, airsoft, électricité Humeur : Boff, ça dépend :D Date d'inscription : 17/01/2009
| Sujet: Re: contrôle de prise avec code 433mhz Lun 21 Jan - 2:43 | |
| Sinon ta un nom pour l'µC que je cherche le datasheet ? | |
| | | Nightmare Jeune bricoleur
Nombre de messages : 240 Age : 31 Localisation : Lille Emploi/loisirs : Doctorant / artificier Humeur : Bonne :) Date d'inscription : 28/10/2009
| Sujet: Re: contrôle de prise avec code 433mhz Lun 21 Jan - 2:46 | |
| je te donne ça : SC5262S NC2B01B | |
| | | coco pop's Habitué du marteau
Nombre de messages : 790 Age : 30 Localisation : Tours / Centre Emploi/loisirs : BTS Electrotechnique / Patator, airsoft, électricité Humeur : Boff, ça dépend :D Date d'inscription : 17/01/2009
| Sujet: Re: contrôle de prise avec code 433mhz Lun 21 Jan - 3:04 | |
| http://www.alldatasheet.com/datasheet-pdf/pdf/116104/SILAN/SC5262S-RF.html
Comme tu peux voir tu à un codage en binaire 6 - 8 Bits ça dep de t'es data en fait c'est une télécommande combien de canaux ? | |
| | | Nightmare Jeune bricoleur
Nombre de messages : 240 Age : 31 Localisation : Lille Emploi/loisirs : Doctorant / artificier Humeur : Bonne :) Date d'inscription : 28/10/2009
| Sujet: Re: contrôle de prise avec code 433mhz Lun 21 Jan - 3:13 | |
| c'est une télécommande 4 canaux celle ci : http://scs-laboutique.com/Electricite/Commande+a+distance/s3162+1000w+kit+2+prises+telecommand-2303
tant qu'a faire je vais parler du projet général, le but est de contrôler des prises électriques avec un téléphone android via bluetooth. donc pour résumer téléphone> module bluetooth > carte arduino > module RF > prises Pour l'instant j'ai commencé le programme arduino (v1rgule va me filer un coup de main qui je pense sera pas négligeable sur cette partie), et modifié une l'application android.
| |
| | | coco pop's Habitué du marteau
Nombre de messages : 790 Age : 30 Localisation : Tours / Centre Emploi/loisirs : BTS Electrotechnique / Patator, airsoft, électricité Humeur : Boff, ça dépend :D Date d'inscription : 17/01/2009
| Sujet: Re: contrôle de prise avec code 433mhz Lun 21 Jan - 3:22 | |
| Ben en fait prendre des modules RF directement + PT2272 et faire les circuits a l'arrache aurait été mieux et moins cher je pense. Faut que je regarde demain, es ce que tu peux faire des photos de près du circuit µC ?
Beau projet, on a un projet similaire on va surement le présenter ici.
Merci. | |
| | | Nightmare Jeune bricoleur
Nombre de messages : 240 Age : 31 Localisation : Lille Emploi/loisirs : Doctorant / artificier Humeur : Bonne :) Date d'inscription : 28/10/2009
| Sujet: Re: contrôle de prise avec code 433mhz Lun 21 Jan - 3:33 | |
| J'ai fait mon possible ... Pour les prises j'avais ça sous la main en faite, et ça m'évite de bidouiller au niveau du secteur.. | |
| | | san41 Jeune bricoleur
Nombre de messages : 186 Age : 29 Localisation : Centre Emploi/loisirs : Etude Humeur : Bien :) Date d'inscription : 14/05/2012
| Sujet: Re: contrôle de prise avec code 433mhz Lun 21 Jan - 12:18 | |
| j'avoue c'est beaucoup de plus simple et en plus tu peu changer de place le récepteurs | |
| | | coco pop's Habitué du marteau
Nombre de messages : 790 Age : 30 Localisation : Tours / Centre Emploi/loisirs : BTS Electrotechnique / Patator, airsoft, électricité Humeur : Boff, ça dépend :D Date d'inscription : 17/01/2009
| Sujet: Re: contrôle de prise avec code 433mhz Lun 21 Jan - 16:13 | |
| Hum a ce que je vois ça fait 0 0 0 0 1 1 1 1 mais pourquoi les A0 à A3 sont reliés a un interrupteur ça c'est la question du jour.
Je crois que tu a un code 00000000 constant et que dès que tu appuies sur un bout ça envoi un signal au data et au codage qui reçois le Vcc donc exemple tu va cliquer sur le bouton du PIN A4 tu va avoir 00001000 de transmis. C'est donc pas un code fixe. Par contre ce que tu peux faire c'est te servir de t'es prises en partie puissance et remplacer ça par des CI plus simples. | |
| | | Biduleohm Modérateur
Nombre de messages : 8851 Age : 33 Localisation : 77 Seine-et-Marne Emploi/loisirs : bricolage, informatique, électronique, THT, laser, aquariophilie Humeur : Date d'inscription : 25/03/2009
| Sujet: Re: contrôle de prise avec code 433mhz Lun 21 Jan - 16:51 | |
| Heureusement que spa un code fixe, comment tu différencies les prises sinon ? xD
Je dirais que l'inter c'est pour choisir un code de base qui ne change pas au quel vient s'ajouter le code de la prise, c'est utile quand tu as plusieurs de ces télécos pour qu'elle n'interfèrent pas entre elles. Mais d'habitude c'est des dip-switchs donc tu peux choisir plus que 2 codes de base quoi.
| |
| | | coco pop's Habitué du marteau
Nombre de messages : 790 Age : 30 Localisation : Tours / Centre Emploi/loisirs : BTS Electrotechnique / Patator, airsoft, électricité Humeur : Boff, ça dépend :D Date d'inscription : 17/01/2009
| Sujet: Re: contrôle de prise avec code 433mhz Lun 21 Jan - 17:14 | |
| Ben en fait sur les miennes c'est un code fixe exemple 01011010 qui n'ont rien a voir avec le data et c'est moi qui le compose et dès qu'un data reçois une tension il passe par ce code et par le code DATA 1 ou DATA2 ect | |
| | | Biduleohm Modérateur
Nombre de messages : 8851 Age : 33 Localisation : 77 Seine-et-Marne Emploi/loisirs : bricolage, informatique, électronique, THT, laser, aquariophilie Humeur : Date d'inscription : 25/03/2009
| Sujet: Re: contrôle de prise avec code 433mhz Lun 21 Jan - 18:30 | |
| | |
| | | coco pop's Habitué du marteau
Nombre de messages : 790 Age : 30 Localisation : Tours / Centre Emploi/loisirs : BTS Electrotechnique / Patator, airsoft, électricité Humeur : Boff, ça dépend :D Date d'inscription : 17/01/2009
| Sujet: Re: contrôle de prise avec code 433mhz Lun 21 Jan - 18:36 | |
| En gros sur mes encodeurs, j'ai un code fixe. Exemple : 10110010. J'ai 4 datas disponibles et dès que je transmet une demande j'ai mon code fixe transmis 10110010 + DATA1 ou DATA2 ou DATA3 ou DATA4. Bien sur le code fixe ne marche qu'avec le récepteur de la gamme | |
| | | Nightmare Jeune bricoleur
Nombre de messages : 240 Age : 31 Localisation : Lille Emploi/loisirs : Doctorant / artificier Humeur : Bonne :) Date d'inscription : 28/10/2009
| Sujet: Re: contrôle de prise avec code 433mhz Lun 21 Jan - 21:08 | |
| - coco pop's a écrit:
- Par contre ce que tu peux faire c'est te servir de t'es prises en partie puissance et remplacer ça par des CI plus simples.
Le problème c'est que je ne sais pas comment on programme des CI... et puis faudrait que je change les 4, ça me semble plus simple d'essayer de lire et reproduire le code. | |
| | | Biduleohm Modérateur
Nombre de messages : 8851 Age : 33 Localisation : 77 Seine-et-Marne Emploi/loisirs : bricolage, informatique, électronique, THT, laser, aquariophilie Humeur : Date d'inscription : 25/03/2009
| Sujet: Re: contrôle de prise avec code 433mhz Lun 21 Jan - 21:12 | |
| @coco : Oui ben en fait c'est exactement ce que je disais... xD
| |
| | | coco pop's Habitué du marteau
Nombre de messages : 790 Age : 30 Localisation : Tours / Centre Emploi/loisirs : BTS Electrotechnique / Patator, airsoft, électricité Humeur : Boff, ça dépend :D Date d'inscription : 17/01/2009
| Sujet: Re: contrôle de prise avec code 433mhz Lun 21 Jan - 22:39 | |
| http://be-creation.fr/tutoriel/telecommande-rf-315-330-433mhz-7
Si tu piges pas le schéma je l'ai en Winschem. | |
| | | Nightmare Jeune bricoleur
Nombre de messages : 240 Age : 31 Localisation : Lille Emploi/loisirs : Doctorant / artificier Humeur : Bonne :) Date d'inscription : 28/10/2009
| Sujet: Re: contrôle de prise avec code 433mhz Mer 23 Jan - 23:50 | |
| Au passage le code que j'ai commencé, il est pour l'instant moche (je suis un peu en galère avec les codes :p) mais j'espère qu'il sera fonctionnel ^^' Si quelqu'un trouve une erreur bête qu'il me le dise ! Pour comprendre: pour allumer la prise 1 (lum1) il faut faire un cour circuit entre la pin on, la "sécu" (pin au niveau de la led de la téléco) et la pin concernée. Pour éteindre, même chose mais avec off Alum pour allumer lum... Blum pour éteindre lum... - Spoiler:
- Citation :
///////////////////////// initialisation
int lum1 = 9; int lum2 = 8; int lum3 = 7; int lum4 = 6; int on = 5; int off = 4; int secu = 3; char final[5]; // code reçu via bluetooth // ON char Alum1[5] = {'a','l','u','m','1'}; //definition de l'état on entrée 1 char Alum2[5] = {'a','l','u','m','2'}; //definition de l'état on entrée 2 char Alum3[5] = {'a','l','u','m','3'}; //definition de l'état on entrée 3 char Alum4[5] = {'a','l','u','m','4'}; //definition de l'état on entrée 4 char Aall0[5] = {'a','a','l','l','0'}; //definition de l'état on global //OFF char Blum1[5] = {'b','l','u','m','1'}; //definition de l'état off entrée 1 char Blum2[5] = {'b','l','u','m','2'}; //definition de l'état off entrée 2 char Blum3[5] = {'b','l','u','m','3'}; //definition de l'état off entrée 3 char Blum4[5] = {'b','l','u','m','4'}; //definition de l'état off entrée 4 char Ball0[5] = {'b','a','l','l','0'}; //definition de l'état off global //ON int pass_Alum1 = 0; //correspondance du code (0=faux, 1=vrai) int pass_Alum2 = 0; int pass_Alum3 = 0; int pass_Alum4 = 0; int pass_Aall0 = 0; //OFF int pass_Blum1 = 0; //correspondance du code (0=faux, 1=vrai) int pass_Blum2 = 0; int pass_Blum3 = 0; int pass_Blum4 = 0; int pass_Ball0 = 0;
////////////sorties initiales void setup() { pinMode(lum1, OUTPUT); Serial.begin(9600); digitalWrite(lum1, LOW); pinMode(lum2, OUTPUT); Serial.begin(9600); digitalWrite(lum2, LOW);
pinMode(lum3, OUTPUT); Serial.begin(9600); digitalWrite(lum3, LOW);
pinMode(lum4, OUTPUT); Serial.begin(9600); digitalWrite(lum4, LOW); pinMode(on, OUTPUT); Serial.begin(9600); digitalWrite(on, LOW); pinMode(off, OUTPUT); Serial.begin(9600); digitalWrite(off, LOW); pinMode(secu, OUTPUT); Serial.begin(9600); digitalWrite(secu, LOW); }
///////////////////////lecture du code envoyé void loop() { while(Serial.available()) { for(int i=0; i<4; i++) // 4 bits final[i] = Serial.read(); //nomme les 4bits final ////////////////////comparaison du code envoyé avec les passes for(int i=0; i<4; i++) { //ON if(final[i]==Alum1[i]) //compare final avec lum1 pass_Alum1 = 1; else pass_Alum1 = 0;
if(final[i]==Alum2[i]) //compare final avec lum2 pass_Alum2 = 1; else pass_Alum2 = 0;
if(final[i]==Alum3[i]) //compare final avec lum3 pass_Alum3 = 1; else pass_Alum3 = 0;
if(final[i]==Alum4[i]) //compare final avec lum4 pass_Alum4 = 1; else pass_Alum4 = 0;
if(final[i]==Aall0[i]) //compare final avec Ball0 pass_Aall0 = 1; else pass_Aall0 = 0;
//OFF if(final[i]==Blum1[i]) //compare final avec lum1 pass_Blum1 = 1; else pass_Blum1 = 0;
if(final[i]==Blum2[i]) //compare final avec lum2 pass_Blum2 = 1; else pass_Blum2 = 0;
if(final[i]==Blum3[i]) //compare final avec lum3 pass_Blum3 = 1; else pass_Blum3 = 0;
if(final[i]==Blum4[i]) //compare final avec lum4 pass_Blum4 = 1; else pass_Blum4 = 0;
if(final[i]==Ball0[i]) //compare final avec all0 pass_Ball0 = 1; else pass_Ball0 = 0; } }
/////////partie opérative //ON if(pass_Alum1==1) { digitalWrite(lum1, HIGH); digitalWrite(secu, HIGH); digitalWrite(on, HIGH); delay(100); //0.1seconde, peut être moins Serial.println("prise n°1 allumée"); pass_Alum1 = 0; } else { digitalWrite(lum1, LOW); digitalWrite(lum2, LOW); digitalWrite(lum3, LOW); digitalWrite(lum4, LOW); digitalWrite(on , LOW); digitalWrite(off , LOW); digitalWrite(secu, LOW); }
if(pass_Alum2==1) { digitalWrite(lum2, HIGH); digitalWrite(secu, HIGH); digitalWrite(on, HIGH); delay(100); //0.1seconde, peut être moins Serial.println("prise n°2 allumée"); pass_Alum2 = 0; } else { digitalWrite(lum1, LOW); digitalWrite(lum2, LOW); digitalWrite(lum3, LOW); digitalWrite(lum4, LOW); digitalWrite(on , LOW); digitalWrite(off , LOW); digitalWrite(secu, LOW); }
if(pass_Alum3==1) { digitalWrite(lum3, HIGH); digitalWrite(secu, HIGH); digitalWrite(on, HIGH); delay(100); //0.1seconde, peut être moins Serial.println("prise n°3 allumée"); pass_Alum3 = 0; } else { digitalWrite(lum1, LOW); digitalWrite(lum2, LOW); digitalWrite(lum3, LOW); digitalWrite(lum4, LOW); digitalWrite(on , LOW); digitalWrite(off , LOW); digitalWrite(secu, LOW); }
if(pass_Alum4==1) { digitalWrite(lum4, HIGH); digitalWrite(secu, HIGH); digitalWrite(on, HIGH); delay(100); //0.1seconde, peut être moins Serial.println("prise n°4 allumée"); pass_Alum4 = 0; } else { digitalWrite(lum1, LOW); digitalWrite(lum2, LOW); digitalWrite(lum3, LOW); digitalWrite(lum4, LOW); digitalWrite(on , LOW); digitalWrite(off , LOW); digitalWrite(secu, LOW); }
if(pass_Aall0==1) { //ici c'est un peu n'importe quoi et je doute que ça marche, le problème c'est que je ne peux pas faire lum1, 2,3 et4 en même temps (un seul code à la fois) digitalWrite(secu, HIGH); digitalWrite(on, HIGH); digitalWrite(lum1, HIGH); delay(100); //0.1seconde, peut être moins digitalWrite(lum1, LOW); delay(10); digitalWrite(lum2, HIGH); delay(100); digitalWrite(lum2, LOW); delay(10); digitalWrite(lum3, HIGH); delay(100); digitalWrite(lum2, LOW); delay(10); digitalWrite(lum3, HIGH); Serial.println("prises 1, 2, 3 et 4 allumées"); pass_Aall0 = 0; } else { digitalWrite(lum1, LOW); digitalWrite(lum2, LOW); digitalWrite(lum3, LOW); digitalWrite(lum4, LOW); digitalWrite(on , LOW); digitalWrite(off , LOW); digitalWrite(secu, LOW); }
//OFF if(pass_Blum1==1) { digitalWrite(lum1, HIGH); digitalWrite(secu, HIGH); digitalWrite(off, HIGH); delay(100); //0.1seconde, peut être moins Serial.println("prise n°1 éteinte"); pass_Blum1 = 0; } else { digitalWrite(lum1, LOW); digitalWrite(lum2, LOW); digitalWrite(lum3, LOW); digitalWrite(lum4, LOW); digitalWrite(on , LOW); digitalWrite(off , LOW); digitalWrite(secu, LOW); }
if(pass_Blum2==1) { digitalWrite(lum2, HIGH); digitalWrite(secu, HIGH); digitalWrite(off, HIGH); delay(100); //0.1seconde, peut être moins Serial.println("prise n°2 éteinte"); pass_Blum2 = 0; } else { digitalWrite(lum1, LOW); digitalWrite(lum2, LOW); digitalWrite(lum3, LOW); digitalWrite(lum4, LOW); digitalWrite(on , LOW); digitalWrite(off , LOW); digitalWrite(secu, LOW); }
if(pass_Blum3==1) { digitalWrite(lum3, HIGH); digitalWrite(secu, HIGH); digitalWrite(off, HIGH); delay(100); //0.1seconde, peut être moins Serial.println("prise n°3 éteinte"); pass_Blum3 = 0; } else { digitalWrite(lum1, LOW); digitalWrite(lum2, LOW); digitalWrite(lum3, LOW); digitalWrite(lum4, LOW); digitalWrite(on , LOW); digitalWrite(off , LOW); digitalWrite(secu, LOW); }
if(pass_Blum4==1) { digitalWrite(lum4, HIGH); digitalWrite(secu, HIGH); digitalWrite(off, HIGH); delay(100); //0.1seconde, peut être moins Serial.println("prise n°4 éteinte"); pass_Blum4 = 0; } else { digitalWrite(lum1, LOW); digitalWrite(lum2, LOW); digitalWrite(lum3, LOW); digitalWrite(lum4, LOW); digitalWrite(on , LOW); digitalWrite(off , LOW); digitalWrite(secu, LOW); } if(pass_Ball0==1) { digitalWrite(secu, HIGH); digitalWrite(off, HIGH); digitalWrite(lum1, HIGH); delay(100); //0.1seconde, peut être moins digitalWrite(lum1, LOW); delay(10); digitalWrite(lum2, HIGH); delay(100); digitalWrite(lum2, LOW); delay(10); digitalWrite(lum3, HIGH); delay(100); digitalWrite(lum2, LOW); delay(10); digitalWrite(lum3, HIGH); Serial.println("prises 1, 2, 3 et 4 allumées"); pass_Aall0 = 0; } else { digitalWrite(lum1, LOW); digitalWrite(lum2, LOW); digitalWrite(lum3, LOW); digitalWrite(lum4, LOW); digitalWrite(on , LOW); digitalWrite(off , LOW); digitalWrite(secu, LOW); }
}
| |
| | | Biduleohm Modérateur
Nombre de messages : 8851 Age : 33 Localisation : 77 Seine-et-Marne Emploi/loisirs : bricolage, informatique, électronique, THT, laser, aquariophilie Humeur : Date d'inscription : 25/03/2009
| Sujet: Re: contrôle de prise avec code 433mhz Jeu 24 Jan - 0:11 | |
| Han que cay moche xD Tu devrais apprendre à faire des fonctions, ça éviterait la duplication de code et surtout ça te permettra d'avoir un code court et clair Par exemple, ça : - Code:
-
digitalWrite(lum1, LOW); digitalWrite(lum2, LOW); digitalWrite(lum3, LOW); digitalWrite(lum4, LOW); digitalWrite(on , LOW); digitalWrite(off , LOW); digitalWrite(secu, LOW);
Eh bien on le retrouve je ne sais pas combien de fois dons ta source. Tu devrais faire quelque chose du genre : - Code:
-
void putAllToLow() { digitalWrite(lum1, LOW); digitalWrite(lum2, LOW); digitalWrite(lum3, LOW); digitalWrite(lum4, LOW); digitalWrite(on , LOW); digitalWrite(off , LOW); digitalWrite(secu, LOW); }
Comme ça tu peux remplacer tout les gros blocs par putAllToLow(); Pareil pour les if/else à la chaine, tu peux (moyennant une petite modification peut-être, mais ça devrait passer sans) changer ça : - Code:
-
if(final[i]==Alum1[i]) //compare final avec lum1 pass_Alum1 = 1; else pass_Alum1 = 0;
if(final[i]==Alum2[i]) //compare final avec lum2 pass_Alum2 = 1; else pass_Alum2 = 0; ...
Par ça : - Code:
-
pass_Alum1 = final[i] == Alum1[i]; pass_Alum2 = final[i] == Alum2[i]; ...
En passant pour la lisibilité je te conseille de toujours mettre un espace entre les mots-clé (if, for, while, ...) et la parenthèse juste après ainsi qu'autour de tous les symboles mathématiques (=, +, -, ==, <=, ...)
Dernière édition par Biduleohm le Jeu 24 Jan - 0:18, édité 1 fois | |
| | | Nightmare Jeune bricoleur
Nombre de messages : 240 Age : 31 Localisation : Lille Emploi/loisirs : Doctorant / artificier Humeur : Bonne :) Date d'inscription : 28/10/2009
| Sujet: Re: contrôle de prise avec code 433mhz Jeu 24 Jan - 0:16 | |
| Ow, c'est vrai que ça enlève environ 10blocs :3 Merci, je vais modifier ça de suite, ça sera déjà plus clair Edit: là, c'est mieux - Spoiler:
- Citation :
///////////////////////// initialisation
int lum1 = 9; int lum2 = 8; int lum3 = 7; int lum4 = 6; int on = 5; int off = 4; int secu = 3; char final[5]; // code reçu via bluetooth // ON char Alum1[5] = {'a','l','u','m','1'}; //definition de l'état on entrée 1 char Alum2[5] = {'a','l','u','m','2'}; //definition de l'état on entrée 2 char Alum3[5] = {'a','l','u','m','3'}; //definition de l'état on entrée 3 char Alum4[5] = {'a','l','u','m','4'}; //definition de l'état on entrée 4 char Aall0[5] = {'a','a','l','l','0'}; //definition de l'état on global //OFF char Blum1[5] = {'b','l','u','m','1'}; //definition de l'état off entrée 1 char Blum2[5] = {'b','l','u','m','2'}; //definition de l'état off entrée 2 char Blum3[5] = {'b','l','u','m','3'}; //definition de l'état off entrée 3 char Blum4[5] = {'b','l','u','m','4'}; //definition de l'état off entrée 4 char Ball0[5] = {'b','a','l','l','0'}; //definition de l'état off global //ON int pass_Alum1 = 0; //correspondance du code (0=faux, 1=vrai) int pass_Alum2 = 0; int pass_Alum3 = 0; int pass_Alum4 = 0; int pass_Aall0 = 0; //OFF int pass_Blum1 = 0; //correspondance du code (0=faux, 1=vrai) int pass_Blum2 = 0; int pass_Blum3 = 0; int pass_Blum4 = 0; int pass_Ball0 = 0;
///fonction tout à 0 void putAllToLow() { digitalWrite(lum1, LOW); digitalWrite(lum2, LOW); digitalWrite(lum3, LOW); digitalWrite(lum4, LOW); digitalWrite(on , LOW); digitalWrite(off , LOW); digitalWrite(secu, LOW); }
////////////sorties initiales void setup() { pinMode(lum1, OUTPUT); Serial.begin(9600); digitalWrite(lum1, LOW); pinMode(lum2, OUTPUT); Serial.begin(9600); digitalWrite(lum2, LOW);
pinMode(lum3, OUTPUT); Serial.begin(9600); digitalWrite(lum3, LOW);
pinMode(lum4, OUTPUT); Serial.begin(9600); digitalWrite(lum4, LOW); pinMode(on, OUTPUT); Serial.begin(9600); digitalWrite(on, LOW); pinMode(off, OUTPUT); Serial.begin(9600); digitalWrite(off, LOW); pinMode(secu, OUTPUT); Serial.begin(9600); digitalWrite(secu, LOW); }
///////////////////////lecture du code envoyé void loop() { while(Serial.available()) { for(int i=0; i<4; i++) // 4 bits final[i] = Serial.read(); //nomme les 4bits final ////////////////////comparaison du code envoyé avec les passes for(int i=0; i<4; i++) { //ON if(final[i]==Alum1[i]) //compare final avec lum1 pass_Alum1 = 1; else pass_Alum1 = 0;
if(final[i]==Alum2[i]) //compare final avec lum2 pass_Alum2 = 1; else pass_Alum2 = 0;
if(final[i]==Alum3[i]) //compare final avec lum3 pass_Alum3 = 1; else pass_Alum3 = 0;
if(final[i]==Alum4[i]) //compare final avec lum4 pass_Alum4 = 1; else pass_Alum4 = 0;
if(final[i]==Aall0[i]) //compare final avec Ball0 pass_Aall0 = 1; else pass_Aall0 = 0;
//OFF if(final[i]==Blum1[i]) //compare final avec lum1 pass_Blum1 = 1; else pass_Blum1 = 0;
if(final[i]==Blum2[i]) //compare final avec lum2 pass_Blum2 = 1; else pass_Blum2 = 0;
if(final[i]==Blum3[i]) //compare final avec lum3 pass_Blum3 = 1; else pass_Blum3 = 0;
if(final[i]==Blum4[i]) //compare final avec lum4 pass_Blum4 = 1; else pass_Blum4 = 0;
if(final[i]==Ball0[i]) //compare final avec all0 pass_Ball0 = 1; else pass_Ball0 = 0; } }
/////////partie opérative //ON if(pass_Alum1==1) { digitalWrite(lum1, HIGH); digitalWrite(secu, HIGH); digitalWrite(on, HIGH); delay(100); //0.1seconde, peut être moins Serial.println("prise n°1 allumée"); pass_Alum1 = 0; } else putAllToLow();
if(pass_Alum2==1) { digitalWrite(lum2, HIGH); digitalWrite(secu, HIGH); digitalWrite(on, HIGH); delay(100); //0.1seconde, peut être moins Serial.println("prise n°2 allumée"); pass_Alum2 = 0; } else putAllToLow();
if(pass_Alum3==1) { digitalWrite(lum3, HIGH); digitalWrite(secu, HIGH); digitalWrite(on, HIGH); delay(100); //0.1seconde, peut être moins Serial.println("prise n°3 allumée"); pass_Alum3 = 0; } else putAllToLow();
if(pass_Alum4==1) { digitalWrite(lum4, HIGH); digitalWrite(secu, HIGH); digitalWrite(on, HIGH); delay(100); //0.1seconde, peut être moins Serial.println("prise n°4 allumée"); pass_Alum4 = 0; } else putAllToLow();
if(pass_Aall0==1) { digitalWrite(secu, HIGH); digitalWrite(on, HIGH); digitalWrite(lum1, HIGH); delay(100); //0.1seconde, peut être moins digitalWrite(lum1, LOW); delay(10); digitalWrite(lum2, HIGH); delay(100); digitalWrite(lum2, LOW); delay(10); digitalWrite(lum3, HIGH); delay(100); digitalWrite(lum2, LOW); delay(10); digitalWrite(lum3, HIGH); Serial.println("prises 1, 2, 3 et 4 allumées"); pass_Aall0 = 0; } else putAllToLow();
//OFF if(pass_Blum1==1) { digitalWrite(lum1, HIGH); digitalWrite(secu, HIGH); digitalWrite(off, HIGH); delay(100); //0.1seconde, peut être moins Serial.println("prise n°1 éteinte"); pass_Blum1 = 0; } else putAllToLow();
if(pass_Blum2==1) { digitalWrite(lum2, HIGH); digitalWrite(secu, HIGH); digitalWrite(off, HIGH); delay(100); //0.1seconde, peut être moins Serial.println("prise n°2 éteinte"); pass_Blum2 = 0; } else putAllToLow();
if(pass_Blum3==1) { digitalWrite(lum3, HIGH); digitalWrite(secu, HIGH); digitalWrite(off, HIGH); delay(100); //0.1seconde, peut être moins Serial.println("prise n°3 éteinte"); pass_Blum3 = 0; } else putAllToLow();
if(pass_Blum4==1) { digitalWrite(lum4, HIGH); digitalWrite(secu, HIGH); digitalWrite(off, HIGH); delay(100); //0.1seconde, peut être moins Serial.println("prise n°4 éteinte"); pass_Blum4 = 0; } else putAllToLow(); if(pass_Ball0==1) { digitalWrite(secu, HIGH); digitalWrite(off, HIGH); digitalWrite(lum1, HIGH); delay(100); //0.1seconde, peut être moins digitalWrite(lum1, LOW); delay(10); digitalWrite(lum2, HIGH); delay(100); digitalWrite(lum2, LOW); delay(10); digitalWrite(lum3, HIGH); delay(100); digitalWrite(lum2, LOW); delay(10); digitalWrite(lum3, HIGH); Serial.println("prises 1, 2, 3 et 4 allumées"); pass_Aall0 = 0; } else putAllToLow(); }
Dernière édition par Nightmare le Jeu 24 Jan - 0:22, édité 1 fois | |
| | | Biduleohm Modérateur
Nombre de messages : 8851 Age : 33 Localisation : 77 Seine-et-Marne Emploi/loisirs : bricolage, informatique, électronique, THT, laser, aquariophilie Humeur : Date d'inscription : 25/03/2009
| Sujet: Re: contrôle de prise avec code 433mhz Jeu 24 Jan - 0:21 | |
| J'ai édité Si ça ne marche pas il faut tenter avec "pass_Alum1 = (int)(final[i] == Alum1[i]);" et si ça ne marche toujours pas (mais ça m'étonnerait beaucoup là quand même) il faut s'arranger pour que pass_Allum* soit de type bool et prenne comme valeur true ou false au lieu de 1 ou 0 Bon après je ne connais pas les limitations du compilo de l'arduino donc je ne peux pas trop m'avancer sur certains trucs. En passant on note les noms de variables/fonctions soit toto_tata_titi soit totoTataTiti mais pas les deux à la fois (propreté) | |
| | | Nightmare Jeune bricoleur
Nombre de messages : 240 Age : 31 Localisation : Lille Emploi/loisirs : Doctorant / artificier Humeur : Bonne :) Date d'inscription : 28/10/2009
| Sujet: Re: contrôle de prise avec code 433mhz Jeu 24 Jan - 0:37 | |
| Mieux? - Spoiler:
- Citation :
///////////////////////// initialisation
int lum1 = 9; int lum2 = 8; int lum3 = 7; int lum4 = 6; int on = 5; int off = 4; int secu = 3; char final[5]; // code reçu via bluetooth // ON char Alum1[5] = {'a','l','u','m','1'}; //definition de l'état on entrée 1 char Alum2[5] = {'a','l','u','m','2'}; //definition de l'état on entrée 2 char Alum3[5] = {'a','l','u','m','3'}; //definition de l'état on entrée 3 char Alum4[5] = {'a','l','u','m','4'}; //definition de l'état on entrée 4 char Aall0[5] = {'a','a','l','l','0'}; //definition de l'état on global //OFF char Blum1[5] = {'b','l','u','m','1'}; //definition de l'état off entrée 1 char Blum2[5] = {'b','l','u','m','2'}; //definition de l'état off entrée 2 char Blum3[5] = {'b','l','u','m','3'}; //definition de l'état off entrée 3 char Blum4[5] = {'b','l','u','m','4'}; //definition de l'état off entrée 4 char Ball0[5] = {'b','a','l','l','0'}; //definition de l'état off global //ON int pass_Alum1 = 0; //correspondance du code (0=faux, 1=vrai) int pass_Alum2 = 0; int pass_Alum3 = 0; int pass_Alum4 = 0; int pass_Aall0 = 0; //OFF int pass_Blum1 = 0; //correspondance du code (0=faux, 1=vrai) int pass_Blum2 = 0; int pass_Blum3 = 0; int pass_Blum4 = 0; int pass_Ball0 = 0;
///fonction tout à 0 void putAllToLow() { digitalWrite(lum1, LOW); digitalWrite(lum2, LOW); digitalWrite(lum3, LOW); digitalWrite(lum4, LOW); digitalWrite(on , LOW); digitalWrite(off , LOW); digitalWrite(secu, LOW); }
void OnAndSecu() { digitalWrite(secu, HIGH); digitalWrite(on, HIGH); } void OffAndSecu() { digitalWrite(secu, HIGH); digitalWrite(off, HIGH); }
////////////sorties initiales void setup() { pinMode(lum1, OUTPUT); Serial.begin(9600); digitalWrite(lum1, LOW); pinMode(lum2, OUTPUT); Serial.begin(9600); digitalWrite(lum2, LOW);
pinMode(lum3, OUTPUT); Serial.begin(9600); digitalWrite(lum3, LOW);
pinMode(lum4, OUTPUT); Serial.begin(9600); digitalWrite(lum4, LOW); pinMode(on, OUTPUT); Serial.begin(9600); digitalWrite(on, LOW); pinMode(off, OUTPUT); Serial.begin(9600); digitalWrite(off, LOW); pinMode(secu, OUTPUT); Serial.begin(9600); digitalWrite(secu, LOW); }
///////////////////////lecture du code envoyé void loop() { while(Serial.available()) { for(int i=0; i<4; i++) // 4 bits final[i] = Serial.read(); //nomme les 4bits final ////////////////////comparaison du code envoyé avec les passes for(int i=0; i<4; i++) { //ON pass_Alum1 = final[i] == Alum1[i]; pass_Alum2 = final[i] == Alum2[i]; pass_Alum3 = final[i] == Alum3[i]; pass_Alum4 = final[i] == Alum4[i]; pass_Aall0 = final[i] == Aall0[i];
//OFF pass_Blum1 = final[i] == Blum1[i]; pass_Blum2 = final[i] == Blum2[i]; pass_Blum3 = final[i] == Blum3[i]; pass_Blum4 = final[i] == Blum4[i]; pass_Ball0 = final[i] == Ball0[i]; } }
/////////partie opérative //ON if(pass_Alum1==1) { digitalWrite(lum1, HIGH); void OnAndSecu(); delay(100); //0.1seconde, peut être moins Serial.println("prise n°1 allumée"); pass_Alum1 = 0; } else putAllToLow();
if(pass_Alum2==1) { digitalWrite(lum2, HIGH); void OnAndSecu(); delay(100); //0.1seconde, peut être moins Serial.println("prise n°2 allumée"); pass_Alum2 = 0; } else putAllToLow();
if(pass_Alum3==1) { digitalWrite(lum3, HIGH); void OnAndSecu(); delay(100); //0.1seconde, peut être moins Serial.println("prise n°3 allumée"); pass_Alum3 = 0; } else putAllToLow();
if(pass_Alum4==1) { digitalWrite(lum4, HIGH); void OnAndSecu(); delay(100); //0.1seconde, peut être moins Serial.println("prise n°4 allumée"); pass_Alum4 = 0; } else putAllToLow();
if(pass_Aall0==1) { void OnAndSecu(); digitalWrite(lum1, HIGH); delay(100); //0.1seconde, peut être moins digitalWrite(lum1, LOW); delay(10); digitalWrite(lum2, HIGH); delay(100); digitalWrite(lum2, LOW); delay(10); digitalWrite(lum3, HIGH); delay(100); digitalWrite(lum2, LOW); delay(10); digitalWrite(lum3, HIGH); Serial.println("prises 1, 2, 3 et 4 allumées"); pass_Aall0 = 0; } else putAllToLow();
//OFF if(pass_Blum1==1) { digitalWrite(lum1, HIGH); void OffAndSecu(); delay(100); //0.1seconde, peut être moins Serial.println("prise n°1 éteinte"); pass_Blum1 = 0; } else putAllToLow();
if(pass_Blum2==1) { digitalWrite(lum2, HIGH); void OffAndSecu(); delay(100); //0.1seconde, peut être moins Serial.println("prise n°2 éteinte"); pass_Blum2 = 0; } else putAllToLow();
if(pass_Blum3==1) { digitalWrite(lum3, HIGH); void OffAndSecu(); delay(100); //0.1seconde, peut être moins Serial.println("prise n°3 éteinte"); pass_Blum3 = 0; } else putAllToLow();
if(pass_Blum4==1) { digitalWrite(lum4, HIGH); void OffAndSecu(); delay(100); //0.1seconde, peut être moins Serial.println("prise n°4 éteinte"); pass_Blum4 = 0; } else putAllToLow(); if(pass_Ball0==1) { void OffAndSecu(); digitalWrite(lum1, HIGH); delay(100); //0.1seconde, peut être moins digitalWrite(lum1, LOW); delay(10); digitalWrite(lum2, HIGH); delay(100); digitalWrite(lum2, LOW); delay(10); digitalWrite(lum3, HIGH); delay(100); digitalWrite(lum2, LOW); delay(10); digitalWrite(lum3, HIGH); Serial.println("prises 1, 2, 3 et 4 allumées"); pass_Aall0 = 0; } else putAllToLow(); }
Après ya ce bout là où je ne suis pas sûr du résultat... j'ai fait ça comme je ne peux pas brancher lum1,2,3et 4 en même temps (logique, un seul code envoyé à la fois) - Spoiler:
- Citation :
if(pass_Aall0==1) { void OnAndSecu(); digitalWrite(lum1, HIGH); delay(100); //0.1seconde, peut être moins digitalWrite(lum1, LOW); delay(10); digitalWrite(lum2, HIGH); delay(100); digitalWrite(lum2, LOW); delay(10); digitalWrite(lum3, HIGH); delay(100); digitalWrite(lum2, LOW); delay(10); digitalWrite(lum3, HIGH); Serial.println("prises 1, 2, 3 et 4 allumées"); pass_Aall0 = 0; }
| |
| | | Biduleohm Modérateur
Nombre de messages : 8851 Age : 33 Localisation : 77 Seine-et-Marne Emploi/loisirs : bricolage, informatique, électronique, THT, laser, aquariophilie Humeur : Date d'inscription : 25/03/2009
| Sujet: Re: contrôle de prise avec code 433mhz Jeu 24 Jan - 1:02 | |
| C'est bien mieux :D
Je ne comprends pas la fonction de ton second bout de code. Il est censé tout allumer ?
| |
| | | Nightmare Jeune bricoleur
Nombre de messages : 240 Age : 31 Localisation : Lille Emploi/loisirs : Doctorant / artificier Humeur : Bonne :) Date d'inscription : 28/10/2009
| Sujet: Re: contrôle de prise avec code 433mhz Jeu 24 Jan - 1:18 | |
| Oui, c'est vrai que c'est pas facile à deviner ^^' Aall0 c'est pour tout allumer Ball0 c'est pour le shutdown | |
| | | Biduleohm Modérateur
Nombre de messages : 8851 Age : 33 Localisation : 77 Seine-et-Marne Emploi/loisirs : bricolage, informatique, électronique, THT, laser, aquariophilie Humeur : Date d'inscription : 25/03/2009
| Sujet: Re: contrôle de prise avec code 433mhz Jeu 24 Jan - 1:38 | |
| Ok mais c'est quoi ce délire avec les high/low ? y'a aucune logique, c'est pour un test ? Petit conseil en passant : quand tu fais un truc du genre "if (toto == 1) { ... toto = 0; ... }" je te conseille de mettre le "toto = 0;" au début du if au lieu d'à la fin. En prenant cette habitude ça évite d'oublier de le mettre | |
| | | Contenu sponsorisé
| Sujet: Re: contrôle de prise avec code 433mhz | |
| |
| | | | contrôle de prise avec code 433mhz | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |