반응형

【 아두이노 센서#23】 HC-SR04 초음파센서 경보회로2 with i2c LCD

 지난시간 초음파 센서로 접근 경보회로를 구성하면서 LCD(16by02)에 표시하는 실습을 진행해 보았다. 하지만 LCD 핀을 일일이 연결해서 사용하는 것은 번거로움이 있고, 만약 아두이노에 추가적으로 여러가지 부품을 더 연결할 경우 포트에도 여유가 없게 된다. 이럴경우 가장 좋은 해결책은 LCD를 I2C 통신 타입으로 사용하면 쉽게 해결이 된다. I2C 타입 LCD는 온도센서와 습도센서를 다룰 때도 사용을 하였기에, 크게 어렵지 않을 것이다. 다만, I2C 통신에 대한 이해가 필요하다면 아래 선수 학습에서 참고하기 바란다. 


▶ 선수 학습 :

  1. I2C (Inter Integrated Circuit) 통신  강좌보기클릭

  2. I2C LCD로 TMP36 온도센서값 출력하기#3  강좌보기클릭

  3초음파 센서 경보회로 with LCD     강좌보기클릭


▶ 실습에 사용되는 부품 자료 ( HC-SR04 ) 



▶ 실습 목표 :  

1. 초음파 신호의 반사된 시간을 이용해서 물체까지의 거리값을 계산할 수 있다.

2. 물체가 일정거리(40cm) 이하로 감지가 되면 경보음과 함께 LED가 깜빡이게 하고, 가까울 수록 점점 더 빠르게 반응 하도록 프로그래밍 한다. 

3. 하나의 포트로 LED와 스피커(부저) 두 가지를 작동시키게 되면, 출력이 약하여 LED 혹은 스피커 작동이 약할 수 있다. 따라서 LED와 스피커를 분리하여 연결 (포트 추가 필요) 

4. LCD로 거리값을 출력하되, I2C통신 모듈이 달려있는 LCD를 사용함으로 연결 및 사용의 번거로움을 줄이고 아두이노 포트에 여유를 가져 올 수 있다. 


▶ 실습 회로도면 :

  (이미지 클릭하면 확대 가능)


 ※ 위 회로에서 LED와 아두이노 9번 단자 사이에 100옴~330옴 사이 값 아무값의 저항을 하나를  기본적으로 넣어 주면 좋습니다. 

 아래 영상에 사용된 부저 모듈은 아래 이미지와 같은 3핀 모듈인데요, VCC핀은 +쪽에 ,  GND는 GND에 각각 연결하고,  I/O(신호) 단자를 아두이노의 8번 핀에 연결시켜 주면 됩니다. 이렇게 전원이 따로 분리된 모듈을 사용하면 출력이 좀 더 커지게 되는데요,   그런데, 사실상 아주 큰 소리는 나지는 않으니 참고하세요.

   능동형 부저 :  동작전압(Operating Voltage) : 3.3~5V


※ 아두이노 포트의 작은 출력으로 소리와 함께 LED를 작동 시키기 때문에, 기본적으로 소리가 작게 날 수 있으며, 스피커는 와트(w) 수가 작은 것을 사용해야 들을 수 있다. 또한 진동판을 전류로 울려서 소리를 내는 방식의 스피커 보다는 피에조 타입의(압전) 스피커를 사용하는 것이 좋다.  


▶ 실습 절차  : 

1.    위 회로 연결도를 참고하여 부품들을 연결한다
2.    초음파 센서의 거리 값을 16x2 LCD로 표시하라
3.    LCD에 거리값을 표시 할 경우 큰 수치에서 작은 수치로 줄어들어 이전 수치값이 남아 있어 값을 읽을 때 혼란스러운 현상이 일어난다. 이럴경우 몇가지 방법이 있으나간단한 방법은임의의 공백을 적당(2~10) 딜레이()와 함께 사용하면 해결할 수 있다.
4.    실제 거리와 유사한지 비교해본다


▶ 프로그램 코드 및 설명 : 

/*  초음파 센서를 사용한 거리값을 i2c 타입 LCD에 출력하기 */


#include <Wire.h>

#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd (0x27, 16,2);

int distance;

int alertLED=9; 

int alertBuzz=8; 

int triggerPin = 7;

int echoPin = 6;


void setup( )  {

  Serial.begin(9600);

  pinMode(alertLED, OUTPUT);    // 경보용 LED포트를 출력으로 설정

  pinMode(alertBuzz, OUTPUT);    // 경보용 Buzzer를 출력으로 설정

  pinMode(triggerPin, OUTPUT);  // 트리거 핀을 출력으로 설정

  pinMode(echoPin, INPUT);      // 에코 핀을 입력으로 설정

  lcd.begin();

  lcd.clear();


}


void loop( ) {

  // 트리거 핀으로 10 us의 펄스를 발생

  digitalWrite(triggerPin, HIGH);

  delayMicroseconds(10);

  digitalWrite(triggerPin, LOW);

  //에코 핀 입력으로부터 거리를 cm 단위로 계산

  distance = pulseIn(echoPin, HIGH) / 58;

  distance = distance>100? 100:distance;


  lcd.setCursor(0,0);

  lcd.print("UltraSonic Ruler");

  lcd.setCursor(0,1);

  lcd.print("distance :");

  lcd.print(distance);

  lcd.print("cm   ");

  if (distance < 40) {    

    digitalWrite(alertLED,HIGH);

    digitalWrite(alertBuzz,HIGH);

    delay(10);

    digitalWrite(alertLED,LOW);

    digitalWrite(alertBuzz,LOW);

    delay(distance); 

  }

  Serial.println(String(distance)+"(cm)");

  delay(50);

 }

}



▶ 실행영상:  

(전체화면 보기로 보세요)




▶ 아두이노 파일(다운) :

Ultrasonic_buzzer_i2cLCD.ino



【 LCD관련 에러나 동작이 안 될 때 】

 LCD관련한 라이브러리 에러나 코드 에러에 대한 안내를 드립니다.  

 크게 아래와 같은 두 가지 형태를 보이는데요, 


▶ 1. 코드를 실행하기전 LiquidCrystal_I2C.h: No such file or directory 에러라고 뜨는 경우!


 이때는 LCD 헤더파일이 설치가 되어 있지 않았을 경우입니다.  아예 관련 라이브러리(해더 파일)가 설치 되지 않은 경우입니다. 

해결법은 바로 아래에 첨부한 라이브러리를 다운받아 압축을 풀지 말고 라이브러리 관리 메뉴에서  .zip 라이브러리 추가 메뉴를 이용해서 추가해주세요.

경로 :  아두이노IDE >  스케치 》 라이브러리 포함하기  .zip 라이브러리 추가...  "다운받은 라이브러리파일 선택"


▶ 2. 또 한가지 LCD관련 에러는 ,  no matching function for call to ‘LiquidCrystal_I2C::begin();   라고 뜨는 경우!

 라이브러리 파일도 똑같은 이름이지만, 제공자에 따라 내부코드가 다른 라이브러리인 경우가 종종 있어요.  그래서 만약 제가 실험에서 사용한 라이브러리가 아닌,  같은 이름이지만 다른 라이브러리를 사용할 경우 위와 같은 에러 표시를 낼 수 있습니다.    라이브러리는 분명 설치되어 있지만 그래서 프로그램이 인지는 하는데, 코드에서 사용한 함수 적용이 되지 않을 때 이런 에러를 띄우게 됩니다.    그럼, 해결책은 실험에 사용한(적용한) 그 라이브러리를 다시 설치해 주어야 하는데요,   이 때 중요한 것은 아두이노에서는 똑 같은 이름의 라이브러리가 두 개 설치될 경우 또다른 중복에러를 띄우게 됩니다.   그러니 잘 못 설치된 라이브러리는 찾아서 반드시 삭제하거나,  다른이름으로 임시 변경해 놓거나,  나중에 다른 프로그램에서 사용해야 할 경우를 대비해서 압축해 놓고 원본은 지워 놓으면 됩니다. 


 그럼 기존 라이브러리를 찾아서 삭제를 하거나 하려면 설치된 라이브러리를 찾아야 겠죠? 

찾는 위치는 보통 아래 두 곳입니다.  (윈도우10 기준이며, 윈도우7도 비슷한 위치) 


두 곳으로 나뉘어 설치되는 이유는 아두이노 IDE의 "라이브러리 관리 메니저" 창을 통해 검색으로 설치되는 기본위치가 있고(아두이노 설치된 경로),   '.zip 라이브러리' 추가로 설치되는 위치가(도큐멘트 문서 저장영역-Doucuments) 따로 있어서 그렇습니다. 


< .zip 라이브러리 추가 메뉴에서 추가한 라이브러리 설치 위치 >

 1. C:\Users\유저-이름\Documents\Arduino\libraries    


 <라이브러리 관리 메뉴창에서 라이브러리 직접 검색으로 설치된 라이브러리 위치 >

 2. C:\Program Files (x86)\Arduino\libraries


위 두 곳에서 찾아서 삭제를 하세요.   (그냥, 폴더 째로 삭제하면 됩니다.)

 그리고 아래 첨부하는 라이브러리를 다운받아  압축파일 그대로 .zip 라이브러리 추가 메뉴로 추가해 주세요. 

만약, 압축파일 그대로 추가할 때 에러가 난다면,  앞축을 풀고  xxxxx.h 가 있는 폴더만 "C:\Users\유저-이름\Documents\Arduino\libraries" 경로에 붙여넣기 하면 됩니다.    이때 아두이노 스케치 IDE는 모두 닫고 재실행 해야 적용 됩니다.


 본 예제에서 사용한 라이브러리 다운로드 받기 :

