翻译自: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

v=spidtmUTUuo" rel="nofollow" style="color:rgb(33,117,155); font-family:inherit; font-size:undefined; line-height:inherit; margin:0px; padding:0px; border:0px; font-style:inherit; font-variant:inherit; font-weight:inherit; vertical-align:baseline; text-decoration:none">http://www.youtube.com/watch?v=spidtmUTUuo

2. 软件设置

Arduino 代码

改动IP地址

给Arduino和你的iOS/Android设备改动IP地址,以配合你的设置。

比如:iOS上的192.168.0.12,然后搜索"mylp"行

1
byte
myIp[]  = { 192, 168, 0, 178 }; 
// Specify
your arduino  IP here and the “destlp” line.

1
byte
myIp[]  = { 192, 168, 0, 12 }; 
// your
IPad Address here<
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
from iOSC http:
//recotana.com/iphone/iosc/en/index.html
and apply to arduino pins via OSC .
// Credits
to Jerome Dupraz & Retocama
// Colorsound
011
// you
can download arduino z-osc library from here https:
//github.com/djiamnot/Z_OSC
// you
can download arduino code and vvvv patch from here: http:
//vvvv.org/contribution/arduinoosc

/*

This
is a sample code 
for controlling
servo via TouchOSC on

*/

#include
#include
#include
#include

byte
myMac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte
myIp[]  = { 192, 168, 0, 178 }; 
// Specify
your arduino IP
int 
serverPort  = 8000; 
// and
listening port as well

byte
destIp[] =  { 192, 168, 0, 12 }; 
// Talk
back with your iPad, not critical
int 
destPort = 9000;

float
val;
// delcare
a variable 
for reading
values

// create
servo object to control a servo, remember to attach them 
in setup()
Servo
myservo1;
Servo
myservo2;
Servo
myservo3;

Z_OSCClient
client;
Z_OSCServer
server;
Z_OSCMessage
*rcvMes;
Z_OSCMessage
message;

void
setup(){
 myservo1.attach(19); // attaches
the servo on pin 19 to the servo object
 myservo2.attach(20); // attaches
the servo on pin 20 to the servo object
 myservo3.attach(21); // attaches
the servo on pin 21 to the servo object
 Serial.begin(19200);
 Ethernet.begin(myMac
,myIp);
 server.sockOpen(serverPort);
}

