gpt4 book ai didi

c++ - 使用 Arduino 信号作为 PC 的输入?

转载 作者:可可西里 更新时间:2023-11-01 13:30:13 24 4
gpt4 key购买 nike

我最近拿到了一个 Arduino (Uno),我想知道一些事情。

我的扬声器没有外部音量转换器,所以我想,也许可以将电位器连接到 Arduino,然后用它来控制音量(在 Windows 中)。但这可能吗?

要使用 Visual C、C++(或更多“多平台”语言)读取 Arduino 引脚的值?然后使用它来设置 Windows 中的音量级别(如果可能的话,也可以在 Linux 中)。

我认为这是可能的,因为如果你使用:

Serial.println(analogRead([pin with potentiometer]));

您可以将电位器的值传输到电脑(通过 USB)。那么有什么方法可以在 C 或 C++ 中读取这些值吗?

我知道如何通过 C 或 C++ 在 Windows 中设置音量,我只需要知道是否有办法在(可视)C 或 C++ 脚本中读取电位计的值。

最佳答案

当然。并使用完全相同的方法:串行通信。由于我不是出色的 Windows 专家,我无法为您写一个完整的 Windows 示例,但这里有一些片段可以帮助您在 Unix(Linux、OS X 等)上入门:

Arduino 上的代码:

#define POT_PIN 1

void setup()
{
Serial.begin(9600); // 9600 baud is more than enough
}

void loop()
{
int pot = analogRead(POT_PIN);
unsigned char byte = (pot + 2) >> 2; // round and divide by 4
Serial.write(pot);
delay(100); // or do something useful
}

计算机上的代码:

#include <termios.h>

struct termios tio;
memset(&tio, 0, sizeof(tio));

// Open serial port in mode `8N1', non-blocking
tio.c_cflag = CS8 | CREAD | CLOCAL;
tio.c_cc[VMIN] = 1;
tio.c_cc[VTIME] = 5;

int fd = open(device, O_RDONLY);

cfsetospeed(&tio, B9600);
cfsetispeed(&tio, B9600);
tcsetattr(fd, TCSANOW, &tio);

while (1) {
unsigned char byte;
read(fd, &byte, 1);
use_some_library_to_set_volume(byte);
}

关于c++ - 使用 Arduino 信号作为 PC 的输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15806552/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com