Arduino-LiquidCrystal-I2C-library-master.zip




  ※ 중요! : 여기에서 제시된 코드로 작성할 경우 반드이 이 라이브러리로 설치하셔야 합니다.   만약, 여러분의 PC에 똑 같은 이름의 라이브러리가 있을 경우 반드시 삭제를 하거나 압축해서 백업을 해 놓으면 충돌이 일어나지 않습니다.!!!

반응형
반응형

【 아두이노 센서#22】 HC-SR04 초음파 센서 경보회로 with LCD

 지난시간 초음파 센서로 접근 경보회로 기본을 다루었다. 그럼 이제 LCD를 부착하여 거리값을 LCD에 표시해보자. 이렇게 된다면 포터블하며 실제로 자동차등에 부착할 수 있는 형태가 되어 훨씬 실용적으로 활용할 수 있게 된다.


▶ 선수 학습 :

  1. 초음파 센서 다루기 #1   강좌보기클릭

  2. 초음파 센서 다루기 #2   강좌보기클릭

  

▶ 실습에 사용되는 부품 자료 ( HC-SR04 ) 






▶ 실습 목표 :  


1. 초음파 신호의 반사된 시간을 이용해서 물체까지의 거리값을 계산할 수 있다.

2. 물체가 일정거리(40cm) 이하로 감지가 되면 경보음과 함께 LED가 깜빡이게 하고, 가까울 수록 점점 더 빠르게 반응 하도록 프로그래밍 한다. 

3. 스피커와 LED는 각각 포트로 제어 할 수 있으나, 지금은 하나의 포트(13)로 제어할 것이며, LCD(1602)를 부착하여 초음파로 측정된 거리 값을 LCD를 통해 표시할 수 있다. 


▶ 실습 회로도면 :

  (이미지 클릭하면 확대 가능)


※ 아두이노 포트의 작은 출력으로 소리와 함께 LED를 작동 시키기 때문에, 기본적으로 소리가 작게 날 수 있으며, 스피커는 와트(w) 수가 작은 것을 사용해야 들을 수 있다. 또한 진동판을 전류로 울려서 소리를 내는 방식의 스피커 보다는 피에조 타입의(압전) 스피커를 사용하는 것이 좋다.


▶ 실습 절차  : 

1.    위 회로 연결도를 참고하여 부품들을 연결한다
2.    초음파 센서의 거리 값을 16x2 LCD로 표시하라
3.    LCD거리값을 표시 할 경우 큰 수치에서 작은 수치로 줄어들어 이전 수치값이 남아 있어 값을 읽을 때 혼란스러운 현상이 일어난다. 이럴경우 몇가지 방법이 있으나, 간단한 방법은, 임의의 공백을 적당(2~10) 딜레이()와 함께 사용하면 해결할 수 있다.
4.    실제 거리와 유사한지 비교해본다


▶ 프로그램 코드 및 설명 : 


/*  초음파 센서(HC-SR04 모듈)로 물체와의 거리측정하기 */


#include <LiquidCrystal.h>// LCD 사용을 위한 헤더 선언

int distance;

int triggerPin = 10;

int echoPin = 11;

int alertPin=3;    //   스피커 & LED 연결 핀 설정

LiquidCrystal lcd(2,3,4,5,6,7);//LCD 핀 배열 설정


void setup( )  {

  Serial.begin(9600);

  pinMode(triggerPin, OUTPUT);  // 트리거 핀을 출력으로 설정

  pinMode(echoPin, INPUT);       // 에코 핀을 입력으로 설정

}


void loop( ) {

 digitalWrite(triggerPinLOW);    // 트리거 핀 초기화

  digitalWrite(echoPin, LOW);      //  에코 핀 초기화

  delayMicroseconds(2);

  // 트리거 핀으로 10 us의 펄스를 발생

  digitalWrite(triggerPin, HIGH);

  delayMicroseconds(10);

  digitalWrite(triggerPin, LOW);

  // 에코 핀 입력으로부터 거리 값을  cm 단위로 계산

  distance = pulseIn(echoPin, HIGH) / 58;

  Serial.println("Distance(cm) = " + String(distance));

  delay(1000);

  distance = distance>100? 100:distance;//100이상의 값은 모두100


  if (distance 40) {       //  40 이하의 값부터 경보 시작

    digitalWrite(alertPin,HIGH);

    delay(10);

   digitalWrite(alertPin,LOW);

   delay(distance); // 거리가 가까울수록  음이 빨라지도록 딜레이값을 조정

  }

 lcd.setCursor(0,0);  //커서를 첫 열 첫 행으로 이동

 lcd.print("Distance(cm):");

 lcd.print(distance);

 delay(2);   // 거리값 표시를 위한 약간의 딜레이를 준다. 

 lcd.print("            ");  //거리 값이 계속 바뀌어 나타나는 잔상제거를 위한 공백

}


▶ 실행영상:  

(전체화면 보기로 보세요)
# 아래 영상은 동일한 회로와 프로그래밍이 되어 있으며, 휴대성을 위해 아두이노 보드만, 우노 R3에서 나노 보드로 교체한 회로 영상이다.



▶ 아두이노 파일(다운) :

Ultrasonic_buzzer_LCD_.ino


반응형
반응형

【 아두이노 센서#21】 HC-SR04 초음파 센서 다루기 #2

 이번 시간은 초음파 센서 다루기 두 번째 시간으로, 초음파 경보회로를 만들어보려한다. 지난시간 초음파 센서를 이용해서 거리값을 계산해 낼 수 있었다. 이번시간은 이 거리값을 이용해서 특정 거리 영역으로 인지되면 경보음을 울리는 회로를 구성해보려 한다. 그리고 마치 자동차 범퍼에 달려 있는 접근 경보 센서 회로 처럼, 가까이 근접할 수록 신호음과 불 빛을 더 빨리 울리도록 해볼 것이다. 


▶ 선수 학습 :

  1. 초음파 센서 다루기 #1        강좌보기클릭☜


  

▶ 실습에 사용되는 부품 자료 ( HC-SR04 ) 






▶ 실습 목표 :  


1. 초음파 신호의 반사된 시간을 이용해서 물체까지의 거리값을 계산할 수 있다.


2. 물체가 일정거리(40cm) 이하로 감지가 되면 경보음과 함께 LED가 깜빡이게 하고, 가까울 수록 점점 더 빠르게 반응 하도록 프로그래밍 한다. 


3. 실습1은 스피커와 LED를 같이 묶어 포트 하나로 간단히 제어 해 볼 것이고, 실습2는 포트 두 개를 사용하여 각각 제어 해 볼 것이다(출력 공급이 조금 더  좋아짐)



▶ 실습 회로도면 :

  (이미지 클릭하면 확대 가능)




※ 아두이노 포트의 작은 출력으로 소리와 함께 LED를 작동 시키기 때문에, 기본적으로 소리가 작게 날 수 있으며, 스피커는 와트(w) 수가 작은 것을 사용해야 들을 수 있다. 또한 진동판을 전류로 울려서 소리를 내는 방식의 스피커 보다는 피에조 타입의(압전) 스피커를 사용하는 것이 좋다.



※ 본 실습 처럼 단순한 음을 듣기 위한 회로에서는 스피커의 극성 구분은 크게 의미가 없다. 


▶ 실습 1 절차  : 

1. 위 회로 연결도를 참고하여 부품들을 연결한다. 
2. 스피커와 LED를 하나의 포트에 연결하여 동시에 제어 해본다.


▶ 프로그램 코드 및 설명 : 


/*  초음파 센서(HC-SR04 모듈)로 물체와의 거리측정하기 */


int distance;

int triggerPin = 7;

int echoPin = 6;

int alertPin=3;    //   스피커 & LED 연결 핀 설정


void setup( )  {

  Serial.begin(9600);

  pinMode(triggerPin, OUTPUT);  // 트리거 핀을 출력으로 설정

  pinMode(echoPin, INPUT);       // 에코 핀을 입력으로 설정

}


void loop( ) {

 digitalWrite(triggerPinLOW);    // 트리거 핀 초기화

  digitalWrite(echoPin, LOW);      //  에코 핀 초기화

  delayMicroseconds(2);

  // 트리거 핀으로 10 us의 펄스를 발생

  digitalWrite(triggerPin, HIGH);

  delayMicroseconds(10);

  digitalWrite(triggerPin, LOW);

  // 에코 핀 입력으로부터 거리 값을  cm 단위로 계산

  distance = pulseIn(echoPin, HIGH) / 58;

  Serial.println("Distance(cm) = " + String(distance));

  delay(1000);

  distance = distance>100? 100:distance;//100이상의 값은 모두100


  if (distance < 40) {       //  40 이하의 값부터 경보 시작

    digitalWrite(alertPin,HIGH);

    delay(10);

   digitalWrite(alertPin,LOW);

   delay(distance); // 거리가 가까울수록  음이 빨라지도록 딜레이값을 조정

   }

}



▶ 실습 1 실행영상:  

(전체화면 보기로 보세요)



▶ 아두이노 파일(다운) :


Ultrasonic01_Basic.ino




▶ 실습 2 절차  : 

1. 위 회로 연결도를 참고하여 부품들을 연결한다. 
2. 스피커와 LED를 분리하여 각각의 아두이노 포트를 사용하여 연결한다.
▶ 실습 회로도면 :
 (이미지 클릭하면 확대 가능)



▶ 프로그램 코드 및 설명 : 


int distance;

int alertLED=9;   //   LED  연결 포트

int alertBuzz=8; //   Buzzer  연결 포트

int triggerPin = 7;

int echoPin = 6;


