用Arduino+OSC建立一个iPad铁路王国巡视机
翻译自:http://blog.mydream.com.hk/howto/build-up-a-ipad-plarail-patrol-with-arduino-osc
简单介绍
这个教程告诉你怎样建立一个iPad控制的铁路王国。
假设你还不知道用Arduino进行工作,请阅读我的Arduino
OSC step by step howto帖子。
http://v.youku.com/v_show/id_XODEwMTk4ODA4.html
1. 硬件设置
- 展示出怎样连接到一起
- 网络设置
- 把伺服机附在铁路组件上(轨道,火车站)
2. 软件设置
- 准确的Arduino代码
- 试样的TouchOSC配置
1. 硬件设置
我们来看一下设置原理图是怎样连接的。
- 一个伺服机连接到数字引脚19,20,21
- 给Arduino Ethernet 指定一个IP 192.168.0.178
- iOS将通过DHCP分配一个IP 192.168.0.12
硬件组件
组件
你须要例如以下组件以构建你的设置:
1. Arduino 板(Mega2560,UNO...等)
2. 传感器插板(选用)
3. 无线模块或无线路由器(假设用的是有线Arduino网络,是选用的)
4. 低功耗伺服单元,推荐一个mini或微型伺服器
5. 电源,比如 无线,局域网,伺服器同一时候推荐选用7.4v
6. 启用无线 AP/路由。DHCP(用于iPad)
伺服器扩展线连接到数字引脚19,20,21.
网线连在无线模块到LAN模块之间。为什么?由于模块仅支持无线串口通信,所以它无法支持侦听网络socket。
因此,我把它作为一个无线AP配置,连接我LAN接口及我的路由器,你能够如你所愿使用随意路由,而不一定想我那样堆叠那些模块。请阅读我的 Arduino
OSC step by step howto帖子,看下用普通路由怎样工作。
铁路网络组件设置
你须要计算出伺服器在组件上的位置。像我,我就补到以下了,你能够使出不论什么招数,让他们能一起工作即可。
http://www.youtube.com/watch?v=Hv9IVDAbao0
2. 软件设置
Arduino 代码
改动IP地址
给Arduino和你的iOS/Android设备改动IP地址,以配合你的设置。
比如:iOS上的192.168.0.12,然后搜索"mylp"行
1
|
byte // Specify |
1
|
byte // your |
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
|
// Receive //recotana .com /iphone/iosc/en/index .html // Credits // Colorsound // you //github .com /djiamnot/Z_OSC // you //vvvv .org /contribution/arduinoosc /* This for controlling */ #include #include #include #include byte byte // Specify int // and byte // Talk int float // delcare for reading // create in setup() Servo Servo Servo Z_OSCClient Z_OSCServer Z_OSCMessage Z_OSCMessage void myservo1.attach(19); // attaches myservo2.attach(20); // attaches myservo3.attach(21); // attaches Serial.begin(19200); Ethernet.begin(myMac server.sockOpen(serverPort); } void if (server.available()){ message.setAddress(destIp,destPort); rcvMes=server.getMessage(); // myservo1 if ( "/1/toggle1" ) { val myservo1.write(val); if ( message.setZ_OSCMessage( "/1/toggle1_msg" , "s" , "Stopping ); client.send(&message); } else { message.setZ_OSCMessage( "/1/toggle1_msg" , "s" , "Tsuen ); client.send(&message); } } // myservo2 if ( "/1/toggle2" ) { val myservo2.write(val); if ( message.setZ_OSCMessage( "/1/toggle2_msg" , "s" , "Stopping ); client.send(&message); } else { message.setZ_OSCMessage( "/1/toggle2_msg" , "s" , "Lai ); client.send(&message); } } // myservo3 if ( "/1/fader1" ) { val if ( myservo3.write(0); message.setZ_OSCMessage( "/1/fader1_msg" , "s" , "Bypass" ); client.send(&message); } else if ( myservo3.write(150); message.setZ_OSCMessage( "/1/fader1_msg" , "s" , "Normal" ); client.send(&message); } } } }
|
TouchOSC
下载并改动这个例程: Plarail
TouchOSC Layout
OSC
此演示样例面板,包含一个推杆,两个转换button,用于出发伺服器运动,文本框区域接收Arduino文字信息。
触发button1
它由两个重要參数组成,用于Arduino与servo之间的通信。
1. OSC 名称:/1/toggle1/1/toggle1
与Arduino代码中的getZ_OSCAddress 行一致
2. 取值范围:0到62
触发转换器开关时。这个值指定两个准确伺服器的角度,请适当调整。
触发button2
它由两个重要參数组成。用于Arduino与servo之间的通信。
1. OSC 名称:/1/toggle2/1/toggle2
与Arduino代码中的getZ_OSCAddress 行一致
2. 取值范围:0到62
触发转换器开关时,这个值指定两个准确伺服器的角度。请适当调整。
转换button1
它由两个重要參数组成。用于Arduino与servo之间的通信。
1. OSC 名称:/1/fader1/1/fader
与Arduino代码中的getZ_OSCAddress 行一致
2. 取值范围:20到150
触发转换器开关时,这个值指定两个准确伺服器的角度,请适当调整。
触发信息文本框
当发回Arduino信息时,这个标签区域接收文本信息,我们先把文本区域置空。当触发伺服器时,Arduino发回一个"Moved"在文本框区域。 OSC Name:
/1/toggle1_msg, /1/toggle2_msg, /1/fader1_msg OSC名字与Arduino代码中的“setZ_OSCMessage”一致
用Arduino+OSC建立一个iPad铁路王国巡视机的更多相关文章
- [转]使用Scrapy建立一个网站抓取器
英文原文:Build a Website Crawler based upon Scrapy 标签: Scrapy Python 209人收藏此文章, 我要收藏renwofei423 推荐于 11个月 ...
- linux建立一个快捷方式,连接到另一个目录
sudo ln -s 源目录 目标快捷方式比如你要在/etc下面建立一个叫LXBC553的快捷方式,指向/home/LXBC,那就是sudo ln -s /home/LXBC /etc/LXBC553
- Windows下用Codeblocks建立一个最简单的DLL动态链接库
转自:http://blog.csdn.net/wangwei_cq/article/details/8187576 来源:http://hi.baidu.com/hellosim/item/9ae4 ...
- 【转】如何建立一个样式新颖的CSS3搜索框
在线演示 搜索框大概是web开发中最常用的UI元素之一,我想基本没有必要去介绍如何使用它.无论是网站还是web应用,都会为了增强用户体验而添加它,那么你是不是也想过设计一个别致的搜索框? 在今天的文章 ...
- 如何建立一个完整的游戏AI
http://blog.friskit.me/2012/04/how-to-build-a-perfect-game-ai/ 人工智能(Artificial Intelligence)在游戏中使用已经 ...
- OSG入门即osgEarth建立一个地球的详细步骤
OSG入门即osgEarth建立一个地球的详细步骤 转:http://blog.csdn.net/xiaol_deng/article/details/9246291 最近在学习有关osg的知识,刚开 ...
- time模块目录下自己建立一个名为log的文件夹
使用python调用ping命令,然后在日志中记录ping的结果,用来监测网络连通情况. 代码: [python]from time import *from subprocess import *w ...
- 如何快速建立一个测试资源Web服务器及异步获取资源(Unity3D)
背景 1.最近看了几位专栏作家的文章,几篇提到了资源通过网络的动态获取.如何建立一个快速的测试环境,不免是一个问题,也就最简单的就是假设http服务器了,微软系的当然首选的IIS了,别的也能用阿帕奇或 ...
- 2.每人自己建立一个HelloWorld项目,练习使用git的add/commit/push/pull/fetch/clone等基本命令。比较项目的新旧版本的差别。答题人:张立鹏
第1步:创建SSH Key.在用户主目录下,看看有没有.ssh目录,如果有,再看看这个目录下有没有id_rsa和id_rsa.pub这两个文件,如果已经有了,可直接跳到下一步.如果没有,打开Shell ...
随机推荐
- 基于TensorFlow的车牌号识别系统
简介 过去几周我一直在涉足深度学习领域,尤其是卷积神经网络模型.最近,谷歌围绕街景多位数字识别技术发布了一篇不错的paper.该文章描述了一个用于提取街景门牌号的单个端到端神经网络系统.然后,作者阐述 ...
- Effective Java中文版
译者序 序 前言 第一章 引言 第二章 创建和销毁对象 第1条:考虑用静态工厂方法代替构造函数 第2条:使用私有构造函数强化singleton属性 第3条:通过私有构造函数强化不可实例化属性 第4条: ...
- 4.用Redis Desktop Manager连接Redis(Windows)
相比连接CentOS的Redis,在Windows中的操作简单得让人感动. 所以这里我们使用的服务器系统是Windows Server 2016 R2. 而Windows版本的Redis官方网站并没有 ...
- OpenGL第23-26小结
到后面代码相对而言比较复杂了,因为没有系统的看红宝书(就跟字典一样,兴趣缺缺),很多操作的步骤比较迷糊. 23讲讲解了如何将环境纹理贴在球体.圆柱体等非矩形物体表面,从而达到一个反射周围景色的效果(恩 ...
- 9-4前端vue面试的问题
就没有什么顺序了,肖师傅的一些提问: 1- 配置文件中proxyTable的作用 2-@import '~styles/mixins.styl' ~的作用 3-vue模拟的本地中访问地址的url带有 ...
- PHP 之simple_html_dom实现网页数据采集
<?php set_time_limit(0); include './simple_html_dom.php'; $url = 'https://price.pcauto.com.cn/pri ...
- dotfuscator 如何设置
- php连接数据库的两种方式
一.mysqli方式连接数据库 $mysql_conf = array( 'host' => 'localhost:3306', 'db' => 'ssql', 'db_user' =&g ...
- 从 UI 交互角度说语音识别产品
语言是人类进化的主要特征,而人工智能拥有了说话的能力也是科技进步的一个特征.在很多科幻的电影里面,我们可以看到人工智能的身影.在电影 her 里面见到的人工智能,真的让人叹为观止,他可以随意的和你聊天 ...
- 机器学习中jupyter lab的安装方法以及使用的命令
安装JupyterLab使用pip安装: pip install jupyterlab# 必须将用户级目录添加 到环境变量才能启动pip install --userbinPATHjupyter la ...