Robofun 機器人論壇

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

xbee小車問題

[複製鏈接]
跳轉到指定樓層
1#
發表於 2012-5-7 16:35:12 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
本帖最後由 a125125460 於 2012-5-7 16:41 編輯

小弟正在做xbee控制小車前進後退(可變速)材料用xbee(s1)x2
        arduino duemilanove x2
        6v 馬達 x1
        l298n x1
        (1k電阻)遙控x1        9v電池x1
以下是我的程式碼:
發送端:
int potPin1=3;

void setup()
{
Serial.begin(9600);
}
void loop()
{
int sensorValue1 = analogRead(potPin1);//讀取可變電阻值//


Serial.print(sensorValue1);

delay(200);
}


接收端:

#include <stdlib.h>
int EN = 6 ;
int IN1 =5 ;
int IN2 = 7 ;
int i =0;
int sensor;
char sensorValue[4];
int n;
void setup()
{
Serial.begin(9600);
  pinMode(IN1,OUTPUT);
  pinMode(IN2,OUTPUT);
n=0;
sensor = 0;
}
void loop()
{
if (Serial.available() > 0) {
for(i=0;i<4;i++)
  {
sensorValue = Serial.read ();//將接受到的可變電阻值放到 sensorValue(我認為*)//
  }
  sensor = atoi(sensorValue);
  sensor = sensor /4;
if (sensor>128){
n=map(sensor,129,255,0,255);
digitalWrite(IN1,HIGH);
digitalWrite(IN2,LOW);
analogWrite(EN, n);
}
else if(sensor<128)
{
n = map(sensor,127,0,0,255);
digitalWrite(IN1,LOW);
digitalWrite(IN2,HIGH);
analogWrite(EN, n);
}
else
  n = 0;
  Serial.println(n);
  delay(200);
}
}


基本上我認為沒問題,
可是在沒遙控馬達時,
接收端收到這樣的訊號
0
0
0
0
230
2527
0
0
0

0
0
0
0
0
230
2527
0
0
0
以至於在沒動作時車子會自己跑....
我不確定問題出在哪裡..請問大大
230
2527
這些是怎麼跑出來的...
(我已經單獨看過發送端...都沒問題....會依照我的遙控改變數據)
難道是雜訊嗎?
2#
發表於 2012-5-8 04:01:11 | 只看該作者
回復 1# a125125460

這裡有問題
    for(i=0;i<4;i++)
  {
sensorValue = Serial.read ();//將接受到的可變電阻值放到 sensorValue(我認為*)//
  }
should be ----->sensorValue = Serial.read ();//

換以下的程式試試:
發送端:
int potPin1=3;
int sv1,sensorValue1;
void setup()
{
Serial.begin(9600);
}
void loop()
{
sensorValue1 = analogRead(potPin1);//讀取可變電阻值//
sv1 = map(sensorValue1, 0, 1023, 0, 255);
Serial.println(sv1, BYTE);
delay(200);
}


接收端:
#include <stdlib.h>
int EN = 6 ;
int IN1 =5 ;
int IN2 = 7 ;
int i =0;
int sensor;
byte sensorValue;
int n;
void setup()
{
Serial.begin(9600);
  pinMode(IN1,OUTPUT);
  pinMode(IN2,OUTPUT);
n=0;
sensor = 0;
}
void loop()
{
if (Serial.available() > 0) {
sensorValue = Serial.read ();//將接受到的可變電阻值放到 sensorValue(我認為*)//

if (int(sensorValue) > 130){
n=map(sensor,129,255,0,255);
digitalWrite(IN1,HIGH);
digitalWrite(IN2,LOW);
analogWrite(EN, n);
}
else if( int(sensorValue) <126)
{
n = map(sensor,127,0,0,255);
digitalWrite(IN1,LOW);
digitalWrite(IN2,HIGH);
analogWrite(EN, n);
}
else
{
  n = 0;
digitalWrite(IN1,LOW);
digitalWrite(IN2,LOW);
}
  Serial.println(n);
  delay(200);
}
}
3#
發表於 2012-5-8 04:02:50 | 只看該作者
should be ----->sensorValue + [ + i + ]= Serial.read ();//
4#
 樓主| 發表於 2012-5-8 10:16:05 | 只看該作者
本帖最後由 a125125460 於 2012-5-8 16:48 編輯

結果可以了....我自己有在做些小變動非常感謝你.....
不過還是搞不懂為啥我寫的程式會跑出特殊的值
還有....sensorValue + [ + i + ]= Serial.read ();/
這要放哪...如果可以的話..想請教這行是啥意思?
看不太懂..
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

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

GMT+8, 2025-1-31 21:49 , Processed in 0.309788 second(s), 7 queries , Apc On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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