====== Controlling the Electro-magnetic Buzzer ======
The CPi-A/B/C/S series panel PCSs have a built-in electro-magnetic buzzer. By default, it beeps when the screen is touched.
===== Enabling/Disabling the Touch Beep =====
To disable the touch beep, simply execute the following commands:
sudo systemctl stop touch-beep.service
sudo systemctl disable touch-beep.service
To enable the touch beep, simply execute the following commands:
sudo systemctl enable touch-beep.service
sudo systemctl start touch-beep.service
===== Programming the Electro-magnetic Buzzer =====
The electro-magnetic buzzer is tied to GPIO pin 30 on the CPi-A and CPi-B panel PCs and GPIO pin 27 on the CPi-C panel PCs. One way to program it is to use the [[https://abyz.co.uk/rpi/pigpio/|pigpio library]]. The following examples illustrate how to use a programming language to play a beep.
==== C++ Example ====
#include
#include
using namespace std;
#define PIN 30 // CPi-A/B/S
//#define PIN 27 // CPi-C
int main()
{
auto instance = pigpio_start(NULL, NULL);
// We actually can't achieve 2700Hz due to the sampling
// rate, but it will do the best it can
set_PWM_frequency(instance, PIN, 2700);
// 128/255 = 50% duty
set_PWM_dutycycle(instance, PIN, 128);
// play beep for 100 milliseconds
this_thread::sleep_for(chrono::milliseconds(100));
// turn off beep
set_PWM_dutycycle(instance, PIN, 0);
pigpio_stop(instance);
return 0;
}
Compile with:
g++ playbeep.cpp -lpigpiod_if2 -o playbeep
==== Python Example ====
import time
import pigpio
PIN = 30 # CPi-A/B/S
# PIN = 27 # CPi-C
pi = pigpio.pi()
# We actually can't achieve 2700Hz due to the sampling
# rate, but it will do the best it can
pi.set_PWM_frequency(PIN, 2700)
# 128/255 = 50% duty
pi.set_PWM_dutycycle(PIN, 128)
# play beep for 100 milliseconds
time.sleep(0.100)
#turn off beep
pi.set_PWM_dutycycle(PIN, 0)
pi.stop()
[[comfilepi:index|ComfilePi - Industrial Raspberry Pi Panel PC]]