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 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
복사
•
센서 보면 일자드라이버로 조절할 수 있는 장치가 있다. 이걸로 센서 값을 바꿀수 있다.
•
추가로 생각보다 센서가 예민하지 않는것 같다 이점 유념하길 바란다.