오늘이라도
[Arduino] 6. LCD 글자 이동, 초 출력, 깜빡이기 / 입력한 글자 출력 / 초음파 센서 연동 / 블루투스 모듈 연결, 설정 / 블루투스로 LED 켜기 본문
취업성공패키지 SW 개발자 교육/사물 인터넷(IoT)
[Arduino] 6. LCD 글자 이동, 초 출력, 깜빡이기 / 입력한 글자 출력 / 초음파 센서 연동 / 블루투스 모듈 연결, 설정 / 블루투스로 LED 켜기
upcake_ 2020. 4. 27. 21:09반응형
https://github.com/upcake/Class_Examples
교육 중에 작성한 예제들은 깃허브에 올려두고 있습니다.
gif 파일은 클릭해서 보는 것이 정확합니다.
- LCD : 글자 이동, 초 출력, 깜빡이기 -
#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); // 안되면 0x3F로 시도해본다.
//LiquidCrystal_I2C lcd(0x3F, 16, 2);
void setup()
{
// initialize the LCD
lcd.begin();
// Turn on the blacklight and print a message.
lcd.backlight();
lcd.setCursor(0,0);
lcd.print("Hello, world!");
}
void loop()
{
// LCD 패널의 구성은 16x2의 테이블로 구성되어 있음, (0, 0) ~ (15, 1)
// 글자 왼쪽 끝으로 이동
for (int posCnt = 0; posCnt < 13; posCnt++) { // 움직일 글자 수 13
lcd.scrollDisplayLeft();
delay(150);
}
// 글자 오른쪽 끝으로 이동
for (int posCnt = 0; posCnt < 29; posCnt++) { // 글자 수 13 + 칸 수 16
lcd.scrollDisplayRight();
delay(150);
}
// 글자 원위치
for (int posCnt = 0; posCnt < 16; posCnt++) { // 칸 수 16
lcd.scrollDisplayLeft();
delay(150);
}
// 초 출력
lcd.setCursor(0, 0);
lcd.print("Hello, world!");
lcd.setCursor(0, 1);
lcd.print(millis() / 1000);
// 글자 깜빡이게 하기
for(int i = 0; i < 10; i++) {
lcd.clear();
delay(100);
lcd.setCursor(0, 0);
lcd.print("Hello, world!");
delay(100);
}
}
▲1 - 1. LCD : 문자 이동, 초 출력, 깜빡이기 / 코드
- LCD : 입력한 문자 출력 -
#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); // 안되면 0x3F로 시도해본다.
//LiquidCrystal_I2C lcd(0x3F, 16, 2);
void setup()
{
Serial.begin(9600);
lcd.begin();
lcd.backlight();
lcd.setCursor(0,0);
}
void loop()
{
while(Serial.available()) {
lcd.write(Serial.read());
// lcd.print(Serial.read()); // 아스키 코드로 출력되므로 write 메서드를 쓴다.
}
}
▲2 - 1. LCD : 입력한 문자 출 / 코드
- LCD : 초음파 센서 연동, 거리 출력 -
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
int trig = 12;
int echo = 13;
// Set the LCD address to 0x27 for a 16 chars and 2 line display
LiquidCrystal_I2C lcd(0x27, 16, 2); // 안되면 0x3F로 시도해본다.
//LiquidCrystal_I2C lcd(0x3F, 16, 2);
void setup() {
Serial.begin(9600);
lcd.begin();
lcd.backlight();
lcd.setCursor(0,0);
pinMode(trig, OUTPUT);
pinMode(echo, INPUT);
}
void loop() {
digitalWrite(trig, HIGH);
delay(10);
digitalWrite(trig, LOW);
int duration = pulseIn(echo, HIGH);
int distance = (duration/2) / 29.1;
Serial.print(distance);
Serial.println("cm");
delay(100);
if(distance > 0 && distance <= 50) {
lcd.print(distance);
lcd.print("cm");
delay(1000);
lcd.clear();
lcd.setCursor(0, 0);
}
}
▲3 - 1. LCD : 초음파 센서 연동, 거리 출력 / 코드
- 블루투스 : 모듈 연결, 설정 -
// 시리얼모니터 열고
// AT 엔터 -> 응답 OK
// AT+NAMEXXXXXX -> 응답 OKsetname : 이름변경
// AT+PIN1234 -> 응답 OKsetPIN : 비밀번호변경
// AT+BAUD4 -> 응답 OK9600 : 통신속도변경
// 1 -> 1200 2 -> 2400 3 -> 4800 4 -> 9600 5 ->19200 6 -> 38400 7 -> 57600 8 -> 115200
// AT+ROLE=S -> 응답 OK+ROLE:S => M: Master S: Slave (기본 SLAVE 변경안해줘도 됨)
#include <SoftwareSerial.h>
//우노보드의 RX TX 지정
SoftwareSerial bluetooth(10, 11); // bluetooth(RX, TX)
void setup()
{
Serial.begin(9600);
bluetooth.begin(9600);
}
void loop()
{
if (bluetooth.available())
{
Serial.write(bluetooth.read());
}
if (Serial.available())
{
bluetooth.write(Serial.read());
}
}
▲4 - 1. 블루투스 : 모듈 연결, 설정 / 코드
- 블루투스 : 모듈 연결, 설정 -
#include <SoftwareSerial.h>
SoftwareSerial BTSerial(10, 11);
int red = 7;
int green = 5;
void setup() {
BTSerial.begin(9600);
pinMode(red, OUTPUT);
pinMode(green, OUTPUT);
}
void loop() {
if(BTSerial.available())
{
char bt;
bt = BTSerial.read();
if(bt == 'a')
digitalWrite(red, HIGH);
if(bt == 'b')
digitalWrite(green, HIGH);
if(bt == 'c')
digitalWrite(red, LOW);
if(bt == 'd')
digitalWrite(green, LOW);
}
}
▲5 - 1. 블루투스 : 원격으로 LED 켜기 / 코드
- 플레이 스토어의 아두이노 - 블루투스 컨트롤 애플리케이션을 이용한다.
반응형
'취업성공패키지 SW 개발자 교육 > 사물 인터넷(IoT)' 카테고리의 다른 글
[Arduino] 8. RC카로 풍선 터뜨리기 (0) | 2020.04.29 |
---|---|
[Arduino] 7. RC카 조립 (0) | 2020.04.28 |
[Arduino] 5. 서보 모터, DC 모터, LCD (0) | 2020.04.24 |
[Arduino] 4. 스트라이크 게임, 조도 센서, 피에조 스피커, 초음파 거리 센서, 거리에 따라 소리 출력하기 (0) | 2020.04.23 |
3. 시리얼 통신, begin, available, read, print, parseInt, randomSeed, random, 메서드 이용 (0) | 2020.04.22 |