void setup() {

  Serial.begin(9600);

  pinMode(alertLED, OUTPUT);    // 경보용 LED포트를 출력으로 설정

  pinMode(alertBuzz, OUTPUT);   // 경보용 Buzzer를 출력으로 설정

  pinMode(triggerPin, OUTPUT);  // 트리거 핀을 출력으로 설정

  pinMode(echoPin, INPUT);         // 에코 핀을 입력으로 설정

}


void loop() {

 digitalWrite(triggerPin, LOW);    // 트리거 핀 초기화

  digitalWrite(echoPin, LOW);      //  에코 핀 초기화

  delayMicroseconds(2);

//   ----- 트리거  핀으로 10us의 펄스를 발생  -----

 digitalWrite(triggerPin, HIGH);

  delayMicroseconds(10);

  digitalWrite(triggerPin, LOW);

//---------------------------------------

  distance = pulseIn(echoPin, HIGH) / 58; //  거리값

 distance = distance>100? 100:distance;//100이상의 값은 모두100

if (distance < 40) {      //  40cm 미만 값 부터 경고음(Led) 시작

    digitalWrite(alertLED,HIGH);

    digitalWrite(alertBuzz,HIGH);

    delay(10);

    digitalWrite(alertLED,LOW);

    digitalWrite(alertBuzz,LOW);

    delay(distance);

 }

  Serial.println(String(distance)+"(cm)");

  delay(10);

}


▶ 실습 2 실행영상:  

(전체화면 보기로 보세요)



▶ 아두이노 파일(다운) :

Ultrasonic_buzzer2.ino


반응형
반응형

【 아두이노 센서#20】 HC-SR04 초음파 센서 다루기 #1


 이번 시간 부터, 아두이노에서 가장 활용도가 높은 초음파 센서를 다루어 보려고 한다. 앞으로 라즈이노에서 올리는 실습을 보면서, 차근 차근 하나씩 해보면 생각만큼 복잡하지 않으며 아두이노가 더욱 재미 있어질 것이다. 

게다가 초음파 센서를 이용하여 다양한 응용작품을 만들어 보려고 한다. 


▶ 선수 학습 :

  특별한 선수학습 없음

  

▶ 실습에 사용되는 부품 자료 ( HC-SR04 ) 







▶ 실습 목표 :  


1. 초음파 센서의 구동 원리에 대해 이해한다. 


2. 초음파 신호의 반사된 시간을 이용해서 물체까지의 거리값을 계산할 수 있다.


3. 측정된 값을 시리얼 모니터상에 거리값(cm)으로 표시한다.



▶ 실습 회로도면 :

  (이미지 클릭하면 확대 가능)









▶ 실습 절차  : 

1. 위 회로 연결도를 참고하여 부품들을 연결한다. 
2. 시간값 계산식


3. 초음파센서의 거리측정 메카니즘을 이해한다.






▶ 프로그램 코드 및 설명 : 


/*  초음파 센서(HC-SR04 모듈)로 물체와의 거리측정하기 */


int distance;

int triggerPin = 7;

int echoPin = 6;


void setup( )  {

  Serial.begin(9600);

  pinMode(triggerPin, OUTPUT);  // 트리거 핀을 출력으로 설정

  pinMode(echoPin, INPUT);       // 에코 핀을 입력으로 설정

}


void loop( ) {

 digitalWrite(triggerPin, LOW);    // 트리거 핀 초기화

  digitalWrite(echoPin, LOW);      //  에코 핀 초기화

  delayMicroseconds(2);

  // 트리거 핀으로 10 us의 펄스를 발생

  digitalWrite(triggerPin, HIGH);

  delayMicroseconds(10);

  digitalWrite(triggerPin, LOW);

  // 에코 핀 입력으로부터 거리 값을  cm 단위로 계산

  distance = pulseIn(echoPin, HIGH) / 58;

  Serial.println("Distance(cm) = " + String(distance));

  delay(1000);

}




▶ 실행 영상:  【 시리얼 모니터 화면 】





▶ 아두이노 파일(다운) :


Ultrasonic.ino


반응형
반응형

【 아두이노 센서#19】 DHT22 ·습도 센서 다루기 with LCD#3



 온도와 습도 센서 DHT11를 이용해 온도와 습도를 I2C LCD에 표시하고 불쾌지수(DI)를 까지 표시해 보았다.  이번시간은 소수점 단위까지 정밀한 DHT22센서( AM2302)를 이용해 표시해보려 한다. 회로 연결은 같기 때문에 어려울 것이 없을 것이다. 



▶ 선수 학습 :

  1. I2C 통신 이란?        강좌보기클릭☜

  2. DHT11 온·습도 센서 다루기#1    강좌보기클릭☜

  3. DHT11 온·습도 센서 다루기#2(with LCD)  강좌보기클릭☜


▶ 실습에 사용되는 부품 자료 ( DHT22 ) 



위와 같이 DHT22 센서 모듈을 이용하면 풀업 저항이 달려 있어 사용이 간편해진다. 



▶ 실습 목표 :  


1. 풀업 저항이 포함된 DHT22 센서를 다룰 수 있다. 


2. DHT22 센서의 온도 값과 습도 값을 I2C LCD로 표시 할 수 있다. 


3. 불쾌지수(DI)를 구현해 볼 수 있다.



▶ 실습 회로도면 :

  (이미지 클릭하면 확대 가능)







▶ 실습 절차  : 

1. 위 회로 연결도를 참고하여 연결한다. 부품들을 연결한다.
2. I2C LCD의 어드레스 주소를 확인한다.(모듈없는 LCD사용도 가능)
3. 불쾌지수(DI)에 대해 이해하고 프로그래밍에 적용한다. 
 


▶ 프로그램 코드 및 설명 : 


/* DTH22 센서로 I2C LCD에 온·습도 표시하기  */

#include <Wire.h>

#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd (0x27, 16,2);

#include <DHT.h>

#define DHTPIN 8

#define DHTTYPE DHT11

DHT dht(DHTPIN, DHTTYPE);

void setup( )  {

  Serial.begin(9600);

  lcd.begin();

  lcd.clear(); 

}

void loop( ) {

  delay(2000);

  float h = dht.readHumidity();  // 소수점 값 저장을 위해 float 선언

  float t= dht.readTemperature(); // 소수점 값 저장을 위해 float 선언

  Serial.print("Humidity: ");      // 시리얼 통신창에 출력

  Serial.print(h);

  Serial.print("%\t");

  Serial.print("Temperature: ");

  Serial.print(t);

  Serial.println("C");

   lcd.setCursor(0,0);  //커서를 1열 1행으로 이동

  lcd.print("Humidity   :");

  lcd.print(h, 1);            //습도 값을 소수 첫 째자리 까지만 표시

  lcd.println("%  ");   //공백을 넣어 10단위에서 1단위로 바뀔때 잔상을 제거 함 

  delay(100);

  lcd.setCursor(0,1);  //커서를 1열 2행으로 이동

  lcd.print("Temperature:");

  lcd.print(t,  1);        //온도 값을 소수 첫 째자리 까지만 표시

  lcd.print(char(223));   //  223 또는 0xDF (특수문자 ℃의 표현)

  lcd.print("C   ");   //공백을 넣어 10단위에서1단위로 바뀔 때 잔상을 제거

}



※ 만약 위 코드를 실행할 때 DHT11 센서 관련 에러가 난다면, 아두이노 IDE 메뉴의 라이브러리 관리 팝업창에서 <dht.h> 헤더파일을 검색하여 추가(설치)해 주어야 한다. 



① 라이브러리 검색창에서 "dht.h" 검색!

② 설치 클릭!


※ 중요! : 위의 라이브러리 매니저 화면에서 다운로드 받는 DHT.h 는 1.2.3 버전 이하를 사용해야  본문의 코드로 정상 작동 됩니다 !


혹은 아래 첨부되는 라이브러리를 다운로드 받아 설치하세요.

1.2.3버전 이상의 최신버전을 사용하면 에러 나지는 않지만 온도 습도값이 정상적으로 나오지 않습니다.


DHT_sensor_library_1.2.3.zip






불쾌 지수 산출 공식을 이용하여 시리얼모니터와

LCD에 출력해보자.

#적용 공식#

 di= 1.8*t-0.55*(1-h/100)*(1.8*t-26)+32



▶ 실행 결과 1 :  【 시리얼 모니터 화면 】




▶ 실행 결과 2 :  【 실습1. I2C LCD 사용한 기본 온·습도 표시 】

 (영상은 고화질로 설정하고 전체화면으로 보세요)





▶ 아두이노 파일(다운) :


[ 01 :  I2C LCD & 시리얼 모니터에 온습도 출력 ]  :   

DHT22_LCD_I2C_.ino



[ 02 :  DHT22센서 I2C LCD 온습도 & DI 출력 ]  :   

DHT22_LCD_hum_temp_di2.ino



【 LCD관련 에러나 동작이 안 될 때 】

 LCD관련한 라이브러리 에러나 코드 에러에 대한 안내를 드립니다.  

 크게 아래와 같은 두 가지 형태를 보이는데요, 


▶ 1. 코드를 실행하기전 LiquidCrystal_I2C.h: No such file or directory 에러라고 뜨는 경우!

 이때는 LCD 헤더파일이 설치가 되어 있지 않았을 경우입니다.  아예 관련 라이브러리(해더 파일)가 설치 되지 않은 경우입니다. 

해결법은 바로 아래에 첨부한 라이브러리를 다운받아 압축을 풀지 말고 라이브러리 관리 메뉴에서  .zip 라이브러리 추가 메뉴를 이용해서 추가해주세요.

경로 :  아두이노IDE >  스케치 》 라이브러리 포함하기  .zip 라이브러리 추가...  "다운받은 라이브러리파일 선택"


