BASIC4MCU | 질문게시판 | 블루투스로 값을 받았는대 led가 켜지지 않습니다..
페이지 정보
작성자 ENEN 작성일2022-11-26 21:45 조회3,557회 댓글0건본문
현재 2개의 아두이노를 HC06으로 연결할 상태이고 페어링까지 완료된 상태입니다
Master쪽에서 TMP36으로 온도를 잰뒤에 그걸 slave쪽으로 넘긴뒤에 String으로 받아온 값을 다시 int로 바꾼뒤에
if문으로 온도에 따라 slave쪽에서 여러가지 작동을 할예정인대 코드를 짜는중에 시험을 해봤는대 시리얼 모니터에서는
값이 제대로 출력되고 if문에 들어갔을때 참일때 tone으로 인한 소리가나는대 lcd와 led가 출력을 하지않고 forward로 앞으로 가게
하는게 실행이 되지않습니다...lcd에 온도를 출력하고 싶은대 쉽지가 않내요...도움 주시면 정말 감사하겠습니다.
Master 코드
#include <SoftwareSerial.h>
SoftwareSerial HC06(2, 3); // RX, TX 포트 4번
void setup() {
Serial.begin(9600); //PC - 아두이노 연결라인
HC06.begin(9600); // 아두이노 - 블루투스 연결라인
}
void loop() { // run over and over
//if (HC06.available()) {
//Serial.write(HC06.read());
//}
//if (Serial.available()) {
//HC06.write(Serial.read());
//}
//HC06.print("NOCKANDA!");
//delay(1000);
int Value = analogRead(A0);
float volt = Value * 5.0 / 1024.0;
float temp = volt * 100 - 50;
String tempS = String(temp);
Serial.println(tempS);
delay(1500);
HC06.print(tempS);
delay(500);
}
slave 코드
#include <SoftwareSerial.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <Servo.h>
LiquidCrystal_I2C lcd(0x27,20,4);
Servo servoLeft;
Servo servoRight;
SoftwareSerial HC06(2, 3); // RX, TX
int led = 5;
void setup() {
pinMode(led, OUTPUT);
lcd.begin();
lcd.backlight();
servoLeft.attach(13);
servoRight.attach(12);
Serial.begin(9600); //PC-아두이노간
HC06.begin(9600); //아두이노-블루투스모듈
}
void loop() { // run over and over
int tempI;
if(HC06.available()){
String temp = HC06.readStringUntil(0x0D);
Serial.println(temp);
tempI = temp.toInt();
if(tempI >= 27){
digitalWrite(led ,HIGH);
tone(4,5000,1000);
lcd.setCursor(0,0); //첫번째 줄의 0번째 부터 출력
lcd.print(tempI);
//lcd.setCursor(0,1); //두번째 줄의 0번째 부터 력출
//lcd.print(text + "C");
lcd.clear();
forward(500);
}
else {
digitalWrite(led ,LOW);
servoLeft.detach();
servoRight.detach();
}
}
}
void forward(int time) // Forward function
{ servoLeft.writeMicroseconds(1700); // Left wheel counterclockwise
servoRight.writeMicroseconds(1300); // Right wheel clockwise
delay(time); // Maneuver for time ms
}
void turnLeft(int time) // Left turn function
{ servoLeft.writeMicroseconds(1300); // Left wheel clockwise
servoRight.writeMicroseconds(1300); // Right wheel clockwise
delay(time); // Maneuver for time ms
}
void turnRight(int time) // Right turn function
{ servoLeft.writeMicroseconds(1700); // Left wheel counterclockwise
servoRight.writeMicroseconds(1700); // Right wheel counterclockwise
delay(time); // Maneuver for time ms
}
void backward(int time) // Backward function
{ servoLeft.writeMicroseconds(1300); // Left wheel clockwise
servoRight.writeMicroseconds(1700); // Right wheel counterclockwise
delay(time); // Maneuver for time ms
댓글 0
조회수 3,557등록된 댓글이 없습니다.