void
loop(){
 if(server.available()){
  message.setAddress(destIp,destPort);
  rcvMes=server.getMessage();

     // myservo1
     if(
!strcmp( rcvMes->getZ_OSCAddress() ,  
"/1/toggle1" )
)
     {
      val
= rcvMes->getFloat(0);
      myservo1.write(val);
      if (
val > 0 ) {
          message.setZ_OSCMessage("/1/toggle1_msg" ,"s" "Stopping
at Tsuen Wan"
 );
          client.send(&message);
      else {
          message.setZ_OSCMessage("/1/toggle1_msg" ,"s" "Tsuen
Wan Station"
 );
          client.send(&message);
      }

     }

      // myservo2
     if(
!strcmp( rcvMes->getZ_OSCAddress() ,  
"/1/toggle2" )
)
     {
      val
= rcvMes->getFloat(0);
      myservo2.write(val);

      if (
val > 0 ) {
          message.setZ_OSCMessage("/1/toggle2_msg" ,"s" "Stopping
at Lai King"
 );
          client.send(&message);
      else {
          message.setZ_OSCMessage("/1/toggle2_msg" ,"s" "Lai
King Station"
 );
          client.send(&message);
      }

     }

     // myservo3
     if(
!strcmp( rcvMes->getZ_OSCAddress() ,  
"/1/fader1" )
)
     {
      val
= rcvMes->getFloat(0);
      if (
val == 20 ) {
              myservo3.write(0);
              message.setZ_OSCMessage("/1/fader1_msg" ,"s" "Bypass" );
              client.send(&message);
      else
      if (
val == 150 ) {
              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铁路王国巡视机的更多相关文章

  1. [转]使用Scrapy建立一个网站抓取器

    英文原文:Build a Website Crawler based upon Scrapy 标签: Scrapy Python 209人收藏此文章, 我要收藏renwofei423 推荐于 11个月 ...

  2. linux建立一个快捷方式,连接到另一个目录

    sudo ln -s 源目录 目标快捷方式比如你要在/etc下面建立一个叫LXBC553的快捷方式,指向/home/LXBC,那就是sudo ln -s /home/LXBC /etc/LXBC553

  3. Windows下用Codeblocks建立一个最简单的DLL动态链接库

    转自:http://blog.csdn.net/wangwei_cq/article/details/8187576 来源:http://hi.baidu.com/hellosim/item/9ae4 ...

  4. 【转】如何建立一个样式新颖的CSS3搜索框

    在线演示 搜索框大概是web开发中最常用的UI元素之一,我想基本没有必要去介绍如何使用它.无论是网站还是web应用,都会为了增强用户体验而添加它,那么你是不是也想过设计一个别致的搜索框? 在今天的文章 ...

  5. 如何建立一个完整的游戏AI

    http://blog.friskit.me/2012/04/how-to-build-a-perfect-game-ai/ 人工智能(Artificial Intelligence)在游戏中使用已经 ...

  6. OSG入门即osgEarth建立一个地球的详细步骤

    OSG入门即osgEarth建立一个地球的详细步骤 转:http://blog.csdn.net/xiaol_deng/article/details/9246291 最近在学习有关osg的知识,刚开 ...

  7. time模块目录下自己建立一个名为log的文件夹

    使用python调用ping命令,然后在日志中记录ping的结果,用来监测网络连通情况. 代码: [python]from time import *from subprocess import *w ...

  8. 如何快速建立一个测试资源Web服务器及异步获取资源(Unity3D)

    背景 1.最近看了几位专栏作家的文章,几篇提到了资源通过网络的动态获取.如何建立一个快速的测试环境,不免是一个问题,也就最简单的就是假设http服务器了,微软系的当然首选的IIS了,别的也能用阿帕奇或 ...

  9. 2.每人自己建立一个HelloWorld项目,练习使用git的add/commit/push/pull/fetch/clone等基本命令。比较项目的新旧版本的差别。答题人:张立鹏

    第1步:创建SSH Key.在用户主目录下,看看有没有.ssh目录,如果有,再看看这个目录下有没有id_rsa和id_rsa.pub这两个文件,如果已经有了,可直接跳到下一步.如果没有,打开Shell ...

随机推荐

  1. windows下关闭进程树

    关闭进程需要特定权限,如果你程序权限不够也会导致关闭进程失败.关闭进程树,需要遍历给定进程下的所有子进程,这个过程可以用并查集来做. 1.编写获取进程父进程的代码 #define ProcessBas ...

  2. 【PostgreSQL-9.6.3】触发器概述(普通触发器)

    一个触发器声明了当执行一种特定类型的操作时数据库应该自动执行一个特殊的函数.触发器可以被附加到表.视图和外部表.触发器经常用于做完整性约束,或者某种业务规则的约束. 1. 触发器的创建语法如下: CR ...

  3. html5——3D案例(音乐盒子、百度钱包)

    1.音乐盒子:触碰盒子,盖子会打开 2.百度钱包:触碰钱包,钱包,会180度旋转 <!DOCTYPE html> <html lang="en"> < ...

  4. (转)Hibernate的优化方案

    http://blog.csdn.net/yerenyuan_pku/article/details/70768603 HQL优化 使用参数绑定  使用绑定参数的原因是让数据库一次解析SQL,对后续的 ...

  5. C# 后台POST提交方式

    1.第一种方式:用最新框架,但是针对IIS服务器的操作系统有关系,非R2的收不到数据: using (var reqConts = new MultipartFormDataContent()) { ...

  6. P2884 [USACO07MAR]每月的费用Monthly Expense

    题目描述 Farmer John is an astounding accounting wizard and has realized he might run out of money to ru ...

  7. Python编程时.py与.pyc文件的介绍

    Python的程序中,是把原始程序代码放在.py文件里,而Python会在执行.py文件的时候.将.py形式的程序编译成中间式文件(byte-compiled)的.pyc文件,这么做的目的就是为了加快 ...

  8. PAT 1118 Birds in Forest

    Some scientists took pictures of thousands of birds in a forest. Assume that all the birds appear in ...

  9. net core 配置Redis Cache

    参考文章地址:https://dotnetcoretutorials.com/2017/01/06/using-redis-cache-net-core/ 具体步骤: 1   Install-Pack ...

  10. 【IntelliJ IDEA】idea上安装Translation插件后,需要AppKey才能生效的解决方案

    使用idea安装的翻译插件translation,但是使用的时候并不友好 无奈,如果想使用翻译软件并且更方便的话,可以如下: 可以选择将translation进行卸载 清除缓存并进行重启 然后再启动之 ...