하지만! ,  Liquid... 관련 비슷한 이름의 라이브러리가 많아서 잘못설치되면, 제대로 동작되지 않고 에러를 내게 됩니다. 라이브러리는 이름과 내용이 비슷하다고 실행되지 않습니다.  완전히 다른 것으로 이해하셔야 합니다.  

검색보다는 여기 첨부해드리는 라이브러리를 다운받아 .zip라이브러리 추가로 추가해 주세요.

Arduino-LiquidCrystal-I2C-library-master.zip



▶ 2. 또 한가지 LCD관련 에러는 ,  no matching function for call to ‘LiquidCrystal_I2C::begin();   라고 뜨는 경우!

 라이브러리 파일도 똑같은 이름이지만, 제공자에 따라 내부코드가 다른 라이브러리인 경우가 종종 있어요.  그래서 만약 제가 실험에서 사용한 라이브러리가 아닌,  같은 이름이지만 다른 라이브러리를 사용할 경우 위와 같은 에러 표시를 낼 수 있습니다.    라이브러리는 분명 설치되어 있지만 그래서 프로그램이 인지는 하는데, 코드에서 사용한 함수 적용이 되지 않을 때 이런 에러를 띄우게 됩니다.    그럼, 해결책은 실험에 사용한(적용한) 그 라이브러리를 다시 설치해 주어야 하는데요,   이 때 중요한 것은 아두이노에서는 똑 같은 이름의 라이브러리가 두 개 설치될 경우 또다른 중복에러를 띄우게 됩니다.   그러니 잘 못 설치된 라이브러리는 찾아서 반드시 삭제하거나,  다른이름으로 임시 변경해 놓거나,  나중에 다른 프로그램에서 사용해야 할 경우를 대비해서 압축해 놓고 원본은 지워 놓으면 됩니다. 


 그럼 기존 라이브러리를 찾아서 삭제를 하거나 하려면 설치된 라이브러리를 찾아야 겠죠? 

찾는 위치는 보통 아래 두 곳입니다.  (윈도우10 기준이며, 윈도우7도 비슷한 위치) 


두 곳으로 나뉘어 설치되는 이유는 아두이노 IDE의 "라이브러리 관리 메니저" 창을 통해 검색으로 설치되는 기본위치가 있고(아두이노 설치된 경로),   '.zip 라이브러리' 추가로 설치되는 위치가(도큐멘트 문서 저장영역-Doucuments) 따로 있어서 그렇습니다. 


< .zip 라이브러리 추가 메뉴에서 추가한 라이브러리 설치 위치 >

 1. C:\Users\유저-이름\Documents\Arduino\libraries    


 <라이브러리 관리 메뉴창에서 라이브러리 직접 검색으로 설치된 라이브러리 위치 >

 2. C:\Program Files (x86)\Arduino\libraries


위 두 곳에서 찾아서 삭제를 하세요.   (그냥, 폴더 째로 삭제하면 됩니다.)

 그리고 아래 첨부하는 라이브러리를 다운받아  압축파일 그대로 .zip 라이브러리 추가 메뉴로 추가해 주세요. 

만약, 압축파일 그대로 추가할 때 에러가 난다면,  앞축을 풀고  xxxxx.h 가 있는 폴더만 "C:\Users\유저-이름\Documents\Arduino\libraries" 경로에 붙여넣기 하면 됩니다.    이때 아두이노 스케치 IDE는 모두 닫고 재실행 해야 적용 됩니다.


 본 예제에서 사용한 라이브러리 다운로드 받기 :

Arduino-LiquidCrystal-I2C-library-master.zip




  ※ 중요! : 여기에서 제시된 코드로 작성할 경우 반드이 이 라이브러리로 설치하셔야 합니다.   만약, 여러분의 PC에 똑 같은 이름의 라이브러리가 있을 경우 반드시 삭제를 하거나 압축해서 백업을 해 놓으면 충돌이 일어나지 않습니다.!!!

반응형
반응형

【 아두이노 센서#18】 DHT11 ·습도 센서 다루기 #2



 지난 시간 온도와 습도 센서 DHT11의 값을 '시리얼모니터'를 이용해서 출력해 보았다.  이번에는 활용도가 높은 I2C 통신모듈이 포함된 LCD 디스플레이에 표시해 보고자 한다.  또한 온도와 습도의 상관관계를 이용해 만든 불쾌지수(DI)도 표시해 볼 것이다. 



▶ 선수 학습 :

  1. I2C 통신 이란?      강좌보기클릭☜

  2. DHT11 온·습도 센서 다루기#1  강좌보기클릭☜


▶ 실습에 사용되는 부품 자료 ( DHT11 ) 


《 DHT11 핀 배열 》


위와 같은 DHT11 센서를 바로 사용하기도 하지만, 보통은 아래 처럼 풀업저항과 LED가 달려 있는 모듈 형태가 사용하기 편해서 많이 사용한다. 




▶ 실습 목표 :  


1. 풀업 저항이 포함된 DHT11 센서를 다룰 수 있다. 


2. DHT11 센서의 온도 값과 습도 값을 I2C LCD로 표시 할 수 있다. 


3. 불쾌지수(DI)를 함께 표시해 볼 수 있다.



▶ 실습 회로도면 :

  (이미지 클릭하면 확대 가능)









▶ 실습 절차  : 

1. 위 회로 연결도를 참고하여 연결한다. 부품들을 연결한다.
2. I2C LCD의 어드레스 주소를 확인한다.(모듈없는 LCD사용도 가능)
3. 불쾌지수(DI)에 대해 이해하고 프로그래밍에 적용한다. 
 


▶ 프로그램 코드 및 설명 : 


/* DTH11 센서로 I2C LCD에 온·습도 표시하기  */

#include <Wire.h>

#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd (0x27, 16,2);

#include <DHT.h>

#define DHTPIN 8

#define DHTTYPE DHT11

DHT dht(DHTPIN, DHTTYPE);

void setup( )  {

  Serial.begin(9600);

  lcd.begin();

  lcd.clear(); 

}

void loop( ) {

  delay(2000);

  int h = dht.readHumidity();

  int t = dht.readTemperature();

  Serial.print("Humidity: ");      // 시리얼 통신창에 출력

  Serial.print(h);

  Serial.print("%\t");

  Serial.print("Temperature: ");

  Serial.print(t);

  Serial.println("C");

   lcd.setCursor(0,0);  //커서를 11행으로 이동

  lcd.print("Humidity   :");

  lcd.print(h);

  lcd.println("%  ");

  delay(100);

  lcd.setCursor(0,1);  //커서를 12행으로 이동

  lcd.print("Temperature:");

  lcd.print(t);

  lcd.print(char(223));   //  223 또는 0xDF (특수문자 ℃의 표현)

  lcd.print("C   ");

}



※ 만약 위 코드를 실행할 때 DHT11 센서 관련 라이브러리 에러가 난다면, 아두이노 IDE 메뉴의 라이브러리 관리 팝업창에서 <dht.h> 헤더파일을 검색하여 추가(설치)해 주어야 한다. 



① 라이브러리 검색창에서 "dht.h" 검색!

② 설치 클릭!


※ 중요! : 위의 라이브러리 매니저 화면에서 다운로드 받는 DHT.h 는 1.2.3 버전 이하를 사용해야  본문의 코드로 정상 작동 됩니다 !  1.2.3버전 이상의 최신버전을 사용하면 에러 나지는 않지만 온도 습도값이 정상적으로 나오지 않습니다.


혹은 첨부되는 라이브러리를 다운로드 받아 설치하세요.

DHT_sensor_library_1.2.3.zip



▶ 실행 결과 :  【 실습1. I2C LCD 사용한 기본 온·습도 표시 】

 (영상은 고화질로 설정하고 전체화면으로 보세요)






불쾌 지수 산출 공식을 이용하여 시리얼모니터와

LCD에 출력해보자.

#적용 공식#

 di= 1.8*t-0.55*(1-h/100)*(1.8*t-26)+32



▶ 프로그램 코드 및 설명 : 


/* DTH11 센서로 I2C LCD에 온·습도 & 불쾌지수 표시하기  */

#include <Wire.h>

#include <LiquidCrystal_I2C.h>

#include <DHT.h> //이부분  에러가 날 경우'DHT.h' 1.23 이하 버전을 설치해 볼것  

#define DHTPIN 8

#define DHTTYPE DHT11

LiquidCrystal_I2C lcd (0x27, 16,2);

DHT dht(DHTPIN, DHTTYPE);

float di;          // 불쾌지수


void setup() {

  Serial.begin(9600);

  lcd.begin();   

  lcd.clear();

}

void loop() {  

  int h = dht.readHumidity();

  int t = dht.readTemperature();

  Serial.print("Hum: "); // 습도

  Serial.print(h);

  Serial.print(", \t");

  Serial.print("Temp : "); // 온도

  Serial.print(t);

  Serial.print("℃");

  Serial.print(", \t");

  di= 1.8*t-0.55*(1-h/100)*(1.8*t-26)+32;

  Serial.print("Di : ");  // Di(불쾌지수)

  Serial.println(di);

  lcd.setCursor(0,0);  

  lcd.print("H:");

  lcd.print(h,1);  

  lcd.print("%");

  delay(100);

  lcd.setCursor(7,0);  

  lcd.print(" T:");

  lcd.print(t,1);

  lcd.print(char(223));

  lcd.print("C");

  delay(100);

  lcd.setCursor(0,1);  

  lcd.print("DI:");

  lcd.print(di,1);    

  if (di < 68.0) {

    Serial.print("Di Condition: ");  // Di conditions 좋음!

    Serial.println(" Good!");

    lcd.setCursor(8,1);  

    lcd.print(" Good!  "); 

    Serial.println(" "); 

    }

    else if ( di > 68.0 && di < 75.0) {

    Serial.print("Di Condition: ");  // Di conditions 보통!

    Serial.println("Normal");

    lcd.setCursor(8,1);  

    lcd.print("Normal! "); 

    Serial.println(" ");  

    } 

    else if (di >= 75 &&  di < 80) {

    Serial.print("Di Condition: ");  // Di conditions 나쁨!

    Serial.println("High!");

    lcd.setCursor(8,1);  

    lcd.print("High!   ");  

    Serial.println(" ");  }

    else {

    Serial.print("Di Condition: ");  // Di conditions 아주 나쁨!

    Serial.println("Too High!");

    lcd.setCursor(8,1);  

    lcd.print("TooHigh!");     

    Serial.println(" ");   

    }    

  delay(2000);

}



