오른쪽이 송신부이고 scale.get_unit()이라는 함수의 값을 출력하고 그 출력된 값을
왼쪽 수신부에서 uart통신을 통해서 받았는데 시리얼모니터를 보면 아래쪽이 송신부쪽 출력이고
위쪽이 수신부쪽 출력인데 수신부쪽 통신이 송신부 통신과 전혀 상관없는 값이 나옵니다.
함수에서 어떤값이 잘못된걸까요?
//송신부
#include <LiquidCrystal.h>
#include "HX711.h"
#define calibaration_factor -7050.0
#define DOUT 3
#define CLK 2
HX711 scale(DOUT, CLK);
LiquidCrystal lcd(8, 9, 10, 11, 12, 13);
byte SpecialChar1[8] = { B01001, B10101, B10101, B01001, B00001, B10000, B10000, B11111};
byte SpecialChar2[8] = { B01000, B10101, B01001, B00011, B11101, B01001, B10000, B11111};
byte SpecialChar3[8] = { B00000, B00100, B00100, B00000, B00000, B00100, B00100, B00000};
byte SpecialChar4[8] = { B11101, B10111, B10101, B11111, B00001, B01110, B10001, B01110};
void setup()
{
Serial.begin(9600);
scale.set_scale(calibaration_factor);
scale.tare();
lcd.begin(16, 2);
lcd.createChar(0, SpecialChar1);
lcd.createChar(1, SpecialChar2);
lcd.createChar(2, SpecialChar3);
lcd.createChar(3, SpecialChar4);
for(int i = 0; i<3 ; i++)
{
lcd.setCursor(i, 0);
lcd.write(byte(i));
}
}
void loop()
{
Serial.println(scale.get_units());
lcd.setCursor(3,0);
if(scale.get_units()>0&&scale.get_units()<3){lcd.print(" ");lcd.print(0);lcd.write(byte(3));}
else if(scale.get_units()>3&&scale.get_units()<15){lcd.print(" ");lcd.print(1);lcd.write(byte(3));}
else if(scale.get_units()>15&&scale.get_units()<30){lcd.print(" ");lcd.print(2);lcd.write(byte(3));}
else if(scale.get_units()>30&&scale.get_units()<50){lcd.print(" ");lcd.print(3);lcd.write(byte(3));}
else if(scale.get_units()>50){lcd.setCursor(3,0);lcd.print("FULL");lcd.print(" ");}
}
----------------------------------------------------------------------------------------------------------
//수신부
#include <Servo.h>
Servo myservo;
int pos=0;
int inputPin=2;
int PIR_val=0;
void setup()
{
myservo.attach(5);
pinMode(4,INPUT_PULLUP);
Serial.begin(9600);
pinMode(inputPin,INPUT);
}
void loop()
{
while(Serial.available()){
double data = Serial.read();
Serial.println(data);}
}
|