guowenxue
2018-10-14 48e47b5212ace2dcb83379d3502b11f64ef4204d
Add beep source code and update led.h
1 files modified
2 files added
158 ■■■■■ changed files
modules/c/beep.c 118 ●●●●● patch | view | raw | blame | history
modules/c/beep.h 38 ●●●●● patch | view | raw | blame | history
modules/c/led.h 2 ●●● patch | view | raw | blame | history
modules/c/beep.c
New file
@@ -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;
}
modules/c/beep.h
New file
@@ -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
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