Offline
Newbie
Karma: 0
Posts: 42
|
 |
« Reply #60 on: April 16, 2012, 01:41:08 pm » |
effectivement, c'est mieux avec le point virgule. Et pourtant dans les manuelles ils précisent bien de faire attention de pas l'oublier. Je ferais plus attention la prochaine fois. merci .  sinon pour le message d'erreur : capteur_actionnant_un_relais.cpp:6: erreur: expected unqualified-id before ‘int’pourquoi il y a le chiffre 6 devant erreur ? c'est juste le numéro du type d'erreur ?
|
|
|
|
|
Logged
|
|
|
|
|
Ile-de-France (92 sud), France
Offline
Edison Member
Karma: 22
Posts: 1817
|
 |
« Reply #61 on: April 16, 2012, 03:08:47 pm » |
le chiffre après les 2 points indique le numéro de la ligne où l'erreur a été détectée. Ce n'est pas toujours là où est l'erreur, mais là où elle se manifeste. Par exemple Dans toto.h tu déclare une classe sans mettre de ; class toto { toto(); ~toto(); int a; } Et puis dans toto.cpp tu inclus le .h avant d'implémenter ta classe : #include "toto.h"
toto::toto() { a = 0; } L'erreur sera indiquée sur la 3eme ligne de toto.cpp au moment où commence le code du constructeur. toto.cpp:3 : xxxxxxxxxxx
|
|
|
|
|
Logged
|
Barbuduino: Arduino sur Breadboard & VinciDuino: Clone Leonardo // WR703: Mini-routeur hacké // LauchPad MSP430 et Stellaris // Panda II Arduino-like .NetMF sous VisualC# RTFC: Read That F.....g Code / RTFD: Read That F.....g Doc / RTFDS: Read That F.....g DataSheet / RTFS: Read That F.....g Schematic / Wot da ya wanna D.I.Y. today ?
|
|
|
|
Offline
Newbie
Karma: 0
Posts: 42
|
 |
« Reply #62 on: April 17, 2012, 04:48:41 am » |
D'accord, Je pense que je vais vais faire une liste des élément à vérifier dans l'ordre.... ça peut servir pour le début. - toute ligne de code se termine par un point-virgule « ; »
- le contenu d'une fonction est délimité par des accolades « { » et « } »
- les paramètres d'une fonction sont contenus pas des parenthèses « ( » et « ) ».
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Newbie
Karma: 0
Posts: 42
|
 |
« Reply #63 on: April 17, 2012, 04:52:37 am » |
Sinon, Je voulais savoir si au niveau de mon code ça semblait bon.... Je suis pas sûr de moi..... car j'ai fait un mélange des éléments que j'ai trouvé sur le net. int brocheCapteur=3; //emplacement où est branché le capteur de mouvement int brocheRelais=9; //emplacement où est branché le relais. int valeurCapteur=0; // valeur initialle du capteur de mouvement.
void setup() { pinMode(brocheCapteur, INPUT); //défini la broche 3 en entrée pinMode(brocheRelais, OUTPUT); //défini la broche 9 en sortie }
void loop() { valeurCapteur=digitalRead(brocheCapteur);
if(valeurCapteur=1) { digitalWrite (brocheRelais, HIGH); } else { digitalWrite (brocheRelais, LOW); }
}

|
|
|
|
|
Logged
|
|
|
|
|
Offline
Faraday Member
Karma: 8
Posts: 2611
|
 |
« Reply #64 on: April 17, 2012, 06:00:19 am » |
Sinon,
Je voulais savoir si au niveau de mon code ça semblait bon.... Je suis pas sûr de moi..... car j'ai fait un mélange des éléments que j'ai trouvé sur le net.
bonjour non ce n'est pas bon pour info lorsque tu poste du code mets le entre balise code et pas quote , la balise code c'est le bouton # Tu commet une erreur de debutant (rassure toi c'est arrivé à tous , et surtout à ceux qui on pratiqué d'autres langages  ) il faut un double signe == pour l'égalité du IF, le signe = c'est une attribution voir section "attention" http://arduino.cc/fr/Main/If si tu a une carte uno , j'ai modifié la sortie "relais" pour utiliser la led embarquée en pin13 int brocheCapteur=3; //emplacement où est branché le capteur de mouvement int brocheRelais=13; //emplacement où est branché le relais pin 13 pour simulation avec la led embarquée. int valeurCapteur=0; // valeur initialle du capteur de mouvement.
void setup() { pinMode(brocheCapteur, INPUT); //défini la broche 3 en entrée pinMode(brocheRelais, OUTPUT); //défini la broche 13 en sortie }
void loop() { valeurCapteur=digitalRead(brocheCapteur);
if(valeurCapteur==1) // ON { digitalWrite (brocheRelais, HIGH); } else { digitalWrite (brocheRelais, LOW); }
}
|
|
|
|
« Last Edit: April 17, 2012, 06:04:41 am by Artouste »
|
Logged
|
|
|
|
|
Offline
Newbie
Karma: 0
Posts: 42
|
 |
« Reply #65 on: April 21, 2012, 01:29:33 pm » |
Alors, j'ai essayé le code et ça marche. Sauf que de temps en temps le capteur détecteur un mouvement alors qu'il n'y a rien.... mais je pense que c'est parce que le capteur n'était pas sur une surface stable.... sinon pour actionner les relais, on utilise aussi ce code ? { valeurCapteur=digitalRead(brocheCapteur);
if(valeurCapteur==1) // ON { digitalWrite (brocheRelais, HIGH); } else { digitalWrite (brocheRelais, LOW); }
}
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Faraday Member
Karma: 8
Posts: 2611
|
 |
« Reply #66 on: April 22, 2012, 02:09:24 pm » |
Alors, j'ai essayé le code et ça marche. Sauf que de temps en temps le capteur détecteur un mouvement alors qu'il n'y a rien.... mais je pense que c'est parce que le capteur n'était pas sur une surface stable.... sinon pour actionner les relais, on utilise aussi ce code ? { valeurCapteur=digitalRead(brocheCapteur);
if(valeurCapteur==1) // ON { digitalWrite (brocheRelais, HIGH); } else { digitalWrite (brocheRelais, LOW); }
} oui , mais attention un relais sauf rares exceptions, ne se commande pas directement par une sortie de l'arduino, il faut un petit interfaçage. et compte tenu de l'application, une petite tempo de quelques secondes de maintien ON du relais après détection ne serait peut etre pas inutile.
|
|
|
|
|
Logged
|
|
|
|
|
France
Online
Edison Member
Karma: 12
Posts: 1838
There is an Arduino for that
|
 |
