BASIC4MCU | 질문게시판 | 아두이노 블루투스 통신(HM-10) 질문
페이지 정보
작성자 master 작성일2019-05-16 21:32 조회3,714회 댓글0건
https://www.basic4mcu.com/bbs/board.php?bo_table=gac&wr_id=8634
본문
아두이노 우노 2개와 블루투스 모듈 HM-10 2개로 5V 이내 전압 값 측정해서
시리얼 모니터로 확인하는 걸 연습하고 있는데 송신부에서는 소수점 둘째자리까지 측정이 되는 걸 확인했는데 수신부에서는 소수점자리가 0으로 나타납니다...변수형도 바꿔보고 여러가지 찾아서 해봤는데 혼자서는 찾기가 어려워서 알려주실 분 계신가요?????송신부(slave)#includeSoftwareSerial BT(2, 3);void setup() {Serial.begin(9600);BT.begin(9600);}void loop() {float sensorValue = analogRead(A0);float voltage = sensorValue * (5.0 / 1023.0);Serial.println(voltage);delay(5);{BT.write(voltage);}}수신부#includeSoftwareSerial BT(2, 3);float BTdata;void setup() {Serial.begin(9600);BT.begin(9600);}void loop() {if(BT.available()){BTdata = BT.read();Serial.println(BTdata,2);delay(5);}}//Serial.println(voltage);BT.write(voltage);println()은 문자열로 전송하는 함수고
write()는 1바이트 전송하는 함수입니다.
기능이 완전히 다르죠
Serial.write(voltage);BT.write(voltage);시리얼모니터에도 write()로 출력하면 어떻게 다른지 쉽게 확인할 수 있습니다.
// MCU BASIC: https://www.basic4mcu.com// DateTime : 2018-10-13 오전 10:45:06// by Ok-Hyun Park////-----------------------송신부(slave)//#include <SoftwareSerial.h>SoftwareSerial BT(2,3);//void setup(){Serial.begin(9600);BT.begin(9600);}//void loop(){int sensorValue=analogRead(A0);int voltage=sensorValue*501.0/1024.0;Serial.println(voltage);BT.println(voltage);//delay(1000);}////-----------------------수신부//#include <SoftwareSerial.h>SoftwareSerial BT(2,3);//void setup(){Serial.begin(9600);BT.begin(9600);}//void loop(){if(BT.available()){long BTdata=BT.parseInt();Serial.println(BTdata);}}
parseInt()함수를 사용해서 정수로 변환한 후에 다시 문자열로 출력하는 코드입니다.
송신측 딜레이는 적당히 줄여서 사용하세요
// MCU BASIC: https://www.basic4mcu.com// DateTime : 2018-10-13 오전 10:50:14// by Ok-Hyun Park//#include <SoftwareSerial.h>SoftwareSerial BT(2,3);//void setup(){Serial.begin(9600);BT.begin(9600);}//void loop(){int sensorValue=analogRead(A0);int voltage=sensorValue*501.0/1024.0;Serial.println(voltage);BT.println(voltage);//delay(1000);}////-----------------------수신부//#include <SoftwareSerial.h>SoftwareSerial BT(2,3);//void setup(){Serial.begin(9600);BT.begin(9600);}//void loop(){if(BT.available()){long BTdata=BT.parseInt();Serial.print(BTdata/100);Serial.print(".");if((BTdata%100)<10)Serial.print("0");Serial.println(BTdata%100);}}
소숫점을 넣어줄 수도 있겠죠
// MCU BASIC: https://www.basic4mcu.com// DateTime : 2018-10-13 오전 10:47:36// by Ok-Hyun Park////-----------------------송신부(slave)//#include <SoftwareSerial.h>SoftwareSerial BT(2,3);//void setup(){Serial.begin(9600);BT.begin(9600);}//void loop(){int sensorValue=analogRead(A0);int voltage=sensorValue*501.0/1024.0;Serial.println(voltage);BT.println(voltage);//delay(1000);}////-----------------------수신부//#include <SoftwareSerial.h>SoftwareSerial BT(2,3);//void setup(){Serial.begin(9600);BT.begin(9600);}//void loop(){if(BT.available()){char BTdata=BT.read();Serial.write(BTdata);}}송신측에서 정수형의 문자열을 보내든 실수형의 문자열을 보내든 상관없이
받는 그대로 시리얼모니터에 출력하는 코드입니다.
정수형으로 전송하는 코드 (0~500)
// MCU BASIC: https://www.basic4mcu.com// DateTime : 2018-10-13 오전 10:52:28// by Ok-Hyun Park////-----------------------송신부(slave)//#include <SoftwareSerial.h>SoftwareSerial BT(2,3);//void setup(){Serial.begin(9600);BT.begin(9600);}//void loop(){int sensorValue=analogRead(A0);float voltage=sensorValue*5.01/1024.0;Serial.println(voltage,2);BT.println(voltage,2);//delay(1000);}////-----------------------수신부//#include <SoftwareSerial.h>SoftwareSerial BT(2,3);//void setup(){Serial.begin(9600);BT.begin(9600);}//void loop(){if(BT.available()){char BTdata=BT.read();Serial.write(BTdata);}}
실수형으로 전송하는 코드 (0.00~5.00)
댓글 0
조회수 3,714등록된 댓글이 없습니다.