Unity Arduino 串口通信

一、Unity发送消息Arduino接收消息 通过串口通信

Arduino端

#include <Arduino.h>#define PIN_KEY 5
uint item;void setup() {item = 0;Serial.begin(115200);pinMode(PIN_KEY, OUTPUT);  
}void loop() {if(Serial.available()>0){item = Serial.read();        }if(item == 'a'){digitalWrite(PIN_KEY,HIGH); }if(item == 'b'){digitalWrite(PIN_KEY,LOW); }
}

Unity端

public class Test : MonoBehaviour
{SerialPort port = new SerialPort("COM4", 115200);public Button Btn_Open;public Button Btn_Close;private void Start(){port.Open();port.ReadTimeout = 1;Btn_Open.onClick.AddListener(() => {port.WriteLine("a");});Btn_Close.onClick.AddListener(() => {port.WriteLine("b");});}
}

实现串口通信,点击开灯按钮,灯亮。关灯按钮,灯灭。

二、Unity接收消息Arduino发送消息 通过串口通信

Arduino端

#include <Arduino.h>void setup() {Serial.begin(9600);
}void loop() {Serial.println("a");delay(1000);Serial.println("o");delay(1000);
}

Unity端

1.导入Ardity插件(在Unity商城中找)

2.打开读写实例场景

 3.添加读写的实例脚本

 4.

