用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/*Thisforcontrolling*/#include#include#include#includebytebyte//Specifyint //andbyte//Talkint float//delcareforreading//createinsetup()ServoServoServoZ_OSCClientZ_OSCServerZ_OSCMessageZ_OSCMessagevoid 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 ... 
随机推荐
- iOS图片瘦身总结
			前言 最近在公司写了个小程序来为iOS应用中的图片瘦身,进而减小APP大小,减少用户下载时的流量. 瘦身是在一个专门为图片瘦身的网站进行的. 地址:https://tinypng.com 这个网站提供 ... 
- 关于用友 U8-UAP二开的一些事
			这是关于一个刚刚接触用友U8的二次开发的一些小心得. 首先就是用友二开的论坛,http://u8dev.yonyou.com/ 当然这个论坛做得不怎么样,提出了好几个问题,都没有回复的. 以下是关于二 ... 
- MySQL实现当前数据表的所有时间都增加或减少指定的时间间隔
			DATE_ADD() 函数向日期添加指定的时间间隔. 当前表所有数据都往后增加一天时间: UPDATE ACT_BlockNum SET CreateTime = DATE_ADD(CreateTim ... 
- TensorFlow:Windows下使用TensorFlow-Python版本
			原文链接:Win10X64下安装使用TensorFlow 安装TensorFlow 由于Google那帮人已经把 TensorFlow 打成了一个 pip 安装包,所以现在可以用正常安装包的方式安装 ... 
- 【sqli-labs】 less45 POST -Error based -String -Stacked Blind(POST型基于盲注的堆叠字符型注入)
			和Less44一个名字 测试一下,发现是')闭合的 login_user=&login_password=1') or sleep(0.1)# 那就是没有错误显示的less42 login_u ... 
- Review:Microbiota, metagenome, microbiome傻傻分不清
			Microbiota 微生物群 微生物群是指研究动植物体上共生或病理的微生物生态群体.微生物群包括细菌.古菌.原生动物.真菌和病毒.研究表明其在宿主的免疫.代谢和激素等方面非常重要.近义词Micr ... 
- SpringMVC参数绑定、Post乱码解决方法
			从客户端请求key/value数据,经过参数绑定,将key/value数据绑定到controller方法的形参上. springmvc中,接收页面提交的数据是通过方法形参来接收.而不是在control ... 
- python开发 面试题
			一.简述列表与元组的区别 答: 元组tuple与列表List相同点 元组tuple与列表List都是序列类型的容器对象,可以存放任何类型的数据.支持切片.迭代等操作. 元组tuple与列表List区别 ... 
- 前端精选文摘:css之GFC 神奇背后的原理(整理)
			CSS3 Grid Layout Web页面的布局,我们常见的主要有“浮动布局(float)”.“定位布局(position)”.“行内块布局(inline-block)”.“CSS3的多栏布局(Co ... 
- JavaFX桌面应用开发-鼠标事件和键盘事件
			鼠标相关事件的操作初始代码 package application; import javafx.application.Application;import javafx.event.ActionE ... 
 
			
		
