视频教程: https : //youtu.be/wCeQcroGw6w
逐步程序
- 下载Arduino IDE和Microsoft Visual Studio IDE
https://www.arduino.cc/zh/main/software — Arduino IDE下载链接
https://www.visualstudio.com/downloads-Microsoft Visual Studio下载链接
- 从以下链接https://github.com/RaghavVenkat/Serial_Listiner_Game_Controller下载入门工具包(游戏控制器串行端口侦听器程序)
- 入门包包含Arduino的代码(实现了我们上面讨论的概念)电路图,以及将要在Microsoft Visual Studio中使用c#编写的应用程序的基本代码。
- 将超声波传感器与arduino板连接。 (使用上面给出的电路图,您还可以在入门工具包中找到该电路图)。
- 将arduino板连接到PC。 当您打开IDE时,您会看到两个函数setup()和loop()
- 在每次打开或重置Arduino板后,setup()函数将仅运行一次。 使用它来初始化/定义变量,引脚模式等。
- loop()函数精确执行其名称所暗示的功能,并连续循环,从而允许您的程序进行更改和响应。 用它来主动控制Arduino。
- 正如我们已经讨论过的超声波传感器的工作原理一样,让我们从c#应用程序设计部分开始。
- 打开Visual Studio并打开serial_listiner c#程序,您可以在入门工具包的“ c#part”文件夹中找到该程序。
- 在“工具箱”面板的MainForm中创建两个计时器。
- 将“已启用”设置为false,将时间间隔设置为1,可以在“属性”面板下找到这些内容。
广告
- 声明2个变量
Int或很久以前= 0;
Int或long val = 0;
- 导航到void _spManager_NewSerialDataReceived(object sender,SerialDataEventArgs e){…..}函数
- 并输入下面的图片给出的代码。
- 正如我们所讨论的,我们根据我们所说的谓词触发密钥。
- 与其直接触发按键,我们不如使用计时器来触发按键,从而使它对游戏产生很大的影响。
在下面的代码中,我接收到的串行值被读取为字符串,并转换为int类型。
- 要将字符串转换为int,请使用Convert.ToInt32或Convert.ToInt64,如果为32,则需要捕获类型不匹配错误,但它也可以工作。 如果使用Convert.ToInt64,则需要使用Long数据类型修饰符声明变量PAST和VAL。
现在让我们编写计时器功能的代码。
在这里,我们将使用一个内置函数SendKeys.Send()-用于将击键发送到应用程序。 这属于发送键类。
- 让我们分别使用启用时的计时器1发送F3键和使用计时器2的发送F2键。
- 发送(“ {F3}”); 内部定时器1_tick功能
- 发送(“ {F2}”); 内部定时器2_tick函数
- 触发键后,我们需要将PAST变量的值更新为从串行端口读取的当前值。
- 就这样! 现在,与飞行模拟器游戏并行运行此应用程序。 设置端口,波特率,然后单击“开始收听”。
除此之外,我们还可以添加按钮,拨动开关以将着陆灯,起落架等作为中断来控制着陆灯,起落架等。如果您想使控制器用于空中客车或波音公司的轭架/操纵杆,请使用弹性电阻或陀螺仪传感器(两者都非常适合执行该功能)。 即使代替超声波传感器,我们也可以使用电位计。
此概念可用于任何游戏,例如对于EURO TRUCK SIMULATOR之类的游戏,我们可以将此设置用作加速器并通过触发“上箭头键” /“ W键”和“下箭头键” /“ S”来中断键”。 因此,如果您有想法为任何游戏创建控制器,
- 首先,从现实世界中找到您想要控制的动作(此处指的是控制器)。
- 在游戏中找到触发该动作的相应键。
- 编写触发此键所需的逻辑代码。
享受游戏!
干杯,
拉加夫