2018年2月21日 星期三

Arduino (22) 主、從端HC-05藍芽互相連通+PS類比搖桿+雙軸伺服馬達SG-90。


沒想到弄好一組對收藍芽後就可以變出很多種配置,

這次就來玩,主-PS搖桿,從-兩顆伺服馬達。

模組就之前介紹過了,這邊不多贅述。



至於跟(21)篇的主要差異在於這篇是傳遞類比訊號,而(21)篇是傳遞數位訊號。





上圖是Master配置。


上圖是Slave 配置。





成果感覺還行。

底座沒有固定,所以倒了,不管。


程式如下 :

Master--

#include <SoftwareSerial.h>
#include<Servo.h > 
SoftwareSerial BT(8, 9);
int valX, posX;
int valY, posY;
const byte pinX = A0;
const byte pinY = A1;

void setup() {
  Serial.begin(9600);
  Serial.println("BT is ready!");
  BT.begin(38400);
}

void loop() {
  valX = analogRead(pinX);
  valY = analogRead(pinY);
  posX = map(valX, 0, 1023, 0, 179);
  posY = map(valY, 0, 1023, 0, 179);

  BT.write(posX);
  BT.write(posY);
//從這裡將類比訊號傳到藍芽。

  delay(100);
}



Slave--
#include <SoftwareSerial.h>
#include<Servo.h > 
SoftwareSerial BT(8, 9);
Servo servo1;
Servo servo2;
int val1,val2;
void setup() {
  servo1.attach(3);
  servo2.attach(4);
  Serial.begin(9600);
  Serial.println("BT is ready!");
  BT.begin(38400);
}
void loop() {
  if (BT.available()>0) {
    val1 = BT.read(); 
    servo1.write(val1);
    delay(15);
  }
//接收類比訊號一,啟動一號馬達。

  if (BT.available()>0) {
    val2 = BT.read(); 
    servo2.write(val2);
    delay(15);
//接收類比訊號二,啟動二號馬達。
}
delay(15);
}


其實馬達還是有點抖動,delay這邊還可以再多試一下。





3 則留言:

  1. 你好,關於在Slave那塊,我要怎麼知道VAL1和VAL2分別代表X軸或Y軸?
    總感覺是不是缺了甚麼

    回覆刪除
  2. 哈囉 不用特地分開定義喔

    回覆刪除
  3. 你好! 請問方便借我參考您的電路圖嗎

    回覆刪除

8051 (6) 紅外線避障模組控制LED七段顯示器。

這篇要做的Project就是感測器測到訊號時,LED七段顯示器會開始計算偵測次數, 到第5次時會讓紅色LED燈發光。 程式如下: #include <reg52.h> unsigned char seg[5]={0xf9,...