Robofun 機器人論壇

標題: 想請教Arduino對Arduino PWM無線傳輸 [打印本頁]

作者: zxcasd819    時間: 2015-10-26 21: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
本帖最後由 超新手 於 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
回復 2# 超新手


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

不知道會閃到底是什麼原因
作者: 超新手    時間: 2015-10-28 08:35
本帖最後由 超新手 於 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
會閃不算不正常吧?




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