Différences entre versions de « P2E-MELODIC-BELL »

De MCHobby - Wiki
Sauter à la navigation Sauter à la recherche
Ligne 48 : Ligne 48 :
  
 
<syntaxhighlight lang="python" line>
 
<syntaxhighlight lang="python" line>
from micropython import const
+
import micropython, time
 +
from machine import Pin
 +
from rtplay import *
 +
micropython.alloc_emergency_exception_buf(100)
  
 +
counter = 0
 +
 +
def bouton_cb( obj ):
 +
    global counter
 +
    counter += 1
 +
   
 +
# https://docs.micropython.org/en/latest/library/machine.Pin.html
 +
# https://docs.micropython.org/en/latest/reference/isr_rules.html
 +
btn = Pin( Pin.board.GP16, Pin.IN, Pin.PULL_UP )
 +
btn.irq( handler=bouton_cb, trigger=Pin.IRQ_FALLING )
 +
 +
buzzer = RingTonePlayer( Pin.board.GP13 )
 +
buzzer.load_songs( 'songs.py' )
 +
song_names = buzzer.dir_songs()
 +
print( song_names )
 +
 +
index = 0
 +
while True:
 +
    if counter>0: # Button pressed?     
 +
        # Song name to play
 +
        song_name = song_names[index]
 +
        print( 'Ring the bell! %i %s' % (index,song_name) )
 +
       
 +
        # Play the song
 +
        buzzer.play_song( song_name )
 +
       
 +
        # Select next song
 +
        index += 1
 +
        if index >= len(song_names):
 +
            index = 0
 +
       
 +
        # Reset button detection
 +
        counter=0
 +
 +
    time.sleep_ms( 200 )
 
</syntaxhighlight>
 
</syntaxhighlight>
  

Version du 1 avril 2025 à 15:15

Sonnette

Chez MCHobby, nous avons une sonnette de porte pour le moins originale.

A chaque fois qu'une personne presse le bouton, une piste audio bien rythmée est jouée sur une paire de haut-parleur PC (réglé sur un volume assez élevé).

Ce qu'il y a d'intéressant, c'est que la mélodie est différente d'une fois à l'autre (parmi une sélection de "titre").

C'est une idée assez originale donc nous ne nous lassons pas depuis de nombreuses années.

Alors pourquoi ne pas réaliser quelque-chose de similaire avec notre pico-explorer.

En effet:

  • Le Pico Explorer dispose d'un Buzzer amplifié
  • La bibliothèque RTTTL permet de jouer des mélodies.
  • Le fichier songs.py contient déjà un ensemble de mélodie (voir le détail dans la bibliothèque micropython-rtttl )

Cet exemple se propose jouer un mélodie différente à chaque fois que le bouton est pressé.

Brancher

Pico Pico-2-Explorer
GP16 Btn 3 (ou bouton volant)
GP13 Buzzer (cavalier place)

Le bouton de sonnette sera simulée par l'un des 3 boutons qui sera branché sur le GPIO 16. Ce bouton peut très bien être remplacé par un "bouton volant" pour placer la sonnette à l'entrée de votre chambre.

P2E-MELODIC-BELL-wiring-00.jpg

P2E-MELODIC-BELL-wiring-01.jpg

Sur le Pico-2-Explorer, le piezo buzzer est branché directement sur GP13 par l'intermédiaire d'une électronique d'amplification.

Le cavalier Buzzer doit être en place.

Code

Le script doorbell.py est disponible dans le dépôt dédié au Pico-2-Explorer.

 1 import micropython, time
 2 from machine import Pin
 3 from rtplay import *
 4 micropython.alloc_emergency_exception_buf(100)
 5 
 6 counter = 0
 7 
 8 def bouton_cb( obj ):
 9     global counter
10     counter += 1
11     
12 # https://docs.micropython.org/en/latest/library/machine.Pin.html
13 # https://docs.micropython.org/en/latest/reference/isr_rules.html
14 btn = Pin( Pin.board.GP16, Pin.IN, Pin.PULL_UP )
15 btn.irq( handler=bouton_cb, trigger=Pin.IRQ_FALLING )
16 
17 buzzer = RingTonePlayer( Pin.board.GP13 )
18 buzzer.load_songs( 'songs.py' )
19 song_names = buzzer.dir_songs()
20 print( song_names )
21 
22 index = 0
23 while True:
24     if counter>0: # Button pressed?       
25         # Song name to play
26         song_name = song_names[index]
27         print( 'Ring the bell! %i %s' % (index,song_name) )
28         
29         # Play the song
30         buzzer.play_song( song_name )
31         
32         # Select next song
33         index += 1
34         if index >= len(song_names):
35             index = 0
36         
37         # Reset button detection
38         counter=0
39 
40     time.sleep_ms( 200 )

Une fois le script lancé, presser sur bouton joue l'une des mélodies disponibles.

  • Ligne 01 : xxx

Traduction augmentée réalisée par Meurisse. D pour shop.MCHobby.be - Licence CC-BY-SA.


MCHobby investit du temps et de l'argent dans la réalisation de traduction et/ou documentation. C'est un travail long et fastidieux réalisé dans l'esprit Open-Source... donc gratuit et librement accessible.
SI vous aimez nos traductions et documentations ALORS aidez nous à en produire plus en achetant vos produits chez MCHobby.