Robofun 機器人論壇

標題: arduino 連接 max5.0 的問題 [打印本頁]

作者: frty5566    時間: 2012-10-16 21:19
標題: arduino 連接 max5.0 的問題
我想使用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 那方面
作者: coopermaa    時間: 2012-10-17 13:10
編譯失敗應該是 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 新舊版就都可以相容了。
作者: frty5566    時間: 2012-10-18 10:12
本帖最後由 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的圖

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


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

arduino的問題,
你必須使用 new SoftwareSerial library,
順接使用 Amarino/MeetAndroid library,




歡迎光臨 Robofun 機器人論壇 (https://robofun.net/forum/) Powered by Discuz! X3.2