///
Search
🛵

10주차 LCD, Relay, Sound Sensor

LCD 패널과 i2C 센서를 활용한 화면 출력

Wemos d1 r1 보드 같은 경우에는 wifi센서가 내장되면서 포트 A1~A4까지 사용중이다.
그리고 I2C통신을 활용하는 센서들은 A4, A5 포트를 쓰기 때문에 기존 아두이노 보드를 사용해서 실습을 해야한다.

소스코드

#include <Wire.h> #include <LiquidCrystal_I2C.h> // Set the LCD address to 0x27 for a 16 chars and 2 line display LiquidCrystal_I2C lcd(0x27, 16, 2); void setup() { // initialize the LCD lcd.begin(); // Turn on the blacklight and print a message. lcd.backlight(); lcd.print("Hello, world!"); } void loop() { // Do nothing here... }
Arduino
복사
연결방법
아두이노 i2c 센서
5V VCC
GND GND
A4 SDA
A5 SCL
당연히 정품 아두이노에 제공된 wifi 센서를 달아서 써도 되기는 하는데 그럴 경우 초기설정단계에서 많이 복잡할 수 있으니 참고하길 바란다. 되도록이면 LCD를 쓸꺼면 Wifi를 안쓰거나 wifi를 쓰면 lcd를 안쓰는걸 추천한다. (시간대비 효율성이 떨어지는 작업들이 많음)
당연히 이것도 library를 설치를 해야한다. 상단의 툴에서 라이브러리 추가로 아래의 라이브러리를 추가한다.
상단처럼 설치하면 잘 되는 컴퓨터도 있는 반면 안되는 컴퓨터도 있다.
LCD관련 에러중 대표정인건 no matching function for call to ‘LiquidCrystal_I2C::begin();   라고 뜨는 경우!
라이브러리 파일도 똑같은 이름이지만, 제공자에 따라 내부코드가 다른 라이브러리인 경우가 종종 있기에 그렇다.
그래서 만약 제가 실험에서 사용한 라이브러리가 아닌,  같은 이름이지만 다른 라이브러리를 사용할 경우 위와 같은 에러 표시를 낼 수 있다.
라이브러리는 분명 설치되어 있지만 그래서 프로그램이 인지는 하는데, 코드에서 사용한 함수 적용이 되지 않을 때 이런 에러를 띄우게 됩니다.
그럼, 해결책은 실험에 사용한(적용한) 그 라이브러리를 다시 설치해 주어야 하는데요.
이 때 중요한 것은 아두이노에서는 똑 같은 이름의 라이브러리가 두 개 설치될 경우 또다른 중복에러를 띄우게 됩니다.
그러니 잘 못 설치된 라이브러리는 찾아서 반드시 삭제하거나,  다른이름으로 임시 변경해 놓거나,  나중에 다른 프로그램에서 사용해야 할 경우를 대비해서 압축해 놓고 원본은 지워 놓으면 됩니다.
그럼 기존 라이브러리를 찾아서 삭제를 하거나 하려면 설치된 라이브러리를 찾아야 겠죠? 찾는 위치는 보통 아래 두 곳입니다.  (윈도우10 기준이며, 윈도우7도 비슷한 위치) 두 곳으로 나뉘어 설치되는 이유는 아두이노 IDE의 "라이브러리 관리 메니저" 창을 통해 검색으로 설치되는 기본위치가 있고(아두이노 설치된 경로),   '.zip 라이브러리' 추가로 설치되는 위치가(도큐멘트 문서 저장영역-Doucuments) 따로 있어서 그렇습니다.

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

1.
C:\Users\유저-이름\Documents\Arduino\libraries
2.
<라이브러리 관리 메뉴창에서 라이브러리 직접 검색으로 설치된 라이브러리 위치 >
3.
C:\Program Files (x86)\Arduino\libraries
위 두 곳에서 찾아서 삭제를 하세요.   (그냥, 폴더 째로 삭제하면 됩니다.)
그리고 아래 첨부하는 라이브러리를 다운받아  압축파일 그대로 .zip 라이브러리 추가 메뉴로 추가해 주세요.
만약, 압축파일 그대로 추가할 때 에러가 난다면,  앞축을 풀고  xxxxx.h 가 있는 폴더만 "C:\Users\유저-이름\Documents\Arduino\libraries" 경로에 붙여넣기 하면 됩니다.    이때 아두이노 스케치 IDE는 모두 닫고 재실행 해야 적용 됩니다.

라이브러리 저장 경로

LiquidCrystal Library

LiquidCrystal_I2C.zip
7.2KB
라이브러리 설정까지 끝나고 센서 연결 끝나고 코드 작성하고 포트 다시 등록하고 보드 다시 등록하고 LiquidCrystal Library 등록까지 완료되면 바로 다음처럼 될 것이다.
코드가 업로드는 되었는데 화면이 안보이면 LCD 뒷편에 있는 + 모양 홈이 있는데 그게 밝기 조절 장치이니 드라이버로 조정하길 바란다!

릴레이 (전기조심)

특별한 라이브러리는 없습니다.
간단한 예시를 보면
위의 사진에서 LED 측에 물려있는 부분을 붙였다가 때었다가 하는 작업이라고 이해하면 쉽다.
좀더 이해하기 쉽도록 아래의 예시를 보여준다.

초기세팅

아두이노 릴레이
5V +
GND -
D15/SCL/D3 S
릴레이 케이블
COM 케이블 단면
NO 케이블 단면

예시화면 (1)

소스코드

int Relaypin = D3; //D15/SCL/D3 핀에 연결 int Switch = 1; void setup() { pinMode(Relaypin,OUTPUT); // 릴레이를 출력으로 설정 pinMode(Switch,INPUT_PULLUP); // 스위치를 입력으로 설정 } void loop() { while (1) if(Switch==1) // 스위치 변수가 1이면 ON { digitalWrite(Relaypin,HIGH); // 1채널 릴레이 ON delay(1000); Switch = 0; } else // 스위치를 누르지 않으면 { digitalWrite(Relaypin,LOW); // 1채널 릴레이 OFF delay(1000); Switch = 1; } }
Arduino
복사

실행화면

실행하면 1초 간격으로 꺼졌다가 켜졌다가 한다.

사운드 센서

연결방법

아두이노 사운드 센서
A0 A0
5V +
GND G

소스코드

//int led = 13; int threshold = 161; //감도조절 부분. 자신의 센서에 맞게 적절히 조절필요. int volume; void setup() { Serial.begin(9600); // 시리얼모니터 출력을 위하여. // pinMode(led, OUTPUT); } void loop() { volume = analogRead(A0); // Analog PIN A0에서 입력값을 읽음. //디버그시 시리얼모니터에 감도표시를 위하여 아래부분 주석해제 필요. Serial.println(volume); delay(100); //소리가 threashold 와 같거나 크면 LED ON // if(volume>=threshold){ // digitalWrite(led, HIGH); //Turn ON Led // } // else{ // digitalWrite(led, LOW); // Turn OFF Led // } }
Arduino
복사
센서 보면 일자드라이버로 조절할 수 있는 장치가 있다. 이걸로 센서 값을 바꿀수 있다.
추가로 생각보다 센서가 예민하지 않는것 같다 이점 유념하길 바란다.

실행화면