1. 程式人生 > >Arduino與藍芽的串列埠通訊

Arduino與藍芽的串列埠通訊

1:對於Arduino,print()和println()函式都是用ASCII字元的方式傳送資料。
無論是int、float還是string,都自動轉換成ASCII碼傳送。
其中println()函式在傳送的資料後面加了回車和換行符(”\r”和”\n”)。換行符正好可以作為結束符來讓手機端識別。
2:藍芽串列埠是非同步傳輸方式,每次Serial.read()只讀一個位元組,在一個loop()迴圈中可能收不全一條資料資訊,必須要有一個全域性變數來收集接收到的字元。如果要通訊可靠,使用結束符來確定收到了一條完整的資訊,是非常必要的。手機端也是一樣。
3:用的Serial.parseInt()函式,作用是在收到的字元流中,找到數字字元,並累積在一起,直到收到一個非數字字元時,將前面收到的數字字元轉換成一個整數。如果要傳送多個數值,中間用逗號等分隔符隔開即可。比如三個數值,”12,325,993“,後面加一個自定義的結束符,作為字串發給Arduino。
(例程中用字元”X”作為結束符。)這樣接收資料完整而可靠。接收float可以用Serial.parseFloat()函式,用法一樣。
4:/* 本例程演示從手機藍芽串列埠接收指令,點亮或熄滅11腳的LED,或者調整亮度。
* 接收指令格式:“101X”點亮,“102X”熄滅,”000X”調整亮度。(000為0-100的整數,表示亮度值,X是結束符。)
* 串列埠是非同步接收的,用parseInt()查詢第一個有效整數,檢測到結束符後開始處理。
* 接收資料顯示在1602LCD屏上。
* 點亮或熄滅LED後,將收到資料回傳給手機。用pringln()函式,資料後面加了”\r”和”\n”兩個字元,可以用作結束符。
* 串列埠傳送的是ASCII字元,資料格式可以自動轉換。
*/

/* 本例程演示從手機藍芽串列埠接收指令,點亮或熄滅11腳的LED,或者調整亮度。
 * 接收指令格式:“101X”點亮,“102X"熄滅,”000X"調整亮度。(000為0-100的整數,表示亮度值,X是結束符。)
 * 串列埠是非同步接收的,用parseInt()查詢第一個有效整數,檢測到結束符後開始處理。
 * 接收資料顯示在1602LCD屏上。
 * 點亮或熄滅LED後,將收到資料回傳給手機。用pringln()函式,資料後面加了"\r"和"\n"兩個字元,可以用作結束符。
 * 串列埠傳送的是ASCII字元,資料格式可以自動轉換。
 */

#include <Wire.h>                  // 包含LCD庫。
#include <LiquidCrystal_I2C.h> LiquidCrystal_I2C lcd(0x27,16,2); // 初始化LCD物件,地址為0x27,每行16個字元,共兩行。 int p; // 定義整數型全域性變數,儲存接收的資料。 void setup() { lcd.init(); // 初始化LCD。 lcd.backlight(); // 開啟LCD背光。 Serial.begin(9600); // 開啟串列埠(藍芽)
pinMode(11,OUTPUT); // 定義11腳為輸出。(數字或PWM) } void loop() { while (Serial.available() > 0) { // 串列埠收到字元數大於零。 p = Serial.parseInt(); // 在串列埠資料流中查詢一個有效整數。 if (Serial.read() == 'X') { // 收到結束符後開始處理資料。 lcd.clear(); // LCD清屏。 lcd.print(p); // LCD顯示收到的資料(整數)。 switch (p) { // 判斷資料內容。 case 101: digitalWrite(11,HIGH); // 點亮LED。 Serial.println(p); // 回傳資料。 break; case 102: digitalWrite(11,LOW); // 熄滅LED。 Serial.println(p); // 回傳資料。 break; default: p = map(p,0,100,0,255); // 轉換資料範圍到PWM輸出值。 analogWrite(11,p); // 調整LED亮度。(PWM) } } } }

相關推薦

看呀串列通訊中的16進位制轉化

//16string-byte      public static byte[] HexCommandtoByte(byte[] data) {          if (data == null) {  

ArduinoMATLAB實現串列通訊來畫圖

自己編好Arduino的程式,需要在MATLAB中呼叫串列埠,讀取資料,我們就需要用到MATLAB中的串列埠物件serial。 比如讀取感測器的值來繪圖、處理攝像頭等等。 簡單的讀取感測器的電壓值 Arduino程式 int analogPin = 5;

【常用模組】HC-05串列通訊模組使用詳解(例項:手機控制STM32微控制器)

HC-05藍芽串列埠通訊模組應該是使用最廣泛的一種藍芽模組之一了。為什麼呢?因為HC05模組是一款高效能主從一體藍芽串列埠模組,可以不用知道太多藍芽相關知識就可以很好的上手。說白了,只是個藍芽轉串列埠的裝置,你只要知道串列埠怎麼程式設計使用,就可以了,實現了所謂的透明傳輸。但

Arduino串列通訊

