Unity Arduino完美协作工具Uduino
程序员文章站
2022-03-05 10:37:17
...
Unity Arduino完美协作工具之Uduino
前言
盆友搞了个Uduino插件,正好手边有Unity和Arduino,用按钮和灯泡实现Unity控制Arduino与Arduino控制Unity。
环境搭建
对如何导入插件有疑问的话,建议查看官方****
****: Connect Arduino to Unity in less than 1 minute - Uduino
Unity插件导入部分
将插件导入Unity
Arduino代码上传部分
将Uduino代码上传至Arduino
Unity场景搭建部分
一个Cube(添加刚体组件)与一个Plane
硬件场景部分
灯泡链接GND和11管脚
按键连接GND和2管脚
控制代码
using System;
using System.Collections;
using System.Collections.Generic;
using Uduino;
using UnityEngine;
public class UduinoTest : MonoBehaviour
{
/// <summary>
/// 小灯管脚
/// </summary>
int pin11;
/// <summary>
/// 按钮管脚
/// </summary>
int pin2;
/// <summary>
/// Arduino设备
/// </summary>
UduinoDevice arduinoDevice;
public GameObject myCube;
// Start is called before the first frame update
void Start()
{
//当连接板子时触发
UduinoManager.Instance.OnBoardConnected += OnArduinoConnected;
}
/// <summary>
/// 当板子链接时
/// </summary>
private void OnArduinoConnected(UduinoDevice device)
{
//拿到pin口
pin11 = UduinoManager.Instance.GetPinFromBoard("11");
pin2 = UduinoManager.Instance.GetPinFromBoard("2");
//设置pin口控制方式
UduinoManager.Instance.pinMode(pin11, PinMode.PWM);
UduinoManager.Instance.pinMode(pin2, PinMode.Input_pullup);
}
float timeCount=0;
int count;
bool isUp = true;
// Update is called once per frame
void Update()
{
Huxideng();
if (UduinoManager.Instance.hasBoardConnected())
{
//读取pin口数字量
int a = UduinoManager.Instance.digitalRead(pin2);
if (a == 0)
{
AddForcesToCube();
}
}
}
/// <summary>
/// 给Cube加力
/// </summary>
public void AddForcesToCube()
{
myCube.GetComponent<Rigidbody>().AddForce(Vector3.up * 2f);
}
/// <summary>
/// 呼吸灯
/// </summary>
private void Huxideng()
{
if (UduinoManager.Instance.hasBoardConnected())
{
timeCount += Time.deltaTime;
if (timeCount >= 0.01f)
{
if (isUp)
{
count++;
}
else
{
count--;
}
if (count >= 255)
{
count = 255;
isUp = false;
}
if (count <= 0)
{
count = 0;
isUp = true;
}
//写入pin口模拟量
UduinoManager.Instance.analogWrite(pin11, count);
timeCount = 0;
}
}
}
}
使用效果
小灯为呼吸灯效果,按下按键Unity中的Cube会向上升起,编辑器右下角可以看到管脚传来的值。
这里可以看到灯泡忽明忽暗。
注意事项
当编辑器运行时,注意这两个地方不要有冲突的管脚,会造成0和1交替出现的情况。
上一篇: WEB端即时通讯技术