enclencher relais lors d'une impulsion +5 de 0.5 sec et déclencher relais

Bonjour, j'ai bien débuté avec les Serial.println, digitalRead, digitalWrite et autre mais j'aimerai votre aide pour un bout de code qui me permettrait d'enclencher un relais lorsque je reçois une impulsion d'une demi seconde du +5.

Puis aussi bien une heure après que deux jours après quand je reçois deux impulsions d'une demi seconde en +5 consécutivement mais séparée d'une demi seconde chacune je déclenche mon relais.

Bien sûr j'ai été voir les interrupt mais je ne comprends pas bien.

Quelqu'un pourrait-il m'aider?

Merci

C’est typiquement une définition de programme qui se prête bien à la programmation par machine à états (cf mon tuto éventuellement)

Effectivement excellent tuto que vous avez fait je vais m'en inspirer pour mon projet. Je ne connaissait pas du tout cette possibilité avec arduino mais bon je n'en suis qu'à mes débuts en autodidact en plus.

Je reviens vers vous avec mon projet terminé ou éventuellement avec votre aide pour le terminé.

Merci.

Salut

De quelle source proviennent les impulsions ?

didiersee:
Je ne connaissais pas du tout cette possibilité avec arduino mais bon je n'en suis qu'à mes débuts en autodidact en plus.

bravo - on a tous commencé quelque part, l'important étant de ne pas vouloir aller plus vite que la musique et bien acquérir les connaissances

En fait j'attends du matériel pour mettre en place mon alarme mais j'ai déjà une ancienne installée et lorsque je l'enclenche elle alimente la sirène pendant 1/2 sec donc première impulsion de 12V.

Quand je la désactive elle alimente la sirène pendant 1/2 seconde mais deux fois donc 2 bips donc deux impulsions.
Pour mettre en pratique je pense faire un pont diviseur pour ramener le +12 à +5v.

Mais j'aimerai que quand l'alarme n'est pas activée les détecteurs PIR ne soient pas allimentés en 12V.
Et quand j'active l'alarme alors seulement j’alimente les capt PIR.

D'où alimentation d'un relais qui enclenche le +12V sur les capt PIR avec Une impulsion et qui coupe lorsque je reçois 2 impulsions.

Tu as une idée de la consommation de tes PIR ?
De quel modèle s'agit-il ?

Ce sont des capteurs filaires comme ceci il consomme 18mA à 12v mais moi je les alimentes en 9v donc comptons 20mA et il y en a 5 sur la même alimentation soit +-/ 100mA en tout.
Bien sûr ce n'est pas une question de consommation c'est une question de prolonger la vie des capteurs.

OK.
La consommation est suffisante pour assurer la circulation du courant dans les contacts d'un relais.
En dessous de 1mA, cela peut être problématique.
Mais tu pourrais aussi utiliser un mOSFET canal P dans le genre IRLZ44N à la place du relais, comme ceci :

Avec une résistance de pull-up de 100K et une résistance de grille de 220Ω.
La tension sur la source peut être de 9V ou 12V.
De toutes façons il faudra un transistor pour alimenter un relais. Autant remplacer l'ensemble transistor + relais par un MOSFET.

@+

Merci c'est gentil merci mais je dispose d'un shield relai pour arduino qui ne coûte pas plus chère que votre montage comme celui-ci

Voilà problème résolu pour ceux que ça intéresse. En fait c'est assez simple grâce au concepteur d'une librairie officielle. Le code est en attaché.

Test_1pulsAlarmON_2pulsAlarmOFFbis.ino (1.71 KB)

Salut

Attention, ce genre de librairie fonctionne en "polling", c'est à dire que c'est la loop , en l'appelant de manière régulière - toutes les 10ms dans ton cas - qui permet le fonctionnement.
Il faudra faire attention à ne pas bloquer le fil d'exécution en écrivant le reste du code, en particulier éviter d'autres appels à delay().

@+

Ah bien merci hbachetti pour l'info. Heureusement mon code est pratiquement complet j'ai juste supprimé le code du relay 1 et il n'y a aucune autre commande.
C'est vraiment pour enclencher et déclencher mon relay je n'ai aucun autre usage avec ce montage.
Néanmoins ce serait pas mal de faire une petite démo de ton explication pcq je ne maîtrise pas le code comme toi.
Encore merci pour ton aide.
:slight_smile:

C'est simple.
Si ton application est occupée à réaliser une opération longue, elle ne sera pas capable d'aller surveiller les impulsions pendant ce temps. En d'autres termes elle n'appellera plus la méthode button.tick() pendant cette période.

Alors qu'une mesure de durée d'impulsions sous interruption pourrait le faire.

@+