Robofun 機器人論壇

標題: xbee小車問題 [打印本頁]

作者: a125125460    時間: 2012-5-7 16:35
標題: xbee小車問題
本帖最後由 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
這些是怎麼跑出來的...
(我已經單獨看過發送端...都沒問題....會依照我的遙控改變數據)
難道是雜訊嗎?

作者: vegewell    時間: 2012-5-8 04:01
回復 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);
}
}

作者: vegewell    時間: 2012-5-8 04:02
should be ----->sensorValue + [ + i + ]= Serial.read ();//
作者: a125125460    時間: 2012-5-8 10:16
本帖最後由 a125125460 於 2012-5-8 16:48 編輯

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




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