[besoins d'aide sur mon Projet] moduler l'éclairage lorsqu'un usager est détecté

Bonjour, Bonsoir
Je suis actuellement En terminale STI2D “SIN” et j’ai donc un projet à réaliser pour la fin de l’année. Revue de projet n°2 dans moins de deux semaines …
Donc voila, le problème que je rencontre est sur mon programme Arduino. J’ai essayé, j’ai beau chercher dans mes cours et sur Internet mais je ne trouve pas comment faire.

Donc je dois utiliser un “détecteur de mouvement 12V LBM 120° (GEV)” comme entrée et comme sortie j’aurais une “leds GU5.3/1W (12V)”. Et évidement je dois faire ce projet à l’aide d’une carte arduino Uno.

Je sais déjà que je devrais utiliser un port PWM. Un générateur pour alimenter mon détecteur de mouvement et le prof ma parlé D’un module relay pour faire fonctionner la Led.

Donc je suis pas très doué pour programmé en C mais j’ai eu le temps de revoir les bases.

personnellement je pense que j’aurais

Const int detectorPin = …
const int ledPin = …

void setup()
{
pinMode(ledPin, OUTPUT);
pinMode(detectorPin, INPUT);
analogWrite (ledPin, 0)
}

if (detectorPin == HIGH)
do
{
ledPin +5 ;
}
While (ledPin<255)
delay (500) ;

If (detectorPin == LOW)
do
{
ledPin -5 ;
}
While (ledPin>0)
delay (500) ;

Bref, comme vous pouvez le constater je galère vraiment avec la programmation, de plus cela ne m’intéresse pas. J’essaye juste d’avoir mon Bac pour pouvoir changer de domaine.

J’espère que vous pourrez m’aider car la je suis vraiment bloquer :frowning:
Merci d’avance !

Utilise les balises code stp

Salut,

Avec un relais tu feras pas du PWM. il faut typiquement un mosfet (à dimensionner suivant la puissance de t aled).

Si tu as déjà une Arduino tu peux simuler tout ça sur la led 13. Ca te plait pas mais comme tu as eu le courage d’écrire un code où il n’y a en fait que les blanc à combler je complète avec ce que je peux :

const int detectorPin = ... ; // ça je peux pas savoir !
const int ledPin = 13; 

int value = 0;
byte flag=0;

void setup() 
{
 pinMode(ledPin, OUTPUT);      
 pinMode(detectorPin, INPUT); 
 analogWrite (ledPin, 0);
}

void loop() {

if (detectorPin == HIGH && flag == 0) {

flag = 1;

do
{   

 analogWrite(ledPin, value);
value+=5 ;
delay(5); // pour donner un effet "fade"
}while (value<255);
  
delay (500) ;  

}


if (detectorPin == LOW && flag ==1) {

flag =0;

do
{   

 analogWrite(ledPin, value);
value-=5 ;
delay(5);
}while (value>0);
  
delay (500) ;  

}

}

flag permet d’éviter que tout se reproduise en boucle (pour éteindre la lumière, il faut qu’elle soit préalablement allumée :wink:

Merci pour ta réponse, J’ai pas encore essayé t’on programme B@tto.

j’ai essayé de re faire un programme un peu plus compréhensible pour mieux me faire comprendre.

/* Programme utilisant un capteur de mouvement et une Led. 12V
problématique ? modulé l'éclairage d'une porte automatique lorsque qu'un usager est détecté.
 */

// définition des broches utilisées 
int led = 3; // Commande la LED 
int capteur = 12; // détecteur de mouvement

void setup() 
{ 
  pinMode(led, OUTPUT); //sortie
  pinMode(capteur, INPUT); //entrée
  analogWrite(led, 0);  // la LED est éteinte
  digitalWrite(capteur, 0); 
}

void loop() 
{ 
  if (capteur == 1); // détection d'une personne
  do  // répéter
    Led + 20 ;  // la lumière augmentent progressivement 
   While (led < 255);  // jusqu’à 12V
    delay(500);
  } 
  { 
    if (capteur == 0); // aucune personne détecté
    do //répéter
      Leds -20 ; // la lumière diminue progressivement
    while (led > 0); // jusqu’à 0V
  delay(500); 
}

Sauf que ça compilera jamais

il est faché avec les accolades

J’ai réécrit ton programme (sans vérifier s’il voulait dire quelque chose) avec la bonne syntaxe. Maintenant reste à savoir si c’est bien ça que tu voulais :smiley:

/* Programme utilisant un capteur de mouvement et une led. 12V
 problématique ? modulé l'éclairage d'une porte automatique lorsque qu'un usager est détecté.
 */

// définition des broches utilisées 
int led = 3; // Commande la led 
int capteur = 12; // détecteur de mouvement

void setup() 
{ 
    pinMode(led, OUTPUT); //sortie
    pinMode(capteur, INPUT); //entrée
    analogWrite(led, 0);  // la led est éteinte
    digitalWrite(capteur, 0); 
}

void loop() 
{ 
    if (capteur == 1); // détection d'une personne
    {
        do  // répéter
        {  
            led = led + 20 ;  // la lumière augmentent progressivement 

            delay(500);
        } while (led < 255);  // jusqu'à 12V
    } 

    if (capteur == 0); // aucune personne détecté
    { 
        do
        {
            //répéter
            led = led - 20 ; // la lumière diminue progressivement
        } while (led > 0); // jusqu'à 0V

        delay(500); 
    }
}

Je pourrais essayer t'on programme que Lundi :confused: B@tto
Si vous avez d'autre idée n'hésitez pas je sais juste que le prof a dit que je devrais utiliser "normallement" un pwm pour la modulation et un relay pour alimenter en 12V la led.

Bonjour, pour connaitre l'état du capteur il faut utiliser digitalRead(capteur)...

Attention avec un capteur de mouvement 12V, s'il sort du 12V à l'état haut, tu vas griller l'Arduino.
Après une petite recherche, ça semble être un capteur qui commute un relais lors d'une détection de mouvement. Dans ce cas ça se branche comme un poussoir sur l'Arduino, soit via une résistance de pull-up, ou via le pinMode(pin,INPUT_PULLUP) avec le contact du relais entre la pin et la masse.

J'utilise couramment ce genre de capteur: http://www.robotshop.com/eu/fr/capteur-mouvement-pir-ajustable.html
Ca s'alimente en 5V et ça sort un signal directement compatible avec un Arduino.

Oui, oui t’inquiète ^^, j'ai déjà réalisé le montage avec le détecteur de mouvement (de type booléen, comme un bouton poussoir) et une simple petite Led. (juste la led qui s'allume lors de la détection d'un passager mais pas de variation) J'utilise une résistance pour éviter de créer des problèmes. Le relais à ce que j'ai compris serviras à faire fonctionner La Led que je dois utiliser (en 12V).

Mon problème pour l'instant à juste un rapport avec le programme arduino que je dois écrire et je ne sais pas vraiment quoi mettre dans ce programme. (même si j'ai passé 2h à relire mon cour --') car je ne suis pas doué pour ça et je bloque à ce stade :slight_smile:

Mon detecteur de mouvement ressemble exactement à celui la => http://camping-car-webzine.fr/images/5-fiches/fiche-detecteur/camping-car-detecteur-07.jpg

et la Led que je dois faire fonctionner ressemble à ça => http://www.voelkner.de/products/232364/100-xl.jpg

Voila :slight_smile: en espérant avoir d'autre réponses

UP !

Tu sais l'écriture d'un programme en algorithme graphique sa facilite la vie.

détecteur de mouvement (sans détection) = 0
Led = 0V

[boucle]
si détecteur de mouvement = 1 (détection)
alors Intensité de la Led = + 2 V tout les 0.5 seconde
Jusqu’à 12V

Si détecteur de mouvement = 0
alors Intensité de la Led = -2 V toute les 0.5 seconde
jusqu'à 0V
{boucle]

Voila ce que j'aimerais réaliser comme programme :3

C’est déjà plus clair, la seule difficulté du programme c’est de faire varier le voltage de + ou - 2v quand il y a ou pas détection.

Ton prof ta parler de PWM, mais je ne vois pas en quoi la PWM peut faire varier le voltage… c’est grossièrement une modulation de fréquence et non d’amplitude.

Avec la PWM il te suffit “d’alimenter” progressivement la led de 0% a 100% avec des paliers de 0.5sec, sa fait comme même beaucoup une pause de 500ms en électronique.

Initialiser un compteur de 0 a 255.
  Incrémenté le compteur de 1 (la luminosité de la led).
  Pause de 0.5 seconde.
Si compteur = 255 on sort de la boucle.

Donc normallement le programme de B@tto devrais fonctionner ?

La methode est bonne mais il ne répond pas au cahier des charges, a toi de l'adapter.

De base je devais réaliser mon projet avec l'aide d'un logiciel nommé Labview, mais j'avais vraiment beaucoup de mal à l'utiliser. J'ai donc décidé d'utiliser Arduino et les profs mon dit: "C'est ton choix", Mais maintenant je me pose comme question ... Es que c'est au moins réalisable comme projet avec arduino ou es que je perd mon temps ?

En gros mon problème est : moduler l’éclairage lorsque un usager est détecté .

J’ai essayé de rentrer ce programme sous arduino:

const int detectorPin = 3; //detecteur connecté sur la broche 3
const int ledPin = 9; // LED connectée sur la broche 9(broche PWM) 

int value = 0; // variable pour stocker ma valeur de la tension lue
byte flag=0;

void setup() 
{
 pinMode(ledPin, OUTPUT);  // configure la broche en sortie  
 pinMode(detectorPin, INPUT); // Configure la breche en entrée
 analogWrite (ledPin, 0); // résultat d'analogWrite entre 0 et 255, donc la la led est éteinte.
}

void loop() {

if (detectorPin == HIGH && flag == 0) {

flag = 1; // evite que le programme se répète en boucle

do
{   

 analogWrite(ledPin, value);
value+=5 ;
delay(5); // pour donner un effet "fade : atténué la luminosité"
}while (value<255); // jusqu'à 255 (100%)
  
delay (500) ;  //tempo de 500ms


}


if (detectorPin == LOW && flag ==1) {

flag =0;

do
{   

 analogWrite(ledPin, value);
value-=5 ;
delay(5);
}while (value>0);
  
delay (500) ;  

}

}

Voila j’aimerais savoir si ce programme peut fonctionner pour ma problématique ou si il manque des choses, des variables ou un branchement sur un mauvais port etc …
Car pour l’instant cela ne fonctionne pas. Après je me suis peut être trompé dans le câblage mais j’aimerais m’assurer que le programme est bon :slight_smile:

Up !

Ps je pense que mon programme ressembleras à ça => Tutorial 02 for Arduino: Buttons, PWM, and Functions - YouTube

à partir de 10min.40s non ?

ZiederSTI:
De base je devais réaliser mon projet avec l'aide d'un logiciel nommé Labview, mais j'avais vraiment beaucoup de mal à l'utiliser. J'ai donc décidé d'utiliser Arduino et les profs mon dit: "C'est ton choix", Mais maintenant je me pose comme question ... Es que c'est au moins réalisable comme projet avec arduino ou es que je perd mon temps ?

...

Des AVR on était envoyé dans l'espace d'autres pilote des drones, et j'en passe.. pense tu que piloté une led ne soit pas possible ?