Robofun 機器人論壇

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

程式結合問題

[複製鏈接]
跳轉到指定樓層
1#
發表於 2017-6-8 16:19:42 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
求各位高手救援,小弟我最近為了專題一直在研究Arduino的程式編寫和結合

程式分別是

結合前:
315Mhz無線收發模組
發射程式:
#include <VirtualWire.h>
const char *a = "a";
const char *b = "b";

void setup()
{
  vw_set_ptt_inverted(true);
  vw_setup(2400);
  vw_set_tx_pin(1);
}

void loop()
{
  delay(1000);
  
  vw_send((uint8_t *)a, strlen(a));
  vw_wait_tx();
  
  delay(1000);
  
  vw_send((uint8_t *)b, strlen(b));
  vw_wait_tx();
}

接收:
#include <VirtualWire.h>
uint8_t buf[VW_MAX_MESSAGE_LEN];
uint8_t buflen = VW_MAX_MESSAGE_LEN;
  
const int LED = 13;
  
void setup()
{
   pinMode(LED, OUTPUT);
   digitalWrite(LED,LOW);
   
   vw_set_ptt_inverted(true);
   vw_setup(2400);
   vw_set_rx_pin(0);
   vw_rx_start();
}

void loop()
{
   if (vw_get_message(buf, &buflen)) {
     switch(buf[0])
     {
       case 'a':
       digitalWrite(LED,HIGH);
       break;
       case 'b':
       digitalWrite(LED,LOW);
       break;
     }
  }
}

和電流感應模組:
void setup() {
  Serial.begin(9600);
}
void loop() {
  float value = analogRead(A0);
Serial.println((((value-511)*5)/1023)/0.115);

  
  if ((((value-511)*5)/1023)/0.115>2.1)
    Serial.println(String("")+"a");
  else
    Serial.println((((value-511)*5)/1023)/0.115);
   
delay(500);
}

結合後:
發射:
#include <VirtualWire.h>
const char *a = "a";
const char *b = "b";
void setup() {
  Serial.begin(9600);
  vw_set_ptt_inverted(true);
  Serial.begin(9600);
  vw_setup(2400);
  vw_set_tx_pin(1);
  
}
void loop() {
  float value = analogRead(A0);
Serial.println((((value-511)*5)/1023)/0.115);

  
  if ((((value-511)*5)/1023)/0.115>2.1)
   {
   digitalWrite(13,true);
   vw_send((uint8_t *)a, strlen(a));
   vw_wait_tx();
   digitalWrite(13,false);
   delay(1000);
   }
  else
    vw_send((uint8_t *)b, strlen(b));
    Serial.println((((value-511)*5)/1023)/0.115);
   
delay(500);
}

接收:
  #include <VirtualWire.h>
  uint8_t buf[VW_MAX_MESSAGE_LEN];
  uint8_t buflen = VW_MAX_MESSAGE_LEN;
  
  const int LED = 13;
  
  void setup()
  {
    Serial.begin(9600);
    pinMode(LED, OUTPUT);
    digitalWrite(LED,LOW);
   
    vw_set_ptt_inverted(true);
    vw_setup(2400);
    vw_set_rx_pin(0);
    vw_rx_start();
  }
  
  void loop()
  {

    if (vw_get_message(buf, &buflen)) {
      switch(buf[0])
      {
        case 'a':
        digitalWrite(LED,HIGH);
        break;
        case 'b':
        digitalWrite(LED,LOW);
        break;
      }
    }
  }

結合前的程式分別驗證的時侯都OK,但是結合後315Mhz模組卻沒有反應,請各位高手幫小弟看一下問題在哪裡,拜託了
2#
發表於 2017-6-8 17:02:34 | 只看該作者
本帖最後由 超新手 於 2017-6-8 17:05 編輯

應該是Serial的TX 和RX衝到了315Mhz模組的 TX 和 RX
1) 把  Serial 相關的程式先拿掉, 如
        Serial.begin
        Serial.println
2) 結合時, 少一行,  vw_wait_tx();  
else {
    vw_send((uint8_t *)b, strlen(b));
    vw_wait_tx(); // 少了這行
}

比較好的解決方法就是,把315Mhz模組的 TX 和 RX
改接到其他腳, 當然程式也要一併改
3#
 樓主| 發表於 2017-6-15 13:51:51 | 只看該作者
超新手 發表於 2017-6-8 17:02
應該是Serial的TX 和RX衝到了315Mhz模組的 TX 和 RX
1) 把  Serial 相關的程式先拿掉, 如
        Serial.begin

感謝高手的救援

我會去試試看的
4#
 樓主| 發表於 2017-9-29 14:55:38 | 只看該作者
超新手 發表於 2017-6-8 17:02
應該是Serial的TX 和RX衝到了315Mhz模組的 TX 和 RX
1) 把  Serial 相關的程式先拿掉, 如
        Serial.begin

抱歉過了那麼久又回來問大大問題,
小弟我這次的問題有兩個:
1.請問如果把315模組的TX跟RX改成其他腳後,程式要怎麼改呢?

2.在315模組運作的時候,有辦法同時擷取電流模組的電流到Arduino的監控視窗嗎?
5#
發表於 2017-9-29 15:00:13 | 只看該作者
1)
vw_set_rx_pin(?)
vw_set_tx_pin(?)
2. 可以
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

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

GMT+8, 2024-11-21 20:21 , Processed in 0.227759 second(s), 7 queries , Apc On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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