使用計時器 計時時間設為15ms
當Slider位置改變時啟動計時器
計時時間到再傳送Slider數值
這是將timer作為delay
這邊有趣的是如不用floor取整數
會出現xxx.5的數值??
Arduino
參考藍芽傳送字串
此處仍然使用readString()來讀取字串
存放在myString
其資料型態是String
處理方法(一)
以c_str()將他轉成char[]
將它複製到newString[]
最後以atoi轉成int
#include <SoftwareSerial.h>
#include <Wire.h>//引用二個函式庫SoftwareSerial及WireSoftwareSerial I2CBT(10,11);//定義PIN10及PIN11分別為RX及TX腳位
//注意此RX, TX分別接藍芽模組的TX, RX
int inSlider=0;
String myString;
char newString[]="000";
void setup() {
Serial.begin(9600); //Arduino起始鮑率:9600
I2CBT.begin(57600);
//藍牙鮑率:57600(注意!每個藍牙晶片的鮑率都不太一樣,請務必確認
I2CBT.setTimeout(5);
Serial.println("Hello");
}
void loop() {
// 檢查是否有資料可供讀取
while (I2CBT.available()) {
myString=I2CBT.readString();
strcpy(newString,myString.c_str());
inSlider=atoi(newString);
if (inSlider<=500){
Serial.println(inSlider);
}
else{
Serial.println("wrong");}
}
}
方法(二)
直接使用Arduino的toInt()
將String轉整數
#include <SoftwareSerial.h>
#include <Wire.h>//引用二個函式庫SoftwareSerial及WireSoftwareSerial I2CBT(10,11);//定義PIN10及PIN11分別為RX及TX腳位
//注意此RX, TX分別接藍芽模組的TX, RX
int inSlider=0;
String myString;
void setup() {
Serial.begin(9600); //Arduino起始鮑率:9600
I2CBT.begin(57600);
//藍牙鮑率:57600(注意!每個藍牙晶片的鮑率都不太一樣,請務必確認
I2CBT.setTimeout(5);
Serial.println("Hello");
}
void loop() {
// 檢查是否有資料可供讀取
while (I2CBT.available()) {
myString=I2CBT.readString();
inSlider=myString.toInt();
if (inSlider<=500){
Serial.println(inSlider);
}
else{
Serial.println("wrong");}
}
}
沒有留言:
張貼留言