1:對於Arduino,print()和println()函式都是用ASCII字元的方式傳送資料。 無論是int、float還是string,都自動轉換成ASCII碼傳送。 其中println()函式在傳送的資料後面加了回車和換行符(”\r”和”\n”)。換

Android基於串列程式設計實現HC-05通訊

Android基於藍芽串列埠程式設計實現HC-05通訊 最近接了個工程自動化的專案,需求是實時接收從微控制器傳過來的資料,並進行資料分析處理再進行顯示,在查閱大量的相關部落格和自己踩了不少的坑後,想說把自己的一些經驗分享出來給後來人做個參考www 先介紹下藍芽串列埠的定義

串列透傳-從機發送接收(整理)

1、從機通過串列埠傳送資料給主機(Notification:character4) //simpleBLEPeripheral.c //串列埠回撥函式 static void NpiSerialCallback(uint8 port,uint8 event

linux 串列 連線android手機除錯

最近要用到 linux 與 android 藍芽串列埠通訊,整了兩天總算弄通了。 藍芽模組用的是RealTek 8723B 藍芽驅動買模組時會提供的,編譯安裝就OK了。 這裡列一下除錯串列埠的過程。 安裝 bluez (包含許多藍芽管理工具) hciconfig -

wince模擬器PC進行串列通訊設定步驟(附詳細步驟圖解)

在網上一搜,關於wince模擬器與PC進行串列埠通訊的介紹很多,也有人說模擬器不能虛擬串列埠的,也有說必須用串列埠連線線把USB口和串列埠連線起來的,說法可謂種類繁多。結合搜尋到的資訊,我進行多次試驗,最終實現了WINCE模擬器串列埠與PC串列埠工具之間的通訊。現介紹一下步驟

基於Arduino和python的串列通訊和上位機控制

 引言 經常的時候我們要實現兩個程式碼之間的通訊,比如說兩個不同不同人寫的程式碼要對接,例如將python指令控制Arduino控制元件的開關,此處使用串列埠通訊是非常方便的,下面筆者將結合自己踩過的坑來講述下自己的學習經歷。 首先是挑戰杯審報的一個專案,即採用機器學習模型分類資料,結合Ardu

QT筆記(8)——Qt51微控制器串列通訊

工業控制中微控制器與pc機通訊,常常通過串列埠通訊來完成,本次基於RS232通訊來完成的,硬體是普中的STC51微控制器開發板;板子如下圖: 不需要液晶顯示器,自帶的例子這裡就不貼了,主要實驗是Qt進行串列埠連結,傳送資料,微控制器判斷髮送的內容並做出反饋; 微控制器

1 android開發---模組進行通訊

原文地址 http://www.cnblogs.com/wenjiang/p/3200138.html 近半個月來一直在搞android藍芽這方面,主要是專案需要與藍芽模組進行通訊。開頭的進展很順利,但因為藍芽模組不在我這裡,所以只能用手機測試。一開頭就發現手機的藍芽

無線串列模組 HC-06從機-----AT指令以及其他測試報告

一 環境:          1、普中科技HC6800-EM3 v2.2 微控制器開發實驗儀(晶片STC90C516RD+)           2、無線藍芽串列埠透傳模組 HC-06從機      

串列透傳模組:HC-06從機

藍芽模組使用方法也比較簡單,直接串列埠操作,無需額外的庫檔案。 首先還是先看看模組長什麼樣子: 【注意藍芽的工作電壓】這個模組相容3.6-6V電壓,所以我接在5V電壓上使用。 首先是對藍芽模組進行設定,我是用TTL轉介面連線到電腦上,通過AT指令進行設

Android 模擬器串列PC虛擬串列通訊

1、開發環境 (1) Android Studio 3.0.1      (2) JDK 1.8   (3)  1、建立SerialPortNDKText 工程 2、在工程的main目錄下,建立jniLibs資料夾,如:E:\androidcod

android串列連線固定Mac地址,省略搜尋過程的實現

/* 開啟多執行緒實現藍芽連線的耗時操作 */ private class ConnectThread implements Runnable { @Override public void run() { Message message = new Mes

安卓串列例子修改

BluetoothChatService.java的第49行             private static final UUID MY_UUID = UUID.fromString("fa87c0d0-afac-11de-8a39-0800200c9a66");  

PC機FL2440的串列通訊程式設計

#include <stdio.h> /*標準輸入輸出定義*/ #include <stdlib.h> /*標準函式庫定義*/ #include <unistd.h> /*Unix標準函式

Android開發模組進行通訊(基於eclipse)

public class ComminuteActivity extends Activity { private BluetoothReceiver receiver; private BluetoothAdapter bluetoothAdapter; private Lis

樹莓派Arduino串列通訊

一、在樹莓派上安裝Arduino $ sudo apt-get install Arduino 二、樹莓派安裝串列埠除錯程式     minicom是Linux平臺串列埠除錯工具,相當於Windows上的串列埠除錯助手,可以用來讀取Arduino通過USB串

樹莓派Arduino串列通訊

樹莓派B+擁有4個USB口,而Arduino正好有USB轉串列埠,這樣我們就能夠很容易的利用這一對介面來實現樹莓派與Arduino之間的串列埠通訊。 arduino端的程式: String rec