▶ 실행 결과 :  【 실습2. I2C LCD에 온·습도 & 불쾌지수 표시  】

 (영상은 고화질로 설정하고 전체화면으로 보세요)






▶ 아두이노 파일(다운) :


[ 01 :  I2C LCD 온습도 출력 ]  :   

01_1_DHT11_LCD_Basic.ino.ino


[ 02 :  I2C LCD 온습도 & DI 출력 ]  :   

DHT11_LCD_i2c__hum_temp_di2.ino



【 LCD관련 에러나 동작이 안 될 때 】

 LCD관련한 라이브러리 에러나 코드 에러에 대한 안내를 드립니다.  

 크게 아래와 같은 두 가지 형태를 보이는데요, 


▶ 1. 코드를 실행하기전 LiquidCrystal_I2C.h: No such file or directory 에러라고 뜨는 경우!


 이때는 LCD 헤더파일이 설치가 되어 있지 않았을 경우입니다.  아예 관련 라이브러리(해더 파일)가 설치 되지 않은 경우입니다. 

해결법은 바로 아래에 첨부한 라이브러리를 다운받아 압축을 풀지 말고 라이브러리 관리 메뉴에서  .zip 라이브러리 추가 메뉴를 이용해서 추가해주세요.

경로 :  아두이노IDE >  스케치 》 라이브러리 포함하기  .zip 라이브러리 추가...  "다운받은 라이브러리파일 선택"

하지만! ,  Liquid... 관련 비슷한 이름의 라이브러리가 많아서 잘못설치되면, 제대로 동작되지 않고 에러를 내게 됩니다. 라이브러리는 이름과 내용이 비슷하다고 실행되지 않습니다.  완전히 다른 것으로 이해하셔야 합니다.  

검색보다는 여기 첨부해드리는 라이브러리를 다운받아 .zip라이브러리 추가로 추가해 주세요.

Arduino-LiquidCrystal-I2C-library-master.zip



▶ 2. 또 한가지 LCD관련 에러는 ,  no matching function for call to ‘LiquidCrystal_I2C::begin();   라고 뜨는 경우!

 라이브러리 파일도 똑같은 이름이지만, 제공자에 따라 내부코드가 다른 라이브러리인 경우가 종종 있어요.  그래서 만약 제가 실험에서 사용한 라이브러리가 아닌,  같은 이름이지만 다른 라이브러리를 사용할 경우 위와 같은 에러 표시를 낼 수 있습니다.    라이브러리는 분명 설치되어 있지만 그래서 프로그램이 인지는 하는데, 코드에서 사용한 함수 적용이 되지 않을 때 이런 에러를 띄우게 됩니다.    그럼, 해결책은 실험에 사용한(적용한) 그 라이브러리를 다시 설치해 주어야 하는데요,   이 때 중요한 것은 아두이노에서는 똑 같은 이름의 라이브러리가 두 개 설치될 경우 또다른 중복에러를 띄우게 됩니다.   그러니 잘 못 설치된 라이브러리는 찾아서 반드시 삭제하거나,  다른이름으로 임시 변경해 놓거나,  나중에 다른 프로그램에서 사용해야 할 경우를 대비해서 압축해 놓고 원본은 지워 놓으면 됩니다. 


 그럼 기존 라이브러리를 찾아서 삭제를 하거나 하려면 설치된 라이브러리를 찾아야 겠죠? 

찾는 위치는 보통 아래 두 곳입니다.  (윈도우10 기준이며, 윈도우7도 비슷한 위치) 


두 곳으로 나뉘어 설치되는 이유는 아두이노 IDE의 "라이브러리 관리 메니저" 창을 통해 검색으로 설치되는 기본위치가 있고(아두이노 설치된 경로),   '.zip 라이브러리' 추가로 설치되는 위치가(도큐멘트 문서 저장영역-Doucuments) 따로 있어서 그렇습니다. 


< .zip 라이브러리 추가 메뉴에서 추가한 라이브러리 설치 위치 >

 1. C:\Users\유저-이름\Documents\Arduino\libraries    


 <라이브러리 관리 메뉴창에서 라이브러리 직접 검색으로 설치된 라이브러리 위치 >

 2. C:\Program Files (x86)\Arduino\libraries


위 두 곳에서 찾아서 삭제를 하세요.   (그냥, 폴더 째로 삭제하면 됩니다.)

 그리고 아래 첨부하는 라이브러리를 다운받아  압축파일 그대로 .zip 라이브러리 추가 메뉴로 추가해 주세요. 

만약, 압축파일 그대로 추가할 때 에러가 난다면,  앞축을 풀고  xxxxx.h 가 있는 폴더만 "C:\Users\유저-이름\Documents\Arduino\libraries" 경로에 붙여넣기 하면 됩니다.    이때 아두이노 스케치 IDE는 모두 닫고 재실행 해야 적용 됩니다.


 본 예제에서 사용한 라이브러리 다운로드 받기 :

Arduino-LiquidCrystal-I2C-library-master.zip



  ※ 중요! : 여기에서 제시된 코드로 작성할 경우 반드이 이 라이브러리로 설치하셔야 합니다.   만약, 여러분의 PC에 똑 같은 이름의 라이브러리가 있을 경우 반드시 삭제를 하거나 압축해서 백업을 해 놓으면 충돌이 일어나지 않습니다.!!!

반응형
반응형

【 아두이노 센서#17】 DHT11 ·습도 센서 다루기 #1



 이번 시간은 온도와 습도를 같이 나타내 줄 수 있는 DHT11 이라는 매우 유용한 센서에 대해 다루어 보고자 한다. 첫 강좌로 센서의 기본적인 활용에 대해 실습한 다음 두 번째 강좌에서 LCD를 장착하여 온도와 습도를 같이 표시해 볼 것이다. 


▶ 선수 학습 :

  없음


▶ 실습에 사용되는 부품 자료 ( DHT11 ) 


《 DHT11 핀 배열 》


위와 같은 DHT11 센서를 바로 사용하기도 하지만, 보통은 아래 처럼 풀업저항과 LED가 달려 있는 모듈 형태가 사용하기 편해서 많이 사용한다. 




▶ 실습 목표 :  


1. 풀업 저항의 기능에 대해 이해한다. 


2. DHT11 센서의 온도 값과 습도 값을 시리얼 모니터 창을 통해 확인 할 수 있다.



▶ 실습 회로도면 :

  (이미지 클릭하면 확대 가능)



'X' 또는 'NC'(No Connect)는 사용하지 않는 핀이며, 

만약 풀업저항이 달려 있는 모듈을 사용한다면, VCC, GND 연결하고, Data핀만 아두이노의 8단자에 바로 연결하면 더 간단히 연결할 수 있다.


센서에서 데이터 값을 아두이노로 정확히 전달하기 위해서 Data Pin풀업 저항(2.2KΩ~10KΩ)을 달아 주어야 한다.
상기 모듈은 풀업 저항 과 LED를 추가한 것이다



▶ 프로그램 코드 및 설명 : 


/*  DHT11 온습도 센서 값을 읽어 시리얼 모니터 창으로 나타내기 */

#include <DHT.h// DHT.h 헤더파일을 라이브러리에 추가 한다

#define DHTPIN // ·습도 데이터 핀 설정

#define DHTTYPE DHT11

DHT dht(DHTPIN, DHTTYPE);

#include <LiquidCrystal.h>


void setup() {

  Serial.begin(9600);

}

void loop() {

  delay(2000);                                   // 센싱을 위한 시간 지연 값을 준다.

  int h = dht.readHumidity();

  int t = dht.readTemperature();

  Serial.print("Humidity: ");        // 시리얼 모니터로 출력

  Serial.print(h);

  Serial.print(" %\t");

  Serial.print("Temperature: ");

  Serial.print(t);

  Serial.println(" C");

}

 

※ 만약 위 코드를 실행할 때 DHT11 센서관련 라이브러리 관련 에러가 난다면, 아두이노 IDE 메뉴의 라이브러리 관리 팝업창에서 <dht.h> 헤더파일을 검색하여 추가(설치)해 주어야 한다. 



① 라이브러리 검색창에서 "dht.h" 검색!

② 설치 클릭!


※ 중요! : 위의 라이브러리 매니저 화면에서 다운로드 받는 DHT.h 는 1.2.3 버전 이하를 사용해야  본문의 코드로 정상 작동 됩니다 !


혹은 첨부되는 라이브러리를 다운로드 받아 설치하세요.

1.2.3버전 이상의 최신버전을 사용하면 에러 나지는 않지만 온도 습도값이 정상적으로 나오지 않습니다.

DHT_sensor_library_1.2.3.zip




▶ 실행 결과 :

 (영상은 고화질로 설정하고 전체화면으로 보세요)






▶ 아두이노 파일(다운) :

01_DHT11_Serial_Basic.ino




반응형
반응형

