Robofun 機器人論壇
標題:
碰撞感測器 藍芽
[打印本頁]
作者:
jihhy
時間:
2019-1-13 19:15
標題:
碰撞感測器 藍芽
不好意思 我想請問一下
碰撞感測器 如果接收到碰撞訊號如何傳送給藍芽呢?
void setup()
{
pins_init();
}
void loop()
{
if(isTriggered())
{
turnOnLED();
delay(2000);
}
else turnOffLED();
}
void pins_init()
{
pinMode(LED,OUTPUT);
turnOffLED();
pinMode(COLLISION_SENSOR,INPUT);
}
boolean isTriggered()
{
if(!digitalRead(COLLISION_SENSOR))
{
delay(50);
if(!digitalRead(COLLISION_SENSOR))
return true;//the collision sensor triggers
}
return false;
}
void turnOnLED()
{
digitalWrite(LED,HIGH);//the LED is on
}
void turnOffLED()
{
digitalWrite(LED,LOW);//the LED is off
}
這是程式碼
作者:
超新手
時間:
2019-1-14 09:57
用 UART , 也就是 Serial
在
if(isTriggered()) {
Serial.print("1");
turnOnLED();
delay(2000);
}
把資料傳過去
作者:
jihhy
時間:
2019-1-14 15:16
你好 不好意思
我目前是想把接收到碰撞訊號的資訊傳給藍芽 在 傳送給手機app
也是在if(isTriggered()) {
後面加上Serial.print("1")這樣嗎
作者:
超新手
時間:
2019-1-14 15:21
是
但....當然不是那麼簡單
1. 你的藍牙接那根腳? 要記得先初始化
2. 你的 APP 要怎麼寫? 送 1 給它, APP 就知道了嗎?
.....
作者:
jihhy
時間:
2019-1-14 16:35
本帖最後由 jihhy 於 2019-1-14 16:37 編輯
#include <SoftwareSerial.h>
SoftwareSerial I2CBT(10,11);
int COLLISION_SENSOR = 6
void setup()
{
pins_init();
}
void loop()
{
if(isTriggered())
{
Serial.print("1");
delay(1000);
}
else Serial.print("0");
}
void pins_init()
{
pinMode(COLLISION_SENSOR,INPUT);
}
boolean isTriggered()
{
if(!digitalRead(COLLISION_SENSOR))
{
delay(50);
if(!digitalRead(COLLISION_SENSOR))
return true;//the collision sensor triggers
}
return false;
}
這是後面修改加上藍芽的 然後我會加上 當APP 那邊接收到1 就開始執行動作 這樣
作者:
超新手
時間:
2019-1-14 16:46
本帖最後由 超新手 於 2019-1-14 16:47 編輯
1) 你的藍牙是 I2CBT
所以要改成
I2CBT.print("1"); 和
I2CBT.print("0");
2) 要設藍牙鮑率
所以在 SETUP 中加入
I2CBT.begin(9600);
9600 是我亂寫的, 因為一般藍牙鮑率預設是 9600 bps
請依自己的藍牙鮑率去設
3)
你這樣寫, 沒觸發時, 傳 "0" 的速度(頻率)還蠻快的.......
不算錯.....請確認接收端(app)夠快即可
作者:
jihhy
時間:
2019-1-14 17:04
阿 抱歉 不好意思 後面鮑率跟delay時間忘記加
#include <SoftwareSerial.h>
SoftwareSerial I2CBT(10,11);
int COLLISION_SENSOR = 8;
void setup()
{
pins_init();
}
void loop()
{
if(isTriggered())
{
I2CBT.print("1");
delay(1000);
}
else I2CBT.print("0");
delay(1000);
}
void pins_init()
{
pinMode(COLLISION_SENSOR,INPUT);
I2CBT.begin(9600);
}
boolean isTriggered()
{
if(!digitalRead(COLLISION_SENSOR))
{
delay(50);
if(!digitalRead(COLLISION_SENSOR))
return true;//the collision sensor triggers
}
return false;
}
所以大概是這個樣子嗎 謝謝你的回答
作者:
超新手
時間:
2019-1-14 17:39
1) 這樣改變成
送 "1" 的間隔時間約 2 秒
送 "0" 的間隔時間約 1 秒
這是你所預期的速度嗎?
2) 不確定你是用什麼碰撞感測器
等 1 ~ 2 秒才去檢查一次....
你確定你不會錯過碰撞訊號嗎?
當然...如果這個感測器的訊號會自己保持一段時間, 就沒問題
作者:
jihhy
時間:
2019-1-14 19:26
不好意思 我是使用這款
如果我Delay調成50的話 這樣傳送間隔會比較好嗎
作者:
超新手
時間:
2019-1-15 08:43
看起來是微動開關
壓住就會一直保持
要怎麼做比較好, 應該是看你的應用吧?
反正只要和你預期不同,
改一下數字就可以
作者:
jihhy
時間:
2019-1-15 19:47
好的 謝謝你
我會再根據我的應用來調整的
歡迎光臨 Robofun 機器人論壇 (https://robofun.net/forum/)
Powered by Discuz! X3.2