From 48e47b5212ace2dcb83379d3502b11f64ef4204d Mon Sep 17 00:00:00 2001 From: guowenxue <guowenxue@gmail.com> Date: Sun, 14 Oct 2018 22:26:35 +0800 Subject: [PATCH] Add beep source code and update led.h --- modules/c/beep.c | 118 +++++++++++++++++++++++++++++++++++++++ modules/c/beep.h | 38 ++++++++++++ modules/c/led.h | 2 3 files changed, 157 insertions(+), 1 deletions(-) diff --git a/modules/c/beep.c b/modules/c/beep.c new file mode 100644 index 0000000..4108b1f --- /dev/null +++ b/modules/c/beep.c @@ -0,0 +1,118 @@ +/********************************************************************************* + * Copyright: (C) 2018 LingYun IoT System Studio + * All rights reserved. + * + * Filename: led.c + * Description: This file is used to control Passive buzzer or Active buzzer + * + * pi@raspberrypi:~ $ gpio readall show BCM and wPi pinmap + * + * VCC ---- 5V/3.3V + * GND ---- GND + * I/O ---- GPIO.18 ---- GPIO.1 + * BCM wPi + * + * Version: 1.0.0(2018/10/14) + * Author: Guo Wenxue <guowenxue@gmail.com> + * ChangeLog: 1, Release initial version on "2018/10/14 12:13:26" + * + ********************************************************************************/ + +#include <stdio.h> +#include <stdlib.h> +#include <unistd.h> +#include <fcntl.h> +#include <dirent.h> +#include <string.h> +#include <time.h> +#include <errno.h> + +#include <wiringPi.h> +#include "beep.h" + +//#define CONFIG_ACTV_BEEP + +int main(int argc, char *argv[]) +{ + wiringPiSetup(); + + while(1) + { +#ifdef CONFIG_ACTV_BEEP + turn_active_beep(ON); +#else + turn_passive_beep(ON, BEEP_FREQ); +#endif + sleep(1); + +#ifdef CONFIG_ACTV_BEEP + turn_active_beep(OFF); +#else + turn_passive_beep(OFF, BEEP_FREQ); +#endif + sleep(1); + } + + return 0; +} + + +int turn_passive_beep(int cmd, int freq) +{ + int range; + + if(freq<2000 || freq>2500) + { + printf("Beep set invalid PWM frequency!\n"); + return -1; + } + + if(OFF == cmd) + { + pwmWrite(PWM_PIN, 0); + pinMode(PWM_PIN, INPUT) ; + } + else + { + /* Set GPIO as PWM output mode */ + pinMode(PWM_PIN, PWM_OUTPUT) ; + + /* Set PWM mode as ms mode */ + pwmSetMode(PWM_MODE_MS); + + /* Set PWM clock: 19.2MHz/32=600KHz */ + pwmSetClock(32); + + /* Set PWM frequency */ + range=600000/freq; + pwmSetRange(range); + + /* Set PWM duty 50% */ + pwmWrite(PWM_PIN, range/2); + } +} + +/* Turn ON/OFF buzzer, Active Buzzer can not set frequency */ +int turn_active_beep(int cmd) +{ + + /* Active buzzer VCC connect to: + 5V: Both high and low level will be on + 3.3V: Low level be on and High level be off + + So we use INPUT or OUTPUT to control the Beeper + */ + if(OFF == cmd) + { + pinMode(PWM_PIN, INPUT); + } + else + { + pinMode(PWM_PIN, OUTPUT); + digitalWrite(PWM_PIN, LOW); + } + + return 0; +} + + diff --git a/modules/c/beep.h b/modules/c/beep.h new file mode 100644 index 0000000..68c4751 --- /dev/null +++ b/modules/c/beep.h @@ -0,0 +1,38 @@ +/********************************************************************************* + * Copyright: (C) 2018 LingYun IoT System Studio + * All rights reserved. + * + * Filename: beep.h + * Description: This file is used to control Passive buzzer or Active buzzer + * + * pi@raspberrypi:~ $ gpio readall show BCM and wPi pinmap + * + * VCC ---- 5V/3.3V + * GND ---- GND + * I/O ---- GPIO.18 ---- GPIO.1 + * BCM wPi + * + * Version: 1.0.0(2018/10/14) + * Author: Guo Wenxue <guowenxue@gmail.com> + * ChangeLog: 1, Release initial version on "2018/10/14 12:13:26" + * + ********************************************************************************/ + +#ifndef __BEEP_H +#define __BEEP_H + +#define OFF 0 +#define ON 1 + +#define BEEP_FREQ 2400 + +/* Use Pin12 == GPIO18(BCM) == GPIO.1(wPi) */ +#define PWM_PIN 1 + + +int turn_passive_beep(int cmd, int freq); + +int turn_active_beep(int cmd); + +#endif + diff --git a/modules/c/led.h b/modules/c/led.h index 582d845..8e3b4fa 100644 --- a/modules/c/led.h +++ b/modules/c/led.h @@ -2,7 +2,7 @@ * Copyright: (C) 2018 LingYun IoT System Studio * All rights reserved. * - * Filename: led.c + * Filename: led.h * Description: This file is used to control RGB 3-colours LED * * pi@raspberrypi:~ $ gpio readall show BCM and wPi pinmap -- Gitblit v1.9.1