Robofun 機器人論壇

 找回密碼
 申請會員
搜索
熱搜: 活動 交友 discuz
查看: 2866|回復: 3
打印 上一主題 下一主題

arduino 連接 max5.0 的問題

[複製鏈接]
跳轉到指定樓層
1#
發表於 2012-10-16 21:19:25 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
我想使用arduino 連接 max5.0 下載了SimpleMessageSystem 然後想執行
#include <SimpleMessageSystem.h>

void setup()
{
  Serial.begin(57600);
}

void loop()
{
  if(messageBuild() > 0){
    switch (messageGetChar()){
    case 'r':
      readpins();
      break;
    case 'w':
      writepins();
    }
  }
}

void readpins(){
  switch(messageGetChar()){
    case 'd':
    messageSendChar('d');
    for(char i=2;i<14;i++){
      messageSendInt(digitalRead(i));
    }
    messageEnd();
    break;
   
    case 'a':
    messageSendChar('a');
    for(char i=0;i<6;i++){
      messageSendInt(analogRead(i));
    }
    messageEnd();
  }
}

void writepins(){
  int pin;
  int state;
  
  switch(messageGetChar()){
    case 'a':
    pin = messageGetInt();
    state = messageGetInt();
    pinMode(pin, OUTPUT);
    analogWrite(pin, state);
    break;
   
    case 'd':
    pin = messageGetInt();
    state = messageGetInt();
    pinMode(pin, OUTPUT);
    digitalWrite(pin, state);
  }
}
這個範例  但是跑出C:\Users\阿堯\Desktop\arduino-1.0\libraries\SimpleMessageSystem\SimpleMessageSystem.cpp:18:22: error: WProgram.h: No such file or directory
請問釋放的路徑的問題  還是還有東西需要下載嗎

還有想請問 這個程式是如何知道 是要讀東西到max 還是輸出
switch (messageGetChar()) 這個部分要選 case 的地方 如何分辨 r 還是 w
是要自己寫在程式 還是讀的是 max 那方面
2#
發表於 2012-10-17 13:10:42 | 只看該作者
編譯失敗應該是 Arduino IDE 版本跟 SimpleMessageSystem library 不相容的關係
參考一下這個解法:
http://shenshengpo.blogspot.tw/2 ... emessagesystem.html

或者可以把 SimpleMessageSystem.cpp 底下這行

#include <WProgram.h>

改成:

#if ARDUINO >= 100
#include <Arduino.h>
#else
#include <WProgram.h>
#endif

這樣 Arduino IDE 新舊版就都可以相容了。
3#
 樓主| 發表於 2012-10-18 10:12:37 | 只看該作者
本帖最後由 frty5566 於 2012-10-18 11:05 編輯

已經可以相容了  謝謝
那請問一下 我想要把藍芽傳送數據到 max5.0 的話
我是把MultiColorLamp 這個程式 與SimpleMessageSystem 合在一起
然後燈可以反應  但是max5.0 卻沒反應 是max的問題 還是aeduino的問題


#include <SimpleMessageSystem.h>
#include <MeetAndroid.h>


MeetAndroid meetAndroid;
int redLed = 9;   
int greenLed = 10;
int blueLed = 11;


void setup()
{
  Serial.begin(57600);


  meetAndroid.registerFunction(red, 'r');
  meetAndroid.registerFunction(green, 'g');  
  meetAndroid.registerFunction(blue, 'b');


  pinMode(redLed, OUTPUT);
  pinMode(greenLed, OUTPUT);
  pinMode(blueLed, OUTPUT);


  digitalWrite(redLed, HIGH);
  digitalWrite(greenLed, HIGH);
  digitalWrite(blueLed, HIGH);
}


void loop()
{
  meetAndroid.receive();


  if (messageBuild() > 0) {
    switch (messageGetChar()) {
    case 'r':
      readpins();
      break;
    case 'w':
      writepin();
    }
  }
}


void red(byte flag, byte numOfValues)
{
  analogWrite(redLed, meetAndroid.getInt());
}


void green(byte flag, byte numOfValues)
{
  analogWrite(greenLed, meetAndroid.getInt());
}


void blue(byte flag, byte numOfValues)
{
  analogWrite(blueLed, meetAndroid.getInt());
}




void readpins(){
  switch (messageGetChar()) {
    case 'd':
    messageSendChar('d');  
    for (char i=2;i<14;i++) {
      messageSendInt(digitalRead(i));
    }
    messageEnd();
    break;
    case 'a':
    messageSendChar('a');  
    for (char i=0;i<6;i++) {
      messageSendInt(analogRead(i));
    }
    messageEnd();
  }
}


void writepin() {


  int pin;
  int state;


  switch (messageGetChar()) {
    case 'a' :
    pin = messageGetInt();
    state = messageGetInt();
    pinMode(pin, OUTPUT);
    analogWrite(pin, state);
    break;  
    case 'd' :
    pin = messageGetInt();
    state = messageGetInt();  
    pinMode(pin,OUTPUT);
    digitalWrite(pin,state);  
  }
}


這是max5.0的圖
4#
發表於 2012-10-18 22:37:44 | 只看該作者
已經可以相容了  謝謝
那請問一下 我想要把藍芽傳送數據到 max5.0 的話
我是把MultiColorLamp 這個程式  ...
>>>然後燈可以反應  但是max5.0 卻沒反應 是max的問題 還是aeduino的問題??


frty5566 發表於 2012-10-18 10:12

arduino的問題,
你必須使用 new SoftwareSerial library,
順接使用 Amarino/MeetAndroid library,
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

小黑屋|手機版|Archiver|機器人論壇 from 2005.07

GMT+8, 2024-6-9 19:17 , Processed in 0.100100 second(s), 10 queries , Apc On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回復 返回頂部 返回列表