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

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”一致

转载于:https://www.cnblogs.com/jzssuanfa/p/6872658.html

用Arduino+OSC建立一个iPad铁路王国巡视机相关推荐

  1. tensorflow2.0学习经历:建立一个多元函数拟合模型并移植到ESP32(Arduino IDE)

    在做项目的过程中,需要通过神经网络建立一个多元函数的拟合模型,并且移植到ESP32上. 要经行神经网络的移植,tensorflow有针对移动设备的版本tensorflow lite,针对microco ...

  2. 使用XCode建立一个MAC OS X应用

    (1)使用XCode建立一个MAC OS X应用: 第一步:打开XCode,新建一个OSX应用->Cocoa Application 第二步:点击*.xib文件,出现一个窗口,然后从左边拖一个按 ...

  3. Python之 - 使用Scrapy建立一个网站抓取器,网站爬取Scrapy爬虫教程

    Scrapy是一个用于爬行网站以及在数据挖掘.信息处理和历史档案等大量应用范围内抽取结构化数据的应用程序框架,广泛用于工业. 在本文中我们将建立一个从Hacker News爬取数据的爬虫,并将数据按我 ...

  4. 建立山海关北洋铁路官学堂的倡导者——金达

    建立山海关北洋铁路官学堂的倡导者--金达 文/孺子牛 立于北戴河海滨的金达塑像 西南交通大学的前身为1896年创建的山海关北洋铁路官学堂,当年这所铁路学堂的建立得益于时任北洋官铁路局总工程师克劳德·威 ...

  5. 建立一个php 基础类

    在些PHP文件的时候,一般首先都是要先写一下基础类: 主要包括以下几个方面: 1.服务器的链接:包括主机,用户名,密码 2.数据库的选择:要操作哪个数据库 3.字符集的设置:设置什么样的编码 4.查询 ...

  6. 用matlab自己搭建bp神经网络,怎样在matlab里建立一个BP神经网络模型?

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 用以下的数据怎样在matlab里建立一个BP神经网络模型?求高手帮忙!!最好是有详细步骤以及代码 年份 WTI(美元/桶) 2007-1 54.26 20 ...

  7. bulma.css_如何建立一个? 具有Bulma CSS的特斯拉响应页面

    bulma.css by ZAYDEK 由ZAYDEK 0-60 in 1.9s? (0-60 in 1.9s ?) 如何建立一个? 具有Bulma CSS的特斯拉响应页面 (How To Build ...

  8. linux用户在哪个文件夹,LINUX中用命令成功建立一个用户后信息会记录在哪个文件中...

    LINUX中用命令成功建立一个用户后信息会记录在哪个文件中 发布时间:2007-07-28 10:14:57来源:红联作者:MPiops 增加用户帐号后 新建用户的命令十分简单,在命令行下使用 use ...

  9. 建立一个按年龄排序的有序链表,每个结点包括学号、姓名、性别、年龄。建立一个新的结点,通过年龄将此结点插入到链表中去,使之仍然有序

    <程序设计基础实训指导教程-c语言> ISBN 978-7-03-032846-5 p143 7.1.2 上级实训内容 [实训内容12]建立一个按年龄排序的有序链表,每个结点包括学号.姓名 ...

  10. 吴恩达:如何建立一个成功的人工智能创业公司

    # 吴恩达:如何建立一个成功的人工智能创业公司 # 很多初创企业的失败都来自于产品制造,因为他们的产品没人想要.我本身倾向于结果以及客户驱动的商业模式.只有当客户决定给你的产品伸大拇指,还是小拇指的时 ...

最新文章

  1. PAT-乙级-1064 朋友数
  2. java -Math类
  3. rpm安装两个mysql_MySQL通过rpm安装及其单机多实例部署
  4. Pytorch(六) --处理高维特征数据
  5. 分计算iv值_快捷、经济、实用的光伏及IV曲线测试仪PVPM 1500X
  6. OpenGL实用开源代码列表
  7. 爱回收回应下架通报:认真整改 切实落实用户隐私信息保护
  8. imageview获取宽高
  9. 【雷达通信】基于matlab GPS和INS联合导航【含Matlab源码 1814期】
  10. 【IT项目管理】第8章 习题
  11. C语言: gotoxy函数
  12. 基于python+Django+MYSQL实现的图书管理系统
  13. (Matlab实现)CNN卷积神经网络图片分类
  14. android 路由跟踪,手机移动端网络路由跟踪探测方式
  15. 连续型随机变量及其概率密度(习题部分)
  16. 霹雳灯双灯c语言程序,单片机霹雳游侠灯源程序
  17. 蓝桥杯.剪邮票(DFS)
  18. Ubuntu_apt-update_Certificate-verification-failed
  19. 查看linux系统IPV6地址
  20. 【THUSC2017】【LOJ2977】巧克力 斯坦纳树

热门文章

  1. AirPlay 投影到 Mac 看不到选项如何解决?
  2. Astute Graphics for Mac(ai创意插件合集)
  3. 隐藏你不想要的:Bartender 4 for Mac菜单栏应用管理软件
  4. AI+教育落地,百度大脑如何让校园更智能?
  5. 转载一篇好用的ubuntu 16.04安装nvidia显卡驱动文章
  6. canvas学习(四):高级属性
  7. Expression Blend4 中文
  8. Vector, ArrayList, LinkedList分析
  9. C#中的where泛型约束【转】
  10. cisco交换机命令大全(11)