6.2 Alertor (passieve)

Project 6.2
Vervolgens zullen we een passieve zoemer gebruiken om een ​​alarm te maken.
De lijst met componenten en het circuit is vergelijkbaar met het deurbelproject. We hoeven alleen maar de deurbel te nemen circuit en vervang de actieve zoemer door een passieve zoemer.

In dit project wordt ons zoemeralarm bestuurd door de drukknopschakelaar.
Druk op de drukknopschakelaar en de zoemer klinkt.
Laat de drukknopschakelaar los en de zoemer stopt.
Zoals eerder vermeld, is het analoog aan ons eerdere project waarbij een LED AAN en UIT werd aangestuurd.
Voor het besturen van een passieve zoemer is PWM met een bepaalde geluidsfrequentie vereist.
Nadat het programma is uitgevoerd, drukt u op de drukknop en klinkt de zoemer. Laat de druk los knopschakelaar en de zoemer stopt.

In de while-lus van de hoofdfunctie wordt de subfunctie alertor() geactiveerd als de drukknop wordt ingedrukt gebeld worden en het alarm laat een waarschuwingsgeluid horen. De frequentiecurve van het alarm is gebaseerd op een sinuscurve.
We moeten de sinuswaarde berekenen van 0 tot 360 graden en vermenigvuldigen met een bepaalde waarde (hier is deze waarde is 500) plus de resonantiefrequentie van de zoemer. We kunnen de PWM-frequentie instellen via softToneWrite (pin,
toonVal). ongeldige alertor(int pin){

Code Alertor

#!/usr/bin/env python3
########################################################################
# Filename    : Alertor.py
# Description : Make Alertor with buzzer and button
# Author      : www.freenove.com
# modification: 2019/12/27
########################################################################
from gpiozero import TonalBuzzer,Button
from gpiozero.tones import Tone
import time
import math

buzzer = TonalBuzzer(17)
button = Button(18) # define Button pin according to BCM Numbering

def loop():
    while True:
        if button.is_pressed:  # if button is pressed
            alertor()
            print ('alertor turned on >>> ')
        else :
            stopAlertor()
            print ('alertor turned off <<<')
def alertor():
    buzzer.play(Tone(220.0)) 
    time.sleep(0.1)
        
def stopAlertor():
    buzzer.stop()
            
def destroy():
    buzzer.close()                  

if __name__ == '__main__':     # Program entrance
    print ('Program is starting...')
    try:
        loop()
    except KeyboardInterrupt:  # Press ctrl-c to end the program.
        destroy()
        print("Ending program")

Nadat het programma is uitgevoerd, drukt u op de drukknop en klinkt de zoemer. Laat de druk los knopschakelaar en de zoemer stopt.
Het volgende is de programmacode:

Definieer GPIO17 als de zoemercontrolepin en GPIO18 als de knopcontrolepin om de passieve zoemer te besturen.
Er is een bepaalde PWM-frequentie nodig om een ​​passieve zoemer te besturen, dus de TonalBuzzer-klasse is nodig.

In de while-lus van de hoofdfunctie, wanneer de drukknopschakelaar wordt ingedrukt, wordt de subfunctie alertor() wordt gebeld en het alarm laat een waarschuwingsgeluid horen. De frequentiecurve van het alarm is gebaseerd op een sinus kromme. We moeten de sinuswaarde berekenen van 0 tot 360 graden en vermenigvuldigen met een bepaalde waarde (hier dit waarde is 500) plus de resonantiefrequentie van de zoemer. We kunnen de PWM-frequentie instellen via Tone (toneVal).

Wanneer de drukknopschakelaar wordt losgelaten, stopt de zoemer (in dit geval ons alarm).

Raadpleeg voor meer informatie over de methoden die worden gebruikt door de klasse TonalBuzzer in de GPIO Zero-bibliotheek https://gpiozero.readthedocs.io/en/stable/api_output.html#tonalbuzzer

Scroll naar boven