« Reply #67 on: April 22, 2012, 02:31:44 pm » |
le chiffre après les 2 points indique le numéro de la ligne où l'erreur a été détectée. Ce n'est pas toujours là où est l'erreur, mais là où elle se manifeste. Par exemple Dans toto.h tu déclare une classe sans mettre de ; class toto { toto(); ~toto(); int a; } Et puis dans toto.cpp tu inclus le .h avant d'implémenter ta classe : #include "toto.h"
toto::toto() { a = 0; } L'erreur sera indiquée sur la 3eme ligne de toto.cpp au moment où commence le code du constructeur. toto.cpp:3 : xxxxxxxxxxx Il y a aussi un autre problème avec le numéro de la ligne, il ne correspond pas au code source que tu as saisi mais à celui remis en forme par l'IDE avant compilation. Donc des fois c'est difficile de s'y retrouver. Tu peux vérifier en allant regarder dans le répertoire temporaire créé au moment de la compilation, tu y trouveras le code source modifié. Dans certains cas par exemple, il y a des lignes insérées en tête pour ajouter les define. Il y a aussi l'insertion du main()
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Newbie
Karma: 0
Posts: 42
|
 |
« Reply #68 on: May 08, 2012, 02:10:49 pm » |
Alors effectivement je dois mettre ce type de transistor  néanmoins je voudrais être sûr pour le montage que je ferais demain. La collector donc négatif doit se brancher sur le négatif du GND et à la fois sur le négatif de l'alimentation 12 v de la carte arduino lui même ?  
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Faraday Member
Karma: 8
Posts: 2611
|
 |
« Reply #69 on: May 08, 2012, 02:25:39 pm » |
Alors effectivement je dois mettre ce type de transistor  néanmoins je voudrais être sûr pour le montage que je ferais demain. La collector donc négatif doit se brancher sur le négatif du GND et à la fois sur le négatif de l'alimentation 12 v de la carte arduino lui même ? Oui il faut relier les GND (masse) et cabler comme ça , attention à ne pas oublier la diode roue libre si elle n'est pas intégrée dans le relais 
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Newbie
Karma: 0
Posts: 42
|
 |
« Reply #70 on: May 08, 2012, 02:42:58 pm » |
Oui il faut relier les GND (masse) et cabler comme ça , attention à ne pas oublier la diode roue libre si elle n'est pas intégrée dans le relais  A quoi sert cette diode roue libre. Car le relais que j'utilise c'est ça :
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Faraday Member
Karma: 8
Posts: 2611
|
 |
