LCD를 활용한 특수문자 표시 및 알람 시계 만들기

Slides:



Advertisements
Similar presentations
10장. 시기별 학급경영 11조 염지수 이 슬 권용민 신해식.
Advertisements

일본 근세사. (1) 에도막부의 개창 ( ㄱ ) 세키가하라의 전투 (1600) - 히데요시의 사후 다섯 명의 다이로 ( 大老 ) 가운데 최대 영지 (250 만석 ) 를 보유하고 있던 도쿠가와 이에야스가 급부상. 이에 이에야스와 반목해 온 이시다 미쓰나리 ( 石田三成 ),
아니마 / 아니무스 송문주 조아라. 아니마 아니마란 ? 남성의 마음속에 있는 여성적 심리 경향이 인격화 한 것. 막연한 느낌이나 기분, 예견적인 육감, 비합리적인 것에 대 한 감수성, 개인적인 사랑의 능력, 자연에 대한 감정, 그리.
대구가톨릭대학교 체육교육과 06 학번 영안중학교 체육교사 신웅섭 반갑습니다. 반야월초등학교 축구부 대륜중학교 축구부 대륜고등학교 대구가톨릭대학교 차석 입학 대구가톨릭대학교 수석 졸업 2014 년 경북중등임용 체육 차석 합격 영안중학교 체육교사 근무 소개.
2013 년 목 차 용어의 정의 위기경보 수준 국가 생물테러 대응 체계도 반 · 팀별 소방의 임무.
마을과 함께 꿈을 키우는 행복한 경기교육 2016 경기꿈의학교 사업비 지침.
컴퓨터정보공학과 권춘우 ARDUINO (센서활용프로그래밍/ICT융합실무) - 3 Digit 7 Segment LED - RGB LED(3 Color) - LCD 디스플레이.
아두이노 활용 SW코딩 시작하기 아두이노 소개 개발툴 다운로드 USB 드라이버 설치하기 개발툴 실행하기
2015년 2학기 PULSE 4 전자물리실험 11주차 – 초음파 거리 측정 실험 - DSU 메카트로닉스 융합공학부 -
목차 한국기술교육대학교 강사: 김 영 준 ㈜헬로앱스 1일차 아두이노 제어 실습
컬러 LED바 이해하기 목차 재료준비 및 브레드 보드 배선 구성하기 컬러 LED바 이해 및 프로그램 실습 응용 작품 만들기.
CHAPTER 1. INTRODUCTION.
아두이노 프로그래밍 5일차 – Part2 지그비 통신 강사: 김영준 목원대학교 겸임교수
블루투스로 모터 펌프 제어하기 앱인벤터와 스마트팜 키트를 활용한 ㈜헬로앱스
네트워크 스캔하기 WiFi 시리얼 보드 활용가이드 김영준 헬로앱스 (
12. 아두이노와 센서를 이용한 제어 - 스마트 폰으로 제어하는 아두이노 -.
LCD 명령어 이해하기 목차 재료준비 및 브레드 보드 배선 구성하기 LCD 명령어 이해 및 기본 실습 응용 작품 만들기.
제 3 장 아두이노 무조건 따라하기 - 스마트 폰으로 제어하는 아두이노 -.
11. 아두이노를 이용한 Text LCD 제어 - 스마트 폰으로 제어하는 아두이노 -.
시간대별 점등제어 계획 철새 비도래시기 춘계[3~5월] / 하계[6~8월] / 추계[9~10월]
LCD를 활용한 탁상 시계 만들기 재료준비 및 브레드 보드 배선 구성하기 LCD를 활용한 탁상 시계 만들기 응용 작품 만들기
아두이노 프로그래밍 2일차 – Part4 아날로그 키패드 활용하기 강사: 김영준 목원대학교 겸임교수.
캡스톤 물리 음성 인식을 통한 무드 등 지금은 6시 55분 조.
보광병원 마취통증의학과장 양재영 아두이노를 이용한 . 나만의 온습도계 만들기 보광병원 마취통증의학과장 양재영
아두이노 프로그래밍 (응용과정) 3일차 – Part2 LCD 활용하기 강사: 김영준 목원대학교 겸임교수.
아두이노 프로그래밍 2일차 – Part2 PSD 거리센서 강사: 김영준 목원대학교 겸임교수.
아두이노 프로그래밍 2일차 – Part2 PSD 거리센서 강사: 김영준 목원대학교 겸임교수
9. 아두이노를 이용한 FND 제어 - 스마트 폰으로 제어하는 아두이노 -.
아두이노 프로그래밍 3일차 – Part1 컬러 LED바 활용하기 강사: 김영준 목원대학교 겸임교수
OpenGL Project 조민정 장선례.
2015년 2학기 PULSE 4 전자물리실험 10 – 조도 센서와 소리 발생 - DSU 메카트로닉스 융합공학부 -
컴퓨터의 기초 제 2강 - 변수와 자료형 , 연산자 2006년 3월 27일.
아두이노 프로그래밍 1일차 – Part4 값출력 및 디지털 읽기 강사: 김영준 목원대학교 겸임교수
아두이노 비행선.
아두이노 프로그래밍 (응용과정) 3일차 – Part2 LCD 활용하기 강사: 김영준 목원대학교 겸임교수
PSD센서 명령어 이해하기 목차 재료준비 및 브레드 보드 배선 구성하기 PSD센서 명령어 이해 및 실습 응용 작품 만들기.
클라우드 서버로 사용자 데이터 전송하기 WiFi 시리얼 보드 활용가이드 김영준 헬로앱스 (
키패드 센서 및 전역변수 목차 재료준비 및 브레드 보드 배선 구성하기 키패드 센서 이해 전역변수 실습 응용 작품 만들기.
클라우드 서버로 부터 값 읽어오기 WiFi 시리얼 보드 활용가이드 김영준 헬로앱스 (
8. 아두이노를 이용한 아날로그 제어 - 스마트 폰으로 제어하는 아두이노 -.
【 6월 1일 】 (‘오늘의 용기 내일의 희망’ 중에서...)
센서값 전송하기 WiFi 시리얼 보드 활용가이드 김영준 헬로앱스 (
ST 모드 활용하기 WiFi 시리얼 보드 활용가이드 김영준 헬로앱스 (
ST모드에서 데이터 읽기 및 제어하기 WiFi 시리얼 보드 활용가이드 김영준 헬로앱스 (
클라우드 서버로 데이터 전송하기 WiFi 시리얼 보드 활용가이드 김영준 헬로앱스 (
생체현상계측 ․ 기록장비 이봉준.
함수를 이용한 키패드 센서 제어하기 재료준비 및 브레드 보드 배선 구성하기 키패드 센서를 통한 함수 이해하기 및 활용 실습
광전효과를 이용한 플랑크 상수 측정 1조 권희선 조혜원 허진.
빛 의 합 성 과 학 1 학년 Ⅱ. 빛 > 2. 빛의 색( 8/8 ) [초기 화면]
기본 테이블세팅(로맨틱) 푸드스타일리스트 전공 김선아.
코딩체험교실 아두이노 로봇 코딩 4차산업기술 체험 (SW코딩/자율주행기술).
혼색 color mixture.
아두이노 프로그래밍 4일차 – Part1 모바일 로봇 강사: 김영준 목원대학교 겸임교수
5차시: 로봇 주행 실습 및 미션 수행하기 준비물 SPL-Duino 보드 (조도센서 내장)
6차시: 장애물을 회피하는 자율주행 미션 수행하기
실습과제 1번 생성된 파일 basic.txt를 프로젝트 폴더에서 메모장으로 열고 내용을 확인
“ COME TOGETHER CAMPAIGN”
클라우드 접속 설정하기 WiFi 시리얼 보드 활용가이드 김영준 헬로앱스 (
[색채지각 ] Color Perception.
색채의 공감각 맛 음 냄새 촉감 5. 모양.
Tone 명령어 이해하기 목차 재료준비 및 브레드 보드 배선 구성하기 Tone 명령어 기본 및 프로그램 이해 응용 작품 만들기.
2019년도 지식재산창출지원사업 사업설명회 IDEA.
아날로그일까? 디지털일까? -사용자 경험 기반 디지털 기술을 활용한 반응하는 액자 만들기-
아두이노 서보로봇 제어 (블루투스 스마트폰 조종) -03차시-
논리회로 설계 및 실험 9주차.
4 LED 출력 LED 점멸 LED 밝기 조절 RGB LED로 색상 표현하기 FND 제어 4-digit FND 제어 Dot matrix 제어 Dot matrix를 이용한 애니메이션.
사물인터넷(IoT) 프로그래밍 기초 5. 시리얼통신.
첨부 1. 불꽃 위치도 ※ 불꽃 발사 장소 : 수원월드컵경기장 남측 P4 주차장 뒤편 공원 (붉은색 원표시 부분)
3. Arduino 실습 – 아날로그 입력(1) 아날로그 입력 – 먼지 센서 먼지 센서 개요 먼지 센서 특징 먼지 검출 센서
Presentation transcript:

LCD를 활용한 특수문자 표시 및 알람 시계 만들기 목차 재료준비 및 브레드 보드 배선 구성하기 LCD를 활용한 특수문자 표시 및 알람 시계 만들기 응용 작품 만들기

준비물 준비하기 아두이노 보드 (SPL-Duino V2 초보자용 보드) USB 케이블 서보 모터, 스피커, PSD 거리 센서 브레드보드 실습 키트

브레드보드 배선 구성하기 전원 연결 아래 그림과 같이 브레드 보드를 연결해줍니다.

브레드보드 배선 구성하기 센서 연결 LCD모듈과 아날로그 키패드 스피커를 연결해줍니다.

특수문자 이해하기 특수문자 만들기 특수문자 크리스털 LCD는 총 8개의 문자를 사용자가 생성하여 사용할 수 있습니다. 이중 0번부터 7번 바이트까지 사용자가 변경할 수 있습니다. 각 문자는 5x8의 도트로 구성되며, 하나의 문자는 좌측과 같이 8개의 16진수로 정의됩니다.

특수문자 이해하기 특수문자 문자를 저장하고 사용하는 명령어입니다. lcd.createChar(0,배열이름); - 만든 배열을 가지고 와 특수문자를 만들어 저장해주는 명령어입니다. 첫 번째 입력수는 저장할 번호의 수입니다. 0~15까지 총 16개의 값을 저장 할 수 있습니다. 두 번째 입력값은 만든 특수문자의 변수 이름입니다. 직접적인 출력 명령어가 아닌 메모리에 저장을 해주는 명령어입니다. lcd.write(0); - lcd.createChar에서 저장한 문자를 불러와주는 명령어 입니다. lcd.createChar가 문자를 저장하면 lcd.write로 불러와 출력을 합니다.

특수문자 이해하기 특수문자 특수문자 생성하기 #include <Wire.h> #include <LiquidCrystal_I2C.h> LiquidCrystal_I2C lcd(0x27,16,2); lcd를 이용하기 위한 기본 세팅을 합니다.

특수문자 이해하기 특수문자 uint8_t mychar[8] = {0x00,0x1f,0x09,0x05,0x03,0x01,0x01,0x00}; 위와 같은 전역 변수를 하나 만들어줍니다.

특수문자 이해하기 특수문자 void setup() setup에 lcd.createChar(0, mychar);를 사용합니다. { lcd.begin(); lcd.backlight(); lcd.createChar(0, mychar); } void loop() lcd.clear(); lcd.home(); lcd.write(0); delay(1000); setup에 lcd.createChar(0, mychar);를 사용합니다. lcd.createChar(0, mychar);을 씀으로써 mychar를 불러와서 0번에 저장하게 됩니다. 작업을 마치고 실행을 하면 특수 문자가 나타납니다.

특수문자 이해하기 특수문자 특수 문자 생성법을 이용하여 하트 모양의 특수문자를 만들어 봅니다.

특수문자 이해하기 특수문자 8가지 특수문자 출력 #include <Wire.h> #include <LiquidCrystal_I2C.h> LiquidCrystal_I2C lcd(0x27,16,2); uint8_t bell[8] = {0x4,0xe,0xe,0xe,0x1f,0x0,0x4}; uint8_t note[8] = {0x2,0x3,0x2,0xe,0x1e,0xc,0x0}; uint8_t clock[8] = {0x0,0xe,0x15,0x17,0x11,0xe,0x0}; uint8_t heart[8] = {0x00,0x0a,0x1f,0x1f,0x0e,0x04,0x00,0x00}; uint8_t duck[8] = {0x00,0x0c,0x1d,0xf,0xf,0x06,0x00,0x00}; uint8_t check[8] = {0x00,0x01,0x03,0x16,0x1c,0x08,0x00,0x00}; uint8_t cross[8] = {0x00,0x1b,0x0e,0x04,0x0e,0x1b,0x00,0x00}; uint8_t retarrow[8] = {0x01,0x01,0x05,0x09,0x1f,0x08,0x04,0x00}; 임의의 모양 특수문자 8개를 만들어 줍니다.

특수문자 이해하기 특수문자 void setup() { setup에서 만든 특수문자들을 lcd.createChar에 lcd.begin(); lcd.backlight(); lcd.createChar(0, bell); lcd.createChar(1, note); lcd.createChar(2, clock); lcd.createChar(3, heart); lcd.createChar(4, duck); lcd.createChar(5, check); lcd.createChar(6, cross); lcd.createChar(7, retarrow); lcd.home(); lcd.print("Hello world..."); lcd.setCursor(0, 1); lcd.print(" i "); lcd.write(3); lcd.print(" SPL-Duino!"); delay(5000); } setup에서 만든 특수문자들을 lcd.createChar에 저장하여 줍니다.

특수문자 이해하기 특수문자 void loop() { for (int i = 0; i < 8; i++) lcd.clear(); lcd.write(i); delay(2000); } for 반복문을 이용하여 저장한 특수문자를 lcd.write로 순차적으로 불러오게 됩니다.

기본 실습 메뉴구성 배열을 이용하여 메뉴를 구성하여 봅니다. 키패드와 LCD를 준비합니다 키패드의 버튼 2개를 이용하여 메뉴를 이동하는 것을 구현하고자 합니다.

기본 실습 메뉴구성 #include <Wire.h> #include <LiquidCrystal_I2C.h> LiquidCrystal_I2C lcd(0x27,16,2); String menu[3] = {"menuA", "menuB", "menuC"}; int menu_index = 0; int green = 721; int blue = 660; void setup() { lcd.begin(); lcd.backlight(); } 기본 세팅을 해줍니다. String menu[3]은 나타내고자 하는 메뉴의 배열입니다. menu_index는 메뉴 위치를 나타내고자 하는 변수입니다. green과 blue는 키패드에서 두 개의 버튼값입니다. 키패드와 보드의 상태에 따라 아날로그 값이 다를 수 있으니 버튼값은 직접 확인하여 변경해주셔야 합니다.

기본 실습 메뉴구성 void loop() 기본 세팅을 해줍니다. { String menu[3]은 메뉴의 배열입니다. int a0 = analogRead(0); if (a0 == green) menu_index = menu_index - 1; if (menu_index < 0) menu_index = 2; } else if (a0 == blue) menu_index = menu_index + 1; if (menu_index > 2) menu_index = 0; lcd.clear(); lcd.home(); lcd.print(menu[menu_index]); delay(100); 기본 세팅을 해줍니다. String menu[3]은 메뉴의 배열입니다. menu_index는 메뉴 위치를 저장 하는 변수입니다. green과 blue는 키패드에서 두 개의 버튼값입니다. 키패드와 보드의 상태에 따라 아날로그 값이 다를 수 있으니 버튼값은 직접 확인하여 변경해주셔야 합니다.

응용 작품 만들기 실습 미션) LCD에 시계를 구현하고 알람 기능을 만드십시오. 키패드 센서로 알람의 시간을 조절 할 수 있고 알람을 키고 끄는 기능을 만드십시오 LCD의 첫 번째 줄은 시계 두 번째 줄은 알람 상태로 구현하십시오 ex) 시간:분:초 알람on/off 시간:분:초 알람을 위한 스피커 알람시간 조절

응용 작품 만들기 코드 예시 실습 #include <Wire.h> #include <LiquidCrystal_I2C.h> LiquidCrystal_I2C lcd(0x27,16,2); int green = 720; int blue = 658; int white = 900; int yellow = 797; int red = 603; int mv=6; int cnt=0; int bnk=0; int tone_on=0; int alarm=1; int alarm_h=0; int alarm_m=0; int alarm_s=0; void setup() { lcd.begin(); lcd.clear(); Serial.begin(57600); } void loop() for (int h= 0; h <24; h++) for (int m = 0; m < 60; m++) for (int s = 0; s < 60; s++) int a0 = analogRead(0); Serial.println(a0); if(bnk == 1) lcd.setCursor(mv,1); lcd.blink(); else if(bnk == 0) lcd.noBlink(); delay(1000); lcd.setCursor(0,0); lcd.print(h); lcd.setCursor(2,0); lcd.print(":"); lcd.setCursor(3,0); lcd.print(m); lcd.setCursor(5,0); lcd.setCursor(6,0); lcd.print(s); if(alarm==1) lcd.setCursor(0,1); lcd.print("alarmOFF"); else if(alarm ==-1) lcd.print("alarmON"); lcd.setCursor(9,1); lcd.print(alarm_h); lcd.setCursor(10,1); lcd.setCursor(12,1); lcd.print(alarm_m); lcd.setCursor(13,1); lcd.setCursor(15,1); lcd.print(alarm_s); if(a0 >= white-5 & a0 <= white+5 & bnk == 0) bnk = 1; Serial.println("0000"); else if(a0 >= white-5 & a0 <= white+5 & bnk == 1) bnk = 0; if(a0 >= green -5 & a0 <= green +5 & bnk ==1) mv=mv-3; if(mv < 6) mv=6; else if(a0 >= red -5 & a0 <= red +5 & bnk ==1) mv=mv+3; if(mv > 16) mv=15; if(a0 >= blue -5 & a0 <= blue +5 & bnk ==1 & mv == 6) alarm=alarm*-1; cnt=0; tone_on=0; else if(a0 >= yellow -5 & a0 <= yellow +5 & bnk ==1 & mv == 6) else if(a0 >= blue -5 & a0 <= blue +5 & bnk ==1 & mv == 9) alarm_h++; if(alarm_h > 24) alarm_h=0; else if(a0 >= yellow -5 & a0 <= yellow +5 & bnk ==1 & mv == 9) alarm_h--; if(alarm_h < 0) alarm_h=24; else if(a0 >= blue -5 & a0 <= blue +5 & bnk ==1 & mv == 12) alarm_m++; if(alarm_m > 60) alarm_m=0; else if(a0 >= yellow -5 & a0 <= yellow +5 & bnk ==1 & mv == 12) alarm_m--; if(alarm_m < 0) alarm_m=59; else if(a0 >= blue -5 & a0 <= blue +5 & bnk ==1 & mv == 15) alarm_s++; if(alarm_s > 60) alarm_s=0; else if(a0 >= yellow -5 & a0 <= yellow +5 & bnk ==1 & mv == 15) alarm_s--; if(alarm_s < 0) alarm_s=59; if(alarm == -1 & h == alarm_h & s == alarm_s & m == alarm_m) tone_on = 1; if(tone_on==1) tone(2,1000,1000); cnt++; if(cnt >=100) alarm = 1; }//for s