User Tools

Site Tools

한국어

comfilepi:controlling_the_piezo_buzzer:index

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
comfilepi:controlling_the_piezo_buzzer:index [2022/12/01 11:46]
COMFILE Technology [Python Example]
comfilepi:controlling_the_piezo_buzzer:index [2023/06/26 08:43]
COMFILE Technology [Controlling the Electro-magnetic Buzzer]
Line 1: Line 1:
 +====== 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:
 +<​code>​
 +sudo systemctl stop touch-beep.service
 +sudo systemctl disable touch-beep.service
 +</​code>​
 +
 +
 +To enable the touch beep, simply execute the following commands:
 +<​code>​
 +sudo systemctl enable touch-beep.service
 +sudo systemctl start touch-beep.service
 +</​code>​
 +
 +===== 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 [[http://​abyz.co.uk/​rpi/​pigpio/​|pigpio library]]. ​ The following examples illustrate how to use a programming language to play a beep.
 +
 +==== C++ Example ====
 +
 +<code C++>
 +#include <​pigpiod_if2.h>​
 +#include <​thread>​
 +
 +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;
 +}
 +</​code>​
 +
 +Compile with:
 +<​code>​
 +g++ playbeep.cpp -lpigpiod_if2 -o playbeep
 +</​code>​
 +==== Python Example ====
 +
 +<code python>
 +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()
 +
 +</​code>​
 +
 +[[comfilepi:​index|ComfilePi - Industrial Raspberry Pi Panel PC]]
 +
  
comfilepi/controlling_the_piezo_buzzer/index.txt · Last modified: 2023/06/26 08:43 by COMFILE Technology