zxcasd819 發表於 2015-10-26 21:05:05

想請教Arduino對Arduino PWM無線傳輸

小弟是Arduino新手,想要做一個遙控的坦克樣子的多功能車。可是目前連動力操作都有問題。
我想要兩個可變電阻分別控制兩邊的馬達。
現在寫出一邊可以動了,不過有個問題就是,他會一直閃爍,馬達雖然是再轉,可是感覺是頻率很快地停一下停一下,接上LED燈看確實就是一直閃。
想請問CODE是哪裡有問題,還想請問如果在加一個可變電阻的話,要怎麼寫

傳送端:

int potpin = 2;
int val = 0;

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

void loop() {

val=analogRead(potpin);
Serial.println(val/4);
Serial.write(val/4);
delay(50);

}


接收端:

int val;
void setup()
{
Serial.begin(9600);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
}

void loop()
{
if(Serial.available()>0){
    val = Serial.read();
    Serial.flush();
   Serial.println();
      val = map(val, 0, 1023, 0, 255);
digitalWrite(5, LOW);
analogWrite(6, val*4);
    }
}

超新手 發表於 2015-10-27 08:20:29

本帖最後由 超新手 於 2015-10-28 08:35 編輯

你把偵錯和控制馬達部份混在一起
拿掉偵錯部份應該就 OK 了吧?我猜的...

傳送端:

int potpin = 2;
int val = 0;

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

void loop() {

val=analogRead(potpin);
Serial.write(val/4);
delay(50);

}


接收端:

int val;
void setup()
{
Serial.begin(9600);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
}

void loop()
{
if(Serial.available()>0){
    val = Serial.read();
    digitalWrite(5, LOW);
    analogWrite(6, val);
    }
}

zxcasd819 發表於 2015-10-27 23:30:53

回復 2# 超新手


   你好~謝謝回復~!
不過我測完這樣還是會閃耶..而且變得沒有PWM 要把 val = map(val, 0, 1023, 0, 255)留著才能

不知道會閃到底是什麼原因 :Q

超新手 發表於 2015-10-28 08:35:06

本帖最後由 超新手 於 2015-10-28 08:39 編輯

對, 接收端要改成以下才對
void loop()
{
if(Serial.available()>0){
    val = Serial.read();
    digitalWrite(5, LOW);
    analogWrite(6, val);
    }
}
那些 MAP是多此一舉
因為analogRead的範圍是從 0~1023
除以 4 後, 變為 0 ~255
剛好符合analogWrite 的範圍, 直接給就好了

你的作法是
analogRead0~1023
除以 4 後, 變為 0 ~255
MAP 變成 0~63
乘以 4 變成 0~255

analogWrite 是 PWM, 不是 DAC
會閃不算不正常吧?
頁: [1]
查看完整版本: 想請教Arduino對Arduino PWM無線傳輸