Android (4-3)手機透過藍牙接收 Arduino 類比腳位狀態

本篇將教導大家如何使用手機讀取Arduino上類比腳位的數值,在此我們接上的是旋鈕式可變電阻。實際上當然不只可變電阻,所有的類比式感測器都可以這樣來使用!

範例程式請點我下載(App Inventor中文學習網檔案庫)  App Inventor 2檔名:ReceiveDatafromArduino.aia

準備以下材料:

1 Android系統智慧型手機

2.Arduino相容開發板 (本文使用 Arduino MEGA2560)

3.藍牙收發接收器(本系列使用JY-MCU04 或 JY-MCU05),

4.麵包板

5.1個 1K歐姆可變電阻

先由下圖將藍牙及可變電阻接上Arduino


STEP1:App Inventor 編寫藍牙訊息接收程式

畫面元件很簡單,點選 BT List 之後,會顯示藍牙配對裝置清單,點選您已經配對好的藍牙裝置之後,Arduino的類比腳位資訊就會顯示在畫面中央的 TextBox 上。

這邊要注意的地方是要將Clock1的TimerInterval更改成10,也就是每 0.01秒更新一次。這麼一來才比較不會發生漏抓Arduino 發出來的訊息


程式說明:

本段程式重點在於手機在讀取Arduino訊號時,並不是直接向Arduino取得資料,而是採用間接的手法。先讓手機丟出一個訊號(本範例為發送49)。Arduino在等待接收到此訊號後,才會將感應器的數值以封包的形式傳送給手機。在第二個if後就是手機解讀Arduino所傳送過來的封包,並顯示到手機上。


在 Clock.Timer事件中,會先送出一個49的數字作為確認碼,Arduino 接收到這筆資料之後就知道要開始收資料了。Arduino 端是以 8 bit (一位元組)為單位來包封包,因此這邊也要這樣來組合。就能順利將數字還原了。


STEP2:Arduino 程式碼

#include <SoftwareSerial.h>
#include <Wire.h>
SoftwareSerial I2CBT(10,11);
byte serialA;
void setup(){
    //define pin modes for tx,rx pin
    pinMode(10,INPUT);
    pinMode(11,OUTPUT);
    Serial.begin(9600);
    I2CBT.begin(38400);  //與藍牙發射器的鮑率為 38400
}

void loop (){

   byte Data[2];//此變數為封包 
   byte cmmd[20];
   int insize;
   int i=analogRead(A0);//讀取感應器值
   serialA=I2CBT.read();//接收 Android 藍牙資料

   //   將感應器數值包成封包,由於類比腳位的值為0~1023,加上’a',因此使用了三個Byte來傳送。

   //   i 除以 256 以及對 256 取餘數就是以位元組(8 bits)為單位來拆封包噢! 

   Data[0]=’a';   //確認碼
   Data[1]=i/256;
   Data[2]=i%256;

   Serial.println(i);//顯示感應器數值

   if (serialA == 49){//判斷從手機接收到的訊號是否為"49″

   /* 傳送封包 */

   for(int j=0;j<3;j++)
   I2CBT.write(Data[j]);  

   serialA=0;

   }
   delay(100);
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你可以按照以下步骤将DX-BT24蓝模块连接到Arduino Uno和机: 1. 首先,将DX-BT24蓝模块插入到Arduino Uno的数字引脚上。将模块的VCC引脚连接到Arduino的5V引脚,GND引脚连接到GND引脚,TX引脚连接到Arduino的RX引脚,RX引脚连接到Arduino的TX引脚。 2. 打开Arduino IDE,在工具菜单中选择正确的开发板(Arduino Uno)和端口。 3. 下载并安装Arduino库(例如SoftwareSerial库),以便在Arduino代码中使用。 4. 在Arduino IDE中编写代码,使用软串口库创建一个新的串口对象。例如,可以使用以下代码: ```cpp #include <SoftwareSerial.h> SoftwareSerial bluetoothSerial(10, 11); // RX, TX void setup() { Serial.begin(9600); bluetoothSerial.begin(9600); } void loop() { if (bluetoothSerial.available()) { char data = bluetoothSerial.read(); Serial.print(data); // 在这里处理接收到的数据 } if (Serial.available()) { char data = Serial.read(); bluetoothSerial.print(data); // 在这里处理要发送的数据 } } ``` 5. 编写代码后,将Arduino Uno连接到计算机,并将代码上传到Arduino Uno。 6. 确保机上已经打开了蓝,并搜索可用的设备。 7. 在机上找到DX-BT24蓝模块,并尝试与之配对。 8. 一旦配对成功,可以使用蓝串口应用程序(如Arduino Bluetooth Controller)在机上与Arduino进行通信。 请注意,以上步骤仅提供了一个基本的连接和通信示例。你可以根据自己的需求和蓝模块的规格进行调整和修改。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值