Robofun 機器人論壇

 找回密碼
 申請會員
搜索
熱搜: 活動 交友 discuz
查看: 2313|回復: 3

想請教Arduino對Arduino PWM無線傳輸

[複製鏈接]
發表於 2015-10-26 21:05:05 | 顯示全部樓層 |閱讀模式
小弟是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);
    }
}
 樓主| 發表於 2015-10-27 23:30:53 | 顯示全部樓層
回復 2# 超新手


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

不知道會閃到底是什麼原因
發表於 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 的範圍, 直接給就好了

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

analogWrite 是 PWM, 不是 DAC
會閃不算不正常吧?
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

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

GMT+8, 2021-11-28 09:40 , Processed in 0.177637 second(s), 7 queries , Apc On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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