用Arduino+OSC建立一个iPad铁路王国巡视机
来源:互联网 发布:淘宝新版充值平台 编辑:程序博客网 时间:2024/05/03 16:25
翻译自: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"行
byte myIp[] = { 192, 168, 0, 178 };
//
Specify your arduino IP here and the “destlp” line.
byte myIp[] = { 192, 168, 0, 12 };
//
your IPad Address here<
//
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
此示例面板,包括一个推杆,两个转换按钮,用于出发伺服器运动,文本框区域接收Arduino文字信息。
触发按钮1
它由两个重要参数组成,用于Arduino与servo之间的通信。
1. OSC 名称:/1/toggle1/1/toggle1
与Arduino代码中的getZ_OSCAddress 行一致
2. 取值范围:0到62
触发转换器开关时,这个值指定两个准确伺服器的角度,请适当调整。
触发按钮2
它由两个重要参数组成,用于Arduino与servo之间的通信。
1. OSC 名称:/1/toggle2/1/toggle2
与Arduino代码中的getZ_OSCAddress 行一致
2. 取值范围:0到62
触发转换器开关时,这个值指定两个准确伺服器的角度,请适当调整。
转换按钮1
它由两个重要参数组成,用于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铁路王国巡视机
- osc
- 用iArduino app+以太网插板实现“iPhone,iPad&iPod无线控制Arduino”!
- 用arduino做一个简单的计算器
- 用arduino制作一个简易抢答器
- unity3d内用OSC通信
- 用 CodeRuler 征服中世纪王国
- 用Arduino做一个可视化网络威胁级别指示器!
- 003用LabVIEW和Arduino开发一个温度采集系统
- Arduino 用4位共阴数码管造一个计数器
- arduino间通过蓝牙模块建立通讯
- 用osc进行基于Mer的开发
- 用WCF建立一个聊天室
- 在IPhone/IPad上建立反弹后门
- NIKE用物流缔造“运动商品王国
- Arduino基础入门二:搭建一个完整的Arduino程序
- ARduino - 用Arduino主板调试蓝牙模块
- 世界那么大,看TripAdvisor如何建立邮件营销王国吧!(上篇)
- Sql server 发邮件功能
- mysql用户变量和set语句
- 如何在无穷的数据流随机选择m个数
- 8.多线程学习--使用线程本地变量
- “开源代码”亦享著作权保护
- 用Arduino+OSC建立一个iPad铁路王国巡视机
- salesforce 和微信的集成(一)通过SFDC Site打开微信开发接口
- ibatis mybatis区别1
- 启动auditd时,报错如下,怎么解决?
- 设置在Release模式下调试的方法:
- Error pulling origin: error: Your local changes to the following files would be overwritten by merge
- Delauny三角剖分算法解析及源码
- textfield随键盘动
- windows 无法从该家庭组中删除你的计算机