/*** Ardity (Serial Communication for Arduino + Unity)* Author: Daniel Wilches <dwilches@gmail.com>** This work is released under the Creative Commons Attributions license.* https://creativecommons.org/licenses/by/2.0/*/using UnityEngine;
using System.Collections;/*** Sample for reading using polling by yourself, and writing too.*/
public class SampleUserPolling_ReadWrite : MonoBehaviour
{public MeshRenderer Cube;public SerialController serialController;// Initializationvoid Start(){serialController = GameObject.Find("SerialController").GetComponent<SerialController>();Debug.Log("Press A or Z to execute some actions");}// Executed each framevoid Update(){//---------------------------------------------------------------------// Send data//---------------------------------------------------------------------// If you press one of these keys send it to the serial device. A// sample serial device that accepts this input is given in the README.if (Input.GetKeyDown(KeyCode.N)){Debug.Log("Sending n");serialController.SendSerialMessage("n");}if (Input.GetKeyDown(KeyCode.M)){Debug.Log("Sending m");serialController.SendSerialMessage("m");}//---------------------------------------------------------------------// Receive data//---------------------------------------------------------------------string message = serialController.ReadSerialMessage();if (message == null)return;// Check if the message is plain data or a connect/disconnect event.if (ReferenceEquals(message, SerialController.SERIAL_DEVICE_CONNECTED))Debug.Log("Connection established");else if (ReferenceEquals(message, SerialController.SERIAL_DEVICE_DISCONNECTED))Debug.Log("Connection attempt failed or disconnection detected");else {if (message.Equals("a")) {Cube.material.color = Color.red;}if (message.Equals("o")){Cube.material.color = Color.white;}Debug.Log("Message arrived: " + message);}}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/26881.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【统计函数3】——excel常见函数

相关数据资料来源于网易 函数一览&#xff1a; rank、rand、randbetween、floor、int rank函数: 求某单元格在某区域内的排名 RANK(数值,引用区域,降序0/升序1)范围多指定&#xff1a; 分开的范围之间可用逗号隔开&#xff0c;最后再用一个小括号括起来。F4可以快速锁定行和列。…

【每日随笔】摩托车安全驾驶 ① ( 摩托车骑行准备 | 买好保险 | 摩托车必要改装 - 护杠 + 行车记录仪 | 骑行护具 )

文章目录 一、摩托车骑行准备1、买好保险2、摩托车必要改装 - 护杠 行车记录仪3、骑行护具 德州考驾照归来 , 提了一辆 铃木 UY125 , 注意安全驾驶 , 以后上班就骑摩托车了 ; 由于居住证上的地址是海淀区 , 目前住在学院路 , 导致无法把车落户到自己名下 , 只能上公户了 ; 车…

Java List中通过对象属性排序,可实现多条件排序

直接上代码&#xff1a; import com.google.common.collect.Lists; import lombok.AllArgsConstructor; import lombok.Data;import java.util.Comparator; import java.util.List; import java.util.stream.Collectors;/*** List 对象属性排序*/Data AllArgsConstructor clas…

Unity 事件函数的执行顺序

脚本生命周期流程图 Awake&#xff1a;在所有 Start 函数之前&#xff0c;以及 prefab 实例化之后调用。&#xff08;如果一个 GameObject 在启动期间处于非活动状态&#xff0c;则在激活之前不会调用它。&#xff09;OnEnable&#xff08;仅在对象处于活动状态时调用&#xff…

领略大数据分析的魅力:迈向FineBI的世界

版权声明&#xff1a;本文为 小异常 原创文章&#xff0c;非商用自由转载-保持署名-注明出处&#xff0c;谢谢&#xff01; 本文网址&#xff1a;https://sunkuan.blog.csdn.net/article/details/131698171 文章目录 一、FineBI介绍&#xff08;6.0版本&#xff09;1、使用人群…

深入理解网络通信和TCP、IP协议-01

1、网络协议 计算机网络是什么&#xff1f; 随着计算机技术发展&#xff0c;计算机的体积和价格都在下降&#xff0c;之前计算机多用于研究机构&#xff0c;现 阶段逐步进入一般的公司用于办公。原来计算机之间传输数据需要通过软盘等第三方存储介 质进行转存&#xff0c;人们…

TCP/IP基础知识笔记

应用层&#xff1a;为用户提供应用功能&#xff0c;比如 HTTP、FTP、Telnet、DNS、SMTP等。 应用层是工作在操作系统中的用户态&#xff0c;传输层及以下则工作在内核态。 传输层&#xff1a;为应用层提供网络支持。 *TCP包含众多特性比如流量控制、超时重传、拥塞控制等因此可…

Java多线程下的单例模式参考

Java多线程下的单例模式参考 单例有多种的写法&#xff0c;本例是懒汉式单例的一种写法。在高并发环境下需要注意的是&#xff1a; 1.单例在并发访问并调用其相应的getInstance方法的时候也会造成创建多个实例对象&#xff0c;加锁是必要的。 2.使用synchronized是比较好的解…

【SpringBoot】SpringBoot-Admin 服务监控 + 告警通知

简单介绍 Spring Boot Actuator 是 Spring Boot 自带的一个功能模块&#xff0c; 提供了一组已经开箱即用的生产环境下常用的特性和服务&#xff0c;比如应用程序的健康检查、信息暴露、度量收集、日志记录等。 在实际项目中&#xff0c;Actuator 可以帮助我们快速了解应用程序…

使用dhtmlx-gantt甘特图插件定制预约表【实战】

示例传送门 定制预约表展示 一、安装 npm i dhtmlx-gantt二、配置解释与汇总 //自定义表头列 gantt.config.columns = [{name: "

想学会ai绘画软件生成?告诉你ai绘画图片生成有什么软件

小铭和晓虹是两位对艺术和创造有浓厚兴趣的大学生。他们一直梦想能够创作出独特而令人惊叹的绘画作品。然而&#xff0c;他们也意识到绘画是一项需要长时间学习和实践的技能。幸运的是&#xff0c;他们在寻找ai绘画图片生成有什么软件的时候&#xff0c;认识到了很多新的软件&a…

SpringBoot 项目使用 Redis 对用户IP进行接口限流

本文主要参考了该篇文章&#xff1a;https://www.zhihu.com/question/586213782/answer/3038040317?utm_id0 文章目录 一、思路1.1 固定时间段&#xff08;旧思路&#xff09;1.1.1 思路描述1.1.2 思路缺陷 1.2 滑动窗口&#xff08;新思路&#xff09;1.2.1 思路描述1.2.2 Re…