답변 : 블루투스로 목표값 데이터를 전송하고자 합니다.
페이지 정보
작성자 master 작성일20-04-13 22:32 조회18,543회 댓글3건본문
아두이노메가2560을 사용하면
(시리얼모니터 제외하고도) 하드웨어 시리얼을 3개 사용할 수 있습니다.
댓글 : 3
조회수 : 18,543
봄빛님의 댓글
봄빛 작성일
답변 감사합니다~^^
아래와 같이 구성하였을 경우,
블루투스로 "BT_data" 값 "f"를 보내어 모드를 활성화 시킨 후
블루투스로 "val_phone" 값 - 임의의 숫자를 보내고자 합니다.
가능할까요? 가능하다면 어떻게 수정해야 할까요?
#include <SoftwareSerial.h>
#include <Wire.h>
#include <Adafruit_NeoPixel.h>
#include <afstandssensor.h>
#include "TM1637Display.h"
#define las_beam 9
#define select 6
#define led 5
#define CLK 3
#define DIO 4
SoftwareSerial BTSerial(7, 8); // RX, TX
Adafruit_NeoPixel strip = Adafruit_NeoPixel (8, 5, NEO_GRB + NEO_KHZ800);
AfstandsSensor afstandssensor(13, 12);
TM1637Display display(CLK, DIO);
bool jump = false;
int jump_success = 0;
int running_success = 0;
int mode = 0;
char val_phone = 0;
//
void setup () {
Serial.begin (9600);
BTSerial.begin (9600);
display.setBrightness(10);
pinMode (las_beam, OUTPUT);
pinMode (select, INPUT);
pinMode (led, OUTPUT);
strip.setBrightness(80);
strip.clear();
strip.begin();
}
//
void loop () {
if (BTSerial.available()) {
byte BT_data = BTSerial.read();
Serial.write(BT_data);
if (BT_data == 'f') {
mode=6;
}
}
if (mode == 6) {
countdown();
}
}
void countdown() {
int val = afstandssensor.afstandCM();
byte val_phone = BTSerial.read();
if ((jump == false) && (val < 50) && (val > 15)) {
jump == true;
val_phone--;
display.showNumberDec(val_phone);
Serial.print("downcount = ");
Serial.println(val_phone);
for(int i=0; i<9; i++) {
strip.setPixelColor (i, strip.Color(255,0,0));
strip.show();
}
delay(350);
for(int i=0; i<9; i++) {
strip.setPixelColor (i, strip.Color(0,0,0));
strip.show();
}
}
}
master님의 댓글
master 작성일
byte val_phone = BTSerial.read();
if (BTSerial.available()) 없이 임의로 읽으면 안됩니다.
//
임의의 숫자(문자열) 범위가 2자리 이상이면 parseint() 함수 사용법을 공부하세요
봄빛님의 댓글
봄빛 작성일감사합니다~^^