【 아두이노 센서#16】 TC74 센서 74HC595 with I2C LCD



 지난 시간 TC74 센서의 온도 값을 LED 레벨미터로 구현해 보았다. (TC74 센서 & 74HC595 응용회로 실습 강좌 보기)  


 이번 시간은 바로 지난시간 구현해 놓은 LED레벨미터 회로에 I2C 방식의 LCD를 장착하여 온도표시도 같이 구현해보려 한다.  


▶ 선수 학습 :

  1. 시프트 레지스터 실습  강좌보기클릭☜

  2. TC74온도 센서 활용하기1  강좌보기클릭☜

  3. 지난 강좌 회로 사용    강좌보기클릭☜


▶ 실습에 사용되는 부품 자료 ( TC74  & 74HC595 ) 


《 TC 74 핀 배열 》





《 74HC595 IC 핀배열》



▶ 실습 목표 :  


1. TC74 센서의 온도 값을 8bit 레벨값(LED)으로 표시할 수 있다. 


2. 측정되는 온도 값을 I2C LCD에도 표시 할 수 있다. 


3. 다수개의 I2C 통신 부품을 이용해보는 경험을 해 볼 수 있다.



▶ 실습 회로도면 :

  (이미지 클릭하면 확대 가능)







▶ 실습 절차  : 

1. 위 회로를 보고 각 부품과 보드를 연결한다. 

2. 위에 있는 것과 같은 작은 브레드보드를 사용할 경우, 부품 배치 할 공간이 협소할 수 있으니 공간을 미리 잘 확인할 필요 있다.

3.LSB(하위비트)와 MSB(상위비트) 위치를 확인하며 조립한다. 

4.다수의 선을 연결 할 때 헷갈리지 않도록 색으로 구분 해놓았으니 참조해서 조립한다. 
5.다수의 I2C 통신 기기를 연결할 때 SDA 단자는 모두 아두이노의 A4 포트에 연결하고, SCL 단자는 모두 아두이노의 A5단자에 공통으로 연결하면 된다.  이때 각각 고유의 콘트롤 가능한 주소를 가지고 있기 때문에 전혀 문제 되지 않는다)


▶ 프로그램 코드 및 설명 : 


/*  l2C 온도 센서 값을 읽어 LED 막대 그래프와 LCD로 표시 하기  */

#include <Wire.h   // I2C 라이브러리 삽입

#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd (0x27, 16,2);

const int SER=8;

const int LATCH=9;    // LATCH 핀과 LATCH 상수 정의

const int CLK=10;       // Clock 핀과 CLK 상수 정의

int temp_address=72;   // 제조회사 제공 고정 값

int vals[8]={1,3,7,15,31,63,127,255};//레벨메터로 표시할 LED 배열

byte SpecialChar0[8] = {    

  B00010,  

  B00101,

  B00101,

  B00010,

  B00000,

  B00000,

  B00000,

  B00000   };


void setup()  {

 Serial.begin(9600);      lcd.begin();      lcd.clear();

 Wire.begin();               // I2C Wire 객체 시작

 pinMode(SER, OUTPUT);

 pinMode(LATCH, OUTPUT);

 pinMode(CLK, OUTPUT); 

 lcd.createChar(0,SpecialChar0);    //   lcd.print(char(223));

}

void loop ( ) {

 Wire.beginTransmission(temp_address); // I2C 센서와 통신 개시

 Wire.write(0); //센서의 0번 레지스터를 읽겠다는 명령(쓰기모드)

 Wire.endTransmission();  // 전송 완료(0값 전송 종료)

 Wire.requestFrom(temp_address, 1);    // 1바이트 값을 읽음

 while(Wire.available()==0);     // 응답이 올 때까지 대기

 int c=Wire.read();      // 온도를 읽어 변수 c에 저장

 int f=round(c*9.0/5.0 +32.0);

 int graph=map(c, 24, 31, 0,7);  // 온도값을 특정범위로 맵핑시킴

 graph=constrain(graph,0,7);    // 온도값의 범위를 특정함

 digitalWrite(LATCH, LOW);      // LATCHLOW 입력

 shiftOut(SER, CLK, MSBFIRST, vals[graph]);    // 데이터 전송

 digitalWrite(LATCH, HIGH);        // LATCHHIGH 입력

 lcd.setCursor(0,0); 

 lcd.print("tc74 Sensor& 595");

 lcd.setCursor(0,1);

 lcd.print("C:");

 lcd.print(c);

 lcd.write(0);

 lcd.print("C /");

 lcd.print(" F:");

 lcd.print(f);

 lcd.write(0);

 lcd.print("F ");

 Serial.print(c);

 Serial.print("C, ");

 Serial.print(f);

 Serial.println("F. "); 

 delay(500);

}



1. 온도가 올라갈수록 LED 레벨이 높아지도록 프로그래밍 한다.


2. I2C온도 센서를 이용하기 위해서는 <Wire.h> 파일을 선언해야 한다. 만약 헤더파일이 없을 경우 라이브러리 관리창에서 검색하여 추가해 준다.
3. 본인이 가지고 있는 온도 센서의 라벨을 확인하여 고유주소를 정확하게 적어 놓는다. 
 만약 센서가 "TC74A0" 일 경우 int temp_address = 72; 라고 적는다. 

4. LED 레벨미터는 각 비트의 LED만 켜면 되기 때문에 각 비트에 해당하는 값만 미리 배열로 선언해두어 출력하면 간단히 구현할 수 있다.
( "int vals[8]={1,3,7,15,31,63,127,255};  " ) 

5. 주변 온도 환경에 맞추어 레벨미터 값을 8개의 LED 레벨값으로 맵핑한다. ( int graph=map(c, 24, 31, 0,7);  즉, 24도~31도의 온도값을 0~7, 8개의 LED로 치환시킨다(맵핑)  )

6. 온도 표시 문자(‘º’)를 사용자 정의 문자로 표시하는 대신,

 아스키 코드값에 있는 유사한 표시로 대체 하면 코드가 훨씬 간단해 진다. " lcd.print(char(223));"


▶ 실행 결과 :

 (영상은 고화질로 설정하고 전체화면으로 보세요)





▶ 아두이노 파일(다운) :

TC74_LEDmeter_N_LCD.ino




【 LCD관련 에러나 동작이 안 될 때 】

 LCD관련한 라이브러리 에러나 코드 에러에 대한 안내를 드립니다.  

 크게 아래와 같은 두 가지 형태를 보이는데요, 


▶ 1. 코드를 실행하기전 LiquidCrystal_I2C.h: No such file or directory 에러라고 뜨는 경우!


 이때는 LCD 헤더파일이 설치가 되어 있지 않았을 경우입니다.  아예 관련 라이브러리(해더 파일)가 설치 되지 않은 경우입니다. 

해결법은 바로 아래에 첨부한 라이브러리를 다운받아 압축을 풀지 말고 라이브러리 관리 메뉴에서  .zip 라이브러리 추가 메뉴를 이용해서 추가해주세요.

경로 :  아두이노IDE >  스케치 》 라이브러리 포함하기  .zip 라이브러리 추가...  "다운받은 라이브러리파일 선택"


▶ 2. 또 한가지 LCD관련 에러는 ,  no matching function for call to ‘LiquidCrystal_I2C::begin();   라고 뜨는 경우!

 라이브러리 파일도 똑같은 이름이지만, 제공자에 따라 내부코드가 다른 라이브러리인 경우가 종종 있어요.  그래서 만약 제가 실험에서 사용한 라이브러리가 아닌,  같은 이름이지만 다른 라이브러리를 사용할 경우 위와 같은 에러 표시를 낼 수 있습니다.    라이브러리는 분명 설치되어 있지만 그래서 프로그램이 인지는 하는데, 코드에서 사용한 함수 적용이 되지 않을 때 이런 에러를 띄우게 됩니다.    그럼, 해결책은 실험에 사용한(적용한) 그 라이브러리를 다시 설치해 주어야 하는데요,   이 때 중요한 것은 아두이노에서는 똑 같은 이름의 라이브러리가 두 개 설치될 경우 또다른 중복에러를 띄우게 됩니다.   그러니 잘 못 설치된 라이브러리는 찾아서 반드시 삭제하거나,  다른이름으로 임시 변경해 놓거나,  나중에 다른 프로그램에서 사용해야 할 경우를 대비해서 압축해 놓고 원본은 지워 놓으면 됩니다. 


 그럼 기존 라이브러리를 찾아서 삭제를 하거나 하려면 설치된 라이브러리를 찾아야 겠죠? 

찾는 위치는 보통 아래 두 곳입니다.  (윈도우10 기준이며, 윈도우7도 비슷한 위치) 


두 곳으로 나뉘어 설치되는 이유는 아두이노 IDE의 "라이브러리 관리 메니저" 창을 통해 검색으로 설치되는 기본위치가 있고(아두이노 설치된 경로),   '.zip 라이브러리' 추가로 설치되는 위치가(도큐멘트 문서 저장영역-Doucuments) 따로 있어서 그렇습니다. 


< .zip 라이브러리 추가 메뉴에서 추가한 라이브러리 설치 위치 >

 1. C:\Users\유저-이름\Documents\Arduino\libraries    


 <라이브러리 관리 메뉴창에서 라이브러리 직접 검색으로 설치된 라이브러리 위치 >

 2. C:\Program Files (x86)\Arduino\libraries


위 두 곳에서 찾아서 삭제를 하세요.   (그냥, 폴더 째로 삭제하면 됩니다.)

 그리고 아래 첨부하는 라이브러리를 다운받아  압축파일 그대로 .zip 라이브러리 추가 메뉴로 추가해 주세요. 

만약, 압축파일 그대로 추가할 때 에러가 난다면,  앞축을 풀고  xxxxx.h 가 있는 폴더만 "C:\Users\유저-이름\Documents\Arduino\libraries" 경로에 붙여넣기 하면 됩니다.    이때 아두이노 스케치 IDE는 모두 닫고 재실행 해야 적용 됩니다.


 본 예제에서 사용한 라이브러리 다운로드 받기 :

