Aktivní bzučák

Při práci s robotem, jako s každým interaktivním zařízením, se vyskytují chvíle, kdy je třeba člověka mezi židlí a klávesnicí upozornit, že se děje něco, na co by měl reagovat, protože program se po upozornění zastaví nebo ukončí. Mohou to být následující situace:

  • Došlo k chybě při běhu programu - podle závažnosti chybové události se program ukončí, nebo, v menším možství případů, po zásahu člověka může pokračovat v běhu. Tady zřejmě zazní několik delších pípnutí.
  • Robot očekává zadání nějakého údaje, manuální reakci nebo volbu dalšího průběhu programu (výhybka) - po zásahu člověka program může pokračovat v běhu. Zde zazní jedno krátké pípnutí.
  • Při zadávání údajů z klávesnice robot krátkým pípnutím potvrzuje stisk klávesy, program běží bez přerušení dál. Funkci pípání lze vypnout či zapnout příkazem robota nebo operačním kódem
    KemoPro 083. Příkazem robota nebo op. kódem 084 lze zapnout či vypnout vyslovování zadaného znaku hlasem Ivy. 

Kamil používá aktivní bzučák pro napájecí napětí: 3.3-5V s frekvencí 2.5kHz. Na rozdíl od pasivního bzučáku, jehož tón je dán frekvencí přivedeného signálu, aktivní bzučák má pevnou frekvenci, spouští se přivedením logické 1 na pin I/O a vypíná se logickou nulou.
  
Zapojení:
Vcc     3.3V
GND   země
I/O      k řídícímu výstupnímu GPIO pinu 

 

import time
import RPi.GPIO as GPIO

GPIO_bzucak = 23        # číslo GPIO pinu, na který je připojen I/O pin bzučáku
GPIO.setmode(GPIO.BCM)  # způsob přístupu ke GPIO Raspberry - BCM je podle číslování GPIO pinů,
                        # BOARD je číslování pinů podle pozice v konektoru       
GPIO.setwarnings(False) # Při chybách I/O nebude vypisovat varovná hlášení                              
GPIO.setup(GPIO_bzucak, GPIO.OUT, initial=GPIO.LOW)  # pin GPIO_bzucak je určen pro výstup dat
                                                     # a výchozím stavem je L0W

def bzikni(delka, kolikrat, pauza=0.1):  # pokud poziční parametr "pauza" nebude ve volání
                                         # procedury uveden, bude 0.1s.
    for i in range(kolikrat):
        GPIO.output(GPIO_bzucak, 1)  
        time.sleep(delka)
        GPIO.output(GPIO_bzucak, 0)
        time.sleep(pauza)
            
bzikni(0.3, 5, 0.8)    # délka pípnutí 0.3s, pípne 5 krát, čas mezi pípáními je 0.8s
GPIO.cleanup()         # uvolnění použitých GPIO pinů, zde pinu 23