zoukankan      html  css  js  c++  java
  • 用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

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

  • 相关阅读:
    html5shiv.js-让IE浏览器支持HTML5标准
    CSS2系列:外边距合并问题(margincollapse)
    HTML5:离线存储(缓存机制)-IndexDB
    CSS3系列:流式(弹性)布局(flex布局)
    Sublime Text 3 常用插件以及安装方法(转)
    后台配置参数写在文件上
    20160414
    2016413
    20160412
    网页设计素材网站
  • 原文地址:https://www.cnblogs.com/jzssuanfa/p/6872658.html
Copyright © 2011-2022 走看看