| 
					   
  
(COM4:수신부  /COM5:송신부)COM5 로드셀 값을 받아 COM4서 받아들여 그 값을 출력하면서 동시에 인체감지센서의 감지결과를 출력하고 로드셀 값이 30이상이 될경우 서브모터가 작동되지 않게 하는 코딩입니다. 그런데 수신부에서 byte형으로 받아들여서 그런지 33.8라는 숫자를 받아들였으면 위의 그림처럼 한줄에 첫번째자릿수,인체감지센서결과/두번째자릿수,인체감지센서결과/세번째 자릿수,이런식으로 나와서 서브모터가 항상 작동해 버립니다.어떤식으로 해야 숫자가 한번에 나올 수 있을까요?? 
//수신부 
#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()){ 
  byte data = Serial.read(); 
   
  PIR_val=digitalRead(inputPin); 
     if(digitalRead(4)==LOW) 
     { 
     if((data<30)&&(PIR_val==HIGH)) 
      {  
        Serial.println("Motion detected!"); Serial.write(data); 
                for (pos = 0; pos <= 65; pos += 1) 
                    { myservo.write(pos); 
                        delay(10);} 
                 delay(2000); 
                for (pos = 65; pos >= 0; pos -= 1)  
                   { myservo.write(pos); 
                       delay(10);} 
                 delay(5000); 
             } 
            else {Serial.println("Motion end");Serial.write(data); myservo.write(0);} 
      } 
        else  myservo.write(0);} 
   
} 
------------------------------------------------------------------------------------------------ 
//송신부 
#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("    ");} 
} 
					
										
									 |