====== 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]]