Arduino-LiquidCrystal-I2C-library-master.zip



  ※ 중요! : 여기에서 제시된 코드로 작성할 경우 반드이 이 라이브러리로 설치하셔야 합니다.   만약, 여러분의 PC에 똑 같은 이름의 라이브러리가 있을 경우 반드시 삭제를 하거나 압축해서 백업을 해 놓으면 충돌이 일어나지 않습니다.!!!

반응형
반응형

【 아두이노 센서#15】 TC74 센서 74HC595 응용회로 실습


 지난 시간 I2C 통신 방식을 이용하는 LCD에 TC74 온도 센서의 온도 값을 표시해 보았다.(TC74 to i2c LCD강좌 보기)  

 이번 시간은 지난시간 활용 했던 시프트 레지스터(74HC595)를 이용해서 TC74센서의 온도 값을 레벨미터 형태로 표시해볼 것이다. 


▶ 선수 학습 :

  1. 시프트 레지스터 실습  강좌보기클릭☜

  2. TC74온도 센서 활용하기1  강좌보기클릭☜



▶ 실습에 사용되는 온도센서 자료 ( TC74 ) 


《 DIP 타입 





▶ 실습 목표 :  


1. TC74 센서의 온도 값을 8bit 레벨값(LED)으로 표시할 수 있다. 


2. 시프트 레지스터를 온도센서와 결합해보는 활용법을 익힐 수 있다. 


▶ 실습 회로도면 :

  (이미지 클릭하면 확대 가능)





▶ 실습 절차  : 

1. 위 회로를 보고 각 부품과 보드를 연결한다. 

2. 위에 있는 것과 같은 작은 브레드보드를 사용할 경우, 부품 배치 할 공간이 협소할 수 있으니 공간을 미리 잘 확인할 필요 있다.

3.LSB(하위비트)와 MSB(상위비트) 위치를 확인하며 조립한다. 

4.다수의 선을 연결 할 때 헷갈리지 않도록 색으로 구분 해놓았으니 참조해서 조립한다. 


▶ 프로그램 코드 및 설명 : 


/*  l2C 온도 센서 값을 읽어 LED 막대 그래프로 표시 하기  */

#include <Wire.h   // I2C 라이브러리 삽입

const int SER=8;

const int LATCH=9;    // LATCH 핀과 LATCH 상수 정의

const int CLK=10;       // Clock 핀과 CLK 상수 정의

int temp_address=72;   // 제조회사 제공 고정값

int vals[8]={1,3,7,15,31,63,127,255}; //그래프로 표시할 LED배열선언

void setup()  {

 Serial.begin(9600);

 lcd.begin();      lcd.clear();

 Wire.begin();               // I2C Wire 객체 시작

 pinMode(SER, OUTPUT);

 pinMode(LATCH, OUTPUT);

 pinMode(CLK, OUTPUT);

}


void loop() {

 Wire.beginTransmission(temp_address); // I2C 센서와 통신 개시

 Wire.write(0); //센서의 0번 레지스터를 읽겠다는 명령(쓰기모드)

 Wire.endTransmission();  // 전송 완료(0값 전송 종료)

 Wire.requestFrom(temp_address, 1);    // 1바이트 값을 읽음

 while(Wire.available()==0);     // 응답이 올 때까지 대기

 int c=Wire.read();      // 온도를 읽어 변수 c에 저장

 int f=round(c*9.0/5.0 +32.0);

 int graph=map(c, 24, 31, 0,7);     // 그래프 패턴 설정

 graph=constrain(graph,0,7); 

 digitalWrite(LATCH, LOW);          // LATCHLOW 입력

 shiftOut(SER, CLK, MSBFIRST, vals[graph]);    // 데이터 전송

 digitalWrite(LATCH, HIGH);        // LATCHHIGH 입력

 Serial.print(c);

 Serial.print("C, ");

 Serial.print(f);

 Serial.println("F. ");

 delay(500);  

}


1. 온도가 올라갈수록 LED 레벨이 높아지도록 프로그래밍 한다.


2. I2C온도 센서를 이용하기 위해서는 <Wire.h> 파일을 선언해야 한다. 만약 헤더파일이 없을 경우 라이브러리 관리창에서 검색하여 추가해 준다.
3. 본인이 가지고 있는 온도 센서의 라벨을 확인하여 고유주소를 정확하게 적어 놓는다. 
 만약 센서가 "TC74A0" 일 경우 int temp_address = 72; 라고 적는다. 

4. LED 레벨미터는 각 비트의 LED만 켜면 되기 때문에 각 비트에 해당하는 값만 미리 배열로 선언해두어 출력하면 간단히 구현할 수 있다.
( "int vals[8]={1,3,7,15,31,63,127,255};  " ) 

5. 주변 온도 환경에 맞추어 레벨미터 값을 8개의 LED 레벨값으로 맵핑한다. ( int graph=map(c, 24, 31, 0,7);  즉, 24도~31도의 온도값을 0~7, 8개의 LED로 치환시킨다(맵핑)  )



▶ 실행 결과 :

 (영상은 고화질로 설정하고 전체화면으로 보세요)




▶ 아두이노 파일(다운) :

TC74TempLEDmeter.ino



I2C 스캐너 프로그램 :  

 I2Cscaner.ino



반응형
반응형

【 아두이노 센서#14】 TC74 온도센서값 RGB LCD로 출력하기 



 이번 시간은 I2C 통신 방식을 이용하는 TC74 온도 센서와 I2C 방식의 LCD를 동시에 다루어 볼 것이다. 온도 값을 상중하 영역으로 나누어 각 구간에 따라 LED 색을 다르게 출력 해 보려 한다. (예, 낮은 온도구간은 블루, 중간의 최적 온도 구간은 그린, 고온 구간은 레드)  I2C 통신 방식의 부품을 사용하면, 적은 통신선으로 제어가 가능하기 때문에, 아두이노 포트에도 여유가 있게 되어 다수개의 I2C 통신 장치들을 연결하여 컨트롤 하는 것에도 전혀 문제가 없는 장점이 있다.


▶ 실습에 사용되는 온도센서 자료 ( TC74 ) 


《 DIP 타입 


《 SMD 타입 




[ TC74 상세 스팩 ]




[ TC74 고유 주소 파악하기 ]



위 제조사에서 제공하는 스팩을 보면 " Address Options : " 이라는 것이 있다. 

만약 구입한 온도센서 모델이 아래 이미지 처럼 " TC74A0 " 라고 되어 있을 경우,

" A0 = 1001 000 "  이라고 되어 있는데,  이를 2진수 값으로 생각하고( 1001000 ),   

10진 값으로 계산 해보면 ,

  =  1x 2^6 + 1x 2^3   

  = 1 x 64  + 1 x 8

  = 72     가 된다.


즉 10진값 '72' 가 이 센서의 고유 주소가 된다. 

16진 값으로는 0x48 이 된다.     이주소를 기억했다가 프로그래밍의 해당부분에 입력하면 된다. 




--------------------------------------------------


만약 구입한 온도센서 모델이 아래 이미지 처럼 " TC74A5 " 라고 되어 있을 경우,

위의 상세 스팩을 참고하면 " A5 = 1001 101 "  이라고 되어 있는데,  이를 2진 값으로 생각하고( 1001101 ),   

10진 값으로 계산 해보면 ,

  =  (1 x 2^6) + (1 x 2^3) + (1 x 2^2)  +  (1 x 2^0)   

  = 1 x 64  + 1 x 8 + 1 x 4 + 1 x 1

  = 77  이 된다.


즉 10진값 '77'  혹은 16진값으로 0x4D가 이 센서의 고유 주소가 된다. 







I2C 통신을 위해서는 SDA핀과 SCL(SCLK)핀에 풀업 저항을 달아서 연결해야 통신이 제대로 이루어 진다.   (풀업 저항 값으로는 4.7K가 적당하며,  여의치 않을 경우 1K~10KΩ 사이의 저항값 사용가능)


※ 지난 시간 학습한 I2C 스캐너 프로그램 (설명)을 통하여도 주소값을 확인 해낼 수 있다. 

[ I2C 스캐너 프로그램 ]

[ 실습에 사용될 RGB LED(3색LED) 구조 및 사양 ]


( ※ 주의: RGB LED의 순서가 제조사별로 다를 수 있으니 멀티테스터 혹은 3V 이하의 낮은 전압을 살짝 연결하여 확인하는 것이 필요하다 )

 

RGB LED 는 그림에서 보듯 3가지 색 LED가 한 몸체에 구성되어 있다고 이해하면 쉽다.

다만, 단자하나는 공통단자로 연결되어 있고, LED의 마이너스(-) 극이 공통단자로 되면 Common 케소드(음극),    플러스(+)극이 공통단자로 되면 Common 애노드(양극)이 된다. (통상적으로 부품의 다리 길이가 제일 긴 단자가 공통단자다)


따라서 부품을 사용하기전에 자신의 부품이 공통단자가 캐소드(음극) 타입인지? ,  애노드(양극) 타입인지?  반드시 확인해야 하여야 한다. 그렇지 않으면 +, - 방향이 반대가 되어 LED가 켜지지 않게 된다.   단자의 색상 위치도 그림과 순서가 다를 수 있으니 멀티테스터기 혹은? 3V 정도의 낮은 전원을 가하여 색의 위치를 사전에 확인하면 좋을 것이다. 



▶ 실습 목표 :  


1. TC74 센서의 온도 값을 I2C LCD로 출력해 보자.


2. I2C LCD 사용에 익숙에 익숙하도록 컨트롤 해본다.