« Reply #71 on: May 08, 2012, 02:58:09 pm » |
Une diode de roue libre c'est pour "absorber" le courant inverse produit par la bobine sans le transistor ne va pas durer longtemps vu le schema simplifié du relais sur la photo , il n'y a a pas de diode. Voir en fonction de sa référence exacte et du datasheet si il y en a une. sinon en mettre une
|
|
|
|
|
Logged
|
|
|
|
|
Ile-de-France (92 sud), France
Offline
Edison Member
Karma: 22
Posts: 1817
|
 |
« Reply #72 on: May 08, 2012, 05:03:09 pm » |
Ca coûte pas cher (quelques centimes), alors mets une 1N4004/1N4007 sans te poser de question  - Dans le bon sens, cathode vers le 12V et Anode vers le transistor. Si si c'est le bon sens pour une diode de roue libre. Quand le transistor va couper le courant dans la bobine, emporté par son élan le courant va continuer a sortir de la bobine. La diode de roue libre va lui permettre de remonter et de tourner dans la bobine le temps de s'atténuer. Sinon il va se dissiper où il peut et risque de cramer le transistor. Sinon as tu plus d'infos sur le courant de bobine de ton relai ? vérifie sur maquette avec un 12V et un ampèremètre. le BC547 est un transistor petit signaux limité de mémoire à 800mW. 100mA c'est le grand maxi qu'il puisse supporter. Un petit TIP120, c'est un peu plus gros mais plus efficace. Voir un MOS FET (IRF kek chose, je peux chercher un référence si besoin)
|
|
|
|
|
Logged
|
Barbuduino: Arduino sur Breadboard & VinciDuino: Clone Leonardo // WR703: Mini-routeur hacké // LauchPad MSP430 et Stellaris // Panda II Arduino-like .NetMF sous VisualC# RTFC: Read That F.....g Code / RTFD: Read That F.....g Doc / RTFDS: Read That F.....g DataSheet / RTFS: Read That F.....g Schematic / Wot da ya wanna D.I.Y. today ?
|
|
|
|
Offline
Newbie
Karma: 0
Posts: 42
|
 |
« Reply #73 on: May 17, 2012, 07:58:14 am » |
Une diode de roue libre c'est pour "absorber" le courant inverse produit par la bobine sans le transistor ne va pas durer longtemps vu le schema simplifié du relais sur la photo , il n'y a a pas de diode.
Voir en fonction de sa référence exacte et du datasheet si il y en a une. sinon en mettre une
Ha oui, c'est vrai. J'ai du lire un truc sur ce sujet. Sinon as tu plus d'infos sur le courant de bobine de ton relai ?
 3 mA sous 5 V / 750 VA vérifie sur maquette avec un 12V et un ampèremètre.
Ok le BC547 est un transistor petit signaux limité de mémoire à 800mW. 100mA c'est le grand maxi qu'il puisse supporter. Un petit TIP120, c'est un peu plus gros mais plus efficace. Voir un MOS FET (IRF kek chose, je peux chercher un référence si besoin)
ça me parait aussi un peu limite car je me suis amusé à faire une petite expérience. J'ai branché une lampe 230 v sur un relais. Pour enclencher le relais j'ai utilisé : 4 piles 1.5 v 800 mA -> sans résultat un accus nimH 7.2 v 4200 mA -> sans résultat  un accus lippo 7.4 v 4000 mA -> qui a enclenché le relais Alors je sais pas trop quoi pensé....
|
|
|
|
|
Logged
|
|
|
|
|
Ile-de-France (92 sud), France
Offline
Edison Member
Karma: 22
Posts: 1817
|
 |
« Reply #74 on: May 17, 2012, 08:07:25 am » |
Tu confond les caractéristiques coté contacts et coté bobine
Le 3mA/5V est la caractéristiques minimales du circuit commuté, le maxi 750VA (~750W) sous 250VAC
La bobine c'est du 12VDC (référence entourée) Conso de la bonie en mode continue 0.9W soit 75mA De toute façon le 0.9W c'est trop pour les 800mW du BC547. Prend un TIP120 ou mieux un MOSFET. Ou alors pour faire simple un ULN2003.
RTFD
|
|
|
|
|
Logged
|
Barbuduino: Arduino sur Breadboard & VinciDuino: Clone Leonardo // WR703: Mini-routeur hacké // LauchPad MSP430 et Stellaris // Panda II Arduino-like .NetMF sous VisualC# RTFC: Read That F.....g Code / RTFD: Read That F.....g Doc / RTFDS: Read That F.....g DataSheet / RTFS: Read That F.....g Schematic / Wot da ya wanna D.I.Y. today ?
|
|
|
|
|