arduino 编写C++库文件笔记

arduino的C++库文件编写笔记
蜂鸣器播放曲子的库文件
目的是实现在 arduino文件 music.ino 中可以自定义蜂鸣器的引脚int buzzer_pin = 3;
然后主函数直接调用一个函数就可以播放曲子,void loop() { birthday(); }
1.库文件的头文件.h
头文件中常出现的#ifndef #define #endif
用法如下

#ifndef <标识>
#define <标识>

......
......

#endif

作用
#ifndef起到的效果是防止一个源文件两次包含同一个头文件
头文件的内容都放在#ifndef和#endif中,这样被多个c文件调用时,就不会出现多次调用的问题

class类
class里面的量相当于c语言中的变量声明,函数声明。
把下面的内容命名为 music.h

#ifndef _MUSIC_H_
#define _MUSIC_H_ 
#include <Arduino.h>

class music
{
   public:   //public里定义的是 公共成员在类的外部是可访问的
        //带参数的构造函数,用于接收music.ino文件中传过来的蜂鸣器引脚
       music(char pin);   
       void birthday(void);      //声明函数
       
       void super_mario(void);       //声明函数
       void sing(int s);    //声明带一个参数的函数
       void buzz(int targetPin, long frequency, long length); //声明一个带多个参数的函数
   
   private:  //private里定义的是私有成员 在类的外部是不可访问的
        char buzzer_pin;
};
#endif

2.C++文件
C++文件和头文件.h结合使用
将下面的内容命名为music.cpp

#include "music.h"  //引入定义好的头文件

//::在这里为类作用域符号,这里music类里的成员music(char pin)
music::music(char pin)    //这里调用了构造函数music
{
 //构造函数music是public成员,所以这里可以直接调用私有变量private成员buzzer_pin
  buzzer_pin = pin;   
}
//调用music类中的函数birthday(void)
void music::birthday(void)
{
  tone(buzzer_pin,294);
  delay(250);
  tone(buzzer_pin,440);
  delay(250);
  tone(buzzer_pin,392);
  delay(250);
  tone(buzzer_pin,532);
  delay(250);
  tone(buzzer_pin,494);
  delay(500);
  tone(buzzer_pin,392);
  delay(250);
  tone(buzzer_pin,440);
  delay(250);
  tone(buzzer_pin,392);
  delay(250);
  tone(buzzer_pin,587);
  delay(250);
  tone(buzzer_pin,532);
  delay(500);
  tone(buzzer_pin,392);
  delay(250);
  tone(buzzer_pin,784);
  delay(250);
  tone(buzzer_pin,659);
  delay(250);
  tone(buzzer_pin,532);
  delay(250);
  tone(buzzer_pin,494);
  delay(250);
  tone(buzzer_pin,440);
  delay(250);
  tone(buzzer_pin,698);
  delay(375);
  tone(buzzer_pin,659);
  delay(250);
  tone(buzzer_pin,532);
  delay(250);
  tone(buzzer_pin,587);
  delay(250);
  tone(buzzer_pin,532);
  delay(500);
  noTone(buzzer_pin);
}

3.arduino代码调用库文件
上面两步写好了 头文件music.h 和 cpp文件 music.cpp
现在写arduino文件 music.ino
arduino IDE中新建一个文件保存为music,将库文件music.h和music.cpp放到music文件夹下
代码:

 //引入库函数头文件," "就是可以引入同文件夹下的库文件,如果库函数放到了arduino IDE的 library中,就要使用尖括号 #include <music.h>来进入头文件
#include "music.h" 
// 蜂鸣器引脚
int buzzer_pin = 3;
//构造函数的名称与类的名称是完全相同的,并且不会返回任何类型,也不会返回 void。构造函数可用于为某些成员变量设置初始值。
music Music(buzzer_pin);  //实例化一个对象,这就把蜂鸣器引脚传给了构造函数

void setup() {
  Serial.begin(9600);
}

void loop() {
  Music.birthday();    //通过点符号 . 来调用music.cpp文件中的public里的函数birthday()
}

这就完成了一个简单的蜂鸣器播放生日快乐曲子的库文件

  • 5
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值