default·
在香橙派上面使用usb转ttl,用c++去实现蜂鸣器
usb转ttl分别有五个针脚。
linuxc++开发语言
使用c++代码实现蜂鸣器
#include <iostream>
#include <fcntl.h>
#include <termios.h>
#include <unistd.h>
#include <cstring>
#include <chrono>
#include <thread>
#include <errno.h>
int main()
{
// 打开串口
int serial_port = open("/dev/ttyUSB1", O_RDWR);
if (serial_port < 0)
{
std::cerr << "无法打开串口!" << std::endl;
return 1;
}
std::cout << "串口已打开!" << std::endl;
// 配置串口设置
struct termios tty;
memset(&tty, 0, sizeof(tty));
// 获取当前串口设置
if (tcgetattr(serial_port, &tty) != 0)
{
std::cerr << "获取串口设置失败!" << std::endl;
close(serial_port);
return 1;
}
std::cout << "串口设置成功!" << std::endl;
// 设置波特率
cfsetispeed(&tty, B9600); // 输入波特率
cfsetospeed(&tty, B9600); // 输出波特率
// 设置其他串口参数
tty.c_cflag &= ~PARENB; // 无奇偶校验
tty.c_cflag &= ~CSTOPB; // 1个停止位
tty.c_cflag &= ~CSIZE;
tty.c_cflag |= CS8; // 8个数据位
tty.c_cflag |= CREAD | CLOCAL; // 启用接收,忽略控制线路
tty.c_iflag &= ~(IXON | IXOFF | IXANY); // 禁用软件流控
tty.c_lflag &= ~(ICANON | ECHO | ECHOE | ISIG); // 原始模式
tty.c_oflag &= ~OPOST; // 原始输出模式
// 应用设置
tcflush(serial_port, TCIFLUSH);
if (tcsetattr(serial_port, TCSANOW, &tty) != 0)
{
std::cerr << "设置串口失败!" << std::endl;
close(serial_port);
return 1;
}
std::cout << "串口设置成功!!!" << std::endl;
bool buzzerOn = false; // 蜂鸣器状态标志
std::cout << "程序已启动,每50毫秒触发一次蜂鸣器。" << std::endl;
while (true)
{
// 切换蜂鸣器状态
buzzerOn = !buzzerOn;
if (buzzerOn)
{
// 开启蜂鸣器
write(serial_port, "1", 1);
std::cout << "蜂鸣器已开启。" << std::endl;
}
else
{
// 关闭蜂鸣器
write(serial_port, "0", 1);
std::cout << "蜂鸣器已关闭。" << std::endl;
}
// 每50毫秒触发一次
std::this_thread::sleep_for(std::chrono::milliseconds(50));
}
// 关闭串口
close(serial_port);
std::cout << "串口已关闭!" << std::endl;
return 0;
}
接线方式
- usb转ttl分别有五个针脚
- 3.3v
- 5v
- GND
- RX 接收数据的
- TX 发送数据的
- 蜂鸣器
- GND
- I/O
- VCC
3.3v -> VCC GND -> GND TX -> I/O