3. 여러개의 I2C 통신을 사용한 모듈을 제어 해 볼 수 있다. 


▶ 실습 회로도면 :

  (이미지 클릭하면 확대 가능)





[ 회로 연결 정보 ]


※ 일반적으로 TC74 를 구입할 때 주소를 구분해서 구매할 필요는 없으나, 

하나의 시스템에서 여러개의 온도센서를 가지고 활용하려 할 때는 고유주소가 다른 센서를 사용해야 각각의 제어가 가능하니 참조하길 바란다. 




▶ 실습 절차  : 

1. 위 회로를 보고 각 부품과 보드를 연결한다. 

2. L기본적으로 I2C 통신을 위한 PIN(SDA, SCL)에는 풀업 저항을 달아 주어야 통신이 잘 이루어 진다.  

3.연결이 완성되면 프로그램을 아두이노 보드에 로딩시키고 시리얼 모니터 창을 열어 출력값을 확인 해본다. 

4.온도 구간을 설정 할 때 현재의 주변 환경에 따라, 저온 < 중온 < 고온 구간을 설정해본다. 다만, 정상 작동 확인을 위해 쉽게 변화를 감지할 수 있는 영역으로 좁게 설정해서 테스트 해보고, 잘 되면 희망 설정 값으로 바꾸어 놓으면 좋을 것이다. 



▶ 프로그램 코드 및 설명 : 


#include <Wire.h>                          // I2C 라이브러리 삽입

#include <LiquidCrystal_I2C.h> // I2C LCD 라이브러리 삽입

LiquidCrystal_I2C lcd (0x27, 16,2);

int tempAddress=72;               // TC74 센서의 고유 주소 값(10진 값)

const int LOWER_BOUND=26;  //온도 하한 값 정의

const int UPPER_BOUND=30;    //온도 상한 값 정의

const int RLED =9; const int GLED =10; const int BLED =11;

byte SpecialChar0[8] = { 

B00010,  

B00101,  

B00101,  

B00010,

B00000,  

B00000,  

B00000,  

B00000   };


void setup()  {

  Serial.begin(9600);

  lcd.begin();

  lcd.clear();

  lcd.createChar(0,SpecialChar0);

  pinMode(RLED, OUTPUT);  // RLED를 출력으로 지정

  pinMode(GLED, OUTPUT);  // GLED를 출력으로 지정

  pinMode(BLED, OUTPUT);  // BLED를 출력으로 지정

  Wire.begin();                        // I2C Wire 객체 시작

void loop()  {

Wire.beginTransmission(tempAddress); // I2C 센서와 통신 개시

Wire.write(0); //I2C 센서의 0번 레지스터를 읽겠다는 쓰기모드 명령

Wire.endTransmission();

Wire.requestFrom(tempAddress, 1); // I2C센서에서 1바이트값 읽음

while(Wire.available()==0);    // 응답이 올 때까지 대기

int TempC = Wire.read();            // 온도(섭씨)를 읽어 변수에 저장

int TempF = round(TempC * 9.0 / 5.0 + 32.0);   // 섭씨를 화씨로

Serial.print(TempC);

Serial.print("C  /  ");

Serial.print(TempF);

Serial.println("F");       

delay(500);

lcd.setCursor(0,0); 

lcd.print("tc74 I2C Sensor!");

lcd.setCursor(0,1);

lcd.print("C:");

lcd.print(TempC);

lcd.write(0);

lcd.print("C /");

lcd.print(" F:");

lcd.print(TempF);

lcd.write(0);     

lcd.print("F ");

if(TempC < LOWER_BOUND) {  //하위 경계선 값 이하이면 BlueLED ON  

    digitalWrite(RLED,LOW);

    digitalWrite(GLED,LOW);

    digitalWrite(BLED,HIGH);   }

  else if (TempC > UPPER_BOUND){ //상위 경계선 값 이하 RedLED ON

    digitalWrite(RLED,HIGH);

    digitalWrite(GLED,LOW);

    digitalWrite(BLED,LOW);     }

  else {                                                   // 경계선 사이 값 이면 Green LED ON

    digitalWrite(RLED,LOW);

    digitalWrite(GLED,HIGH);

    digitalWrite(BLED,LOW);       

}



1. I2C온도 센서를 이용하기 위해서는 <Wire.h> 파일을 선언해야 한다. 만약 헤더파일이 없을 경우 라이브러리 관리창에서 검색하여 추가해 준다.
2. 본인이 가지고 있는 온도 센서의 라벨을 확인하여 고유주소를 정확하게 적어 놓는다. 
 만약 센서가 "TC74A0" 일 경우 int temp_address = 72; 라고 적는다. 

3. TC74 온도 센서는 기본적으로 섭씨 온도값을 출력 하므로 화씨 온도값을 출력하고자 한다면, 썹씨를 화씨로 변환하는 공식을 사용하면 쉽게 출력 할 수 있다. 

4.  I2C통신용 모듈은 모두 아두이노의 A4,A5 포트를 이용해야 하고, 장치가 여러개일 경우에도 함께 연결 하면 정상 작동 시킬 수 있다.


※ 섭씨온도를 화씨온도로 변환 하는 식  [  (섭씨 x 9.0) / 5.0 + 32.0  ] 



▶ 실행 결과 :

 (영상은 고화질로 설정하고 전체화면으로 보세요)




▶ 아두이노 파일(다운) :

TC74_temp_to_LCD.ino


I2C 스캐너 프로그램 :  

I2Cscaner.ino




【 LCD관련 에러나 동작이 안 될 때 】

 LCD관련한 라이브러리 에러나 코드 에러에 대한 안내를 드립니다.  

 크게 아래와 같은 두 가지 형태를 보이는데요, 


▶ 1. 코드를 실행하기전 LiquidCrystal_I2C.h: No such file or directory 에러라고 뜨는 경우!


 이때는 LCD 헤더파일이 설치가 되어 있지 않았을 경우입니다.  아예 관련 라이브러리(해더 파일)가 설치 되지 않은 경우입니다. 

해결법은 바로 아래에 첨부한 라이브러리를 다운받아 압축을 풀지 말고 라이브러리 관리 메뉴에서  .zip 라이브러리 추가 메뉴를 이용해서 추가해주세요.

경로 :  아두이노IDE >  스케치 》 라이브러리 포함하기  .zip 라이브러리 추가...  "다운받은 라이브러리파일 선택"


▶ 2. 또 한가지 LCD관련 에러는 ,  no matching function for call to ‘LiquidCrystal_I2C::begin();   라고 뜨는 경우!

 라이브러리 파일도 똑같은 이름이지만, 제공자에 따라 내부코드가 다른 라이브러리인 경우가 종종 있어요.  그래서 만약 제가 실험에서 사용한 라이브러리가 아닌,  같은 이름이지만 다른 라이브러리를 사용할 경우 위와 같은 에러 표시를 낼 수 있습니다.    라이브러리는 분명 설치되어 있지만 그래서 프로그램이 인지는 하는데, 코드에서 사용한 함수 적용이 되지 않을 때 이런 에러를 띄우게 됩니다.    그럼, 해결책은 실험에 사용한(적용한) 그 라이브러리를 다시 설치해 주어야 하는데요,   이 때 중요한 것은 아두이노에서는 똑 같은 이름의 라이브러리가 두 개 설치될 경우 또다른 중복에러를 띄우게 됩니다.   그러니 잘 못 설치된 라이브러리는 찾아서 반드시 삭제하거나,  다른이름으로 임시 변경해 놓거나,  나중에 다른 프로그램에서 사용해야 할 경우를 대비해서 압축해 놓고 원본은 지워 놓으면 됩니다. 


 그럼 기존 라이브러리를 찾아서 삭제를 하거나 하려면 설치된 라이브러리를 찾아야 겠죠? 

찾는 위치는 보통 아래 두 곳입니다.  (윈도우10 기준이며, 윈도우7도 비슷한 위치) 


두 곳으로 나뉘어 설치되는 이유는 아두이노 IDE의 "라이브러리 관리 메니저" 창을 통해 검색으로 설치되는 기본위치가 있고(아두이노 설치된 경로),   '.zip 라이브러리' 추가로 설치되는 위치가(도큐멘트 문서 저장영역-Doucuments) 따로 있어서 그렇습니다. 


< .zip 라이브러리 추가 메뉴에서 추가한 라이브러리 설치 위치 >

 1. C:\Users\유저-이름\Documents\Arduino\libraries    


 <라이브러리 관리 메뉴창에서 라이브러리 직접 검색으로 설치된 라이브러리 위치 >

 2. C:\Program Files (x86)\Arduino\libraries


위 두 곳에서 찾아서 삭제를 하세요.   (그냥, 폴더 째로 삭제하면 됩니다.)

 그리고 아래 첨부하는 라이브러리를 다운받아  압축파일 그대로 .zip 라이브러리 추가 메뉴로 추가해 주세요. 

만약, 압축파일 그대로 추가할 때 에러가 난다면,  앞축을 풀고  xxxxx.h 가 있는 폴더만 "C:\Users\유저-이름\Documents\Arduino\libraries" 경로에 붙여넣기 하면 됩니다.    이때 아두이노 스케치 IDE는 모두 닫고 재실행 해야 적용 됩니다.


 본 예제에서 사용한 라이브러리 다운로드 받기 :

Arduino-LiquidCrystal-I2C-library-master.zip




  ※ 중요! : 여기에서 제시된 코드로 작성할 경우 반드이 이 라이브러리로 설치하셔야 합니다.   만약, 여러분의 PC에 똑 같은 이름의 라이브러리가 있을 경우 반드시 삭제를 하거나 압축해서 백업을 해 놓으면 충돌이 일어나지 않습니다.!!!


반응형