墨香阁
| 分享生活的点滴

使用c++代码实现蜂鸣器

2024年12月20日 07:35:59
10 views
2 min read
嵌入式
使用c++代码实现蜂鸣器

使用c++代码实现蜂鸣器

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

© 2025 . 保留所有权利.

原始文章发表于 2024年12月20日 07:35:59

发表留言

全部留言 (0)

暂无留言,成为第一个留言的人吧!