산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Manufacturing Technology >> 제조공정

아두이노 UNO로 로터리 인코더 제어 Nokia 5110 LCD 메뉴 만들기

부품 및 소모품

부품수량
아두이노 UNO1
로터리 인코더1
Nokia 5110 LCD1

앱 및 온라인 서비스

프로젝트 개요

친애하는 친구들, 또 다른 튜토리얼에 오신 것을 환영합니다! 이번 영상에서는 인기 있는 Nokia 5110 LCD 디스플레이용 자체 메뉴를 만드는 방법을 배워 프로젝트를 더 사용자 친화적이고 강력하게 만드는 방법을 알아보겠습니다. 시작해 볼까요!

이것이 우리가 만들 프로젝트입니다. 디스플레이에 간단한 메뉴가 나타나고, 로터리 인코더로 위/아래 탐색하고 인코더 버튼을 눌러 메뉴 항목을 선택할 수 있습니다. 중앙 버튼을 누르면 다른 화면이 나타나 변수 값을 변경할 수 있고, 한 번 더 누르면 메인 메뉴로 돌아갑니다. 메뉴는 6개 항목으로 구성되며, 스크롤하면 표시 항목이 그에 맞게 변경됩니다. 부착된 영상을 보고 메뉴가 정확히 어떻게 작동하는지 확인하세요. 원하시면 더 복잡한 메뉴로 수정하여 사용할 수 있습니다.

1단계: 모든 부품 준비하기

이 프로젝트에 필요한 부품:

프로젝트 비용은 매우 저렴하여 10달러 미만입니다. 영상 설명란에 모든 부품 링크가 있습니다.

2단계: Nokia 5110 LCD 디스플레이

Nokia 5110은 제가 아두이노 프로젝트에서 가장 좋아하는 디스플레이입니다.

원래 휴대폰 화면용으로 제작된 기본 그래픽 LCD로, PCD8544 컨트롤러(저전력 CMOS LCD 컨트롤러/드라이버)를 사용합니다. 덕분에 전력 소모가 인상적입니다. 백라이트 끄고 켰을 때 0.4mA, 슬립 모드에서 0.06mA 미만만 소모합니다. 시리얼 버스 인터페이스로 마이크로컨트롤러와 통신하여 아두이노와 매우 쉽게 사용할 수 있습니다. 단 8개 와이어만 연결하면 됩니다.

Nokia 5110 LCD를 아두이노와 사용하는 방법에 대한 자세한 튜토리얼을 준비했습니다. 이 튜토리얼에 첨부된 영상을 참고하세요. 디스플레이 가격은 약 4달러입니다.

3단계: 로터리 인코더

로터리 인코더(샤프트 인코더)는 축의 각도 위치나 회전을 아날로그/디지털 코드로 변환하는 전자 기계 장치입니다. 산업 제어, 로봇공학, 특수 사진 렌즈, 컴퓨터 입력 장치(옵토메커니컬 마우스, 트랙볼), 제어 응력 레오미터, 회전 레이더 플랫폼 등 정밀한 무제한 축 회전이 필요한 많은 애플리케이션에 사용됩니다.

이 프로젝트에서 사용할 로터리 인코더는 매우 저렴하며 내장 버튼이 있습니다. 5개 와이어만 연결하면 작동합니다. 로터리 인코더 사용법에 대한 자세한 튜토리얼 영상도 첨부되어 있습니다. 가격은 약 1.5달러입니다.

4단계: 프로젝트 조립

이제 모든 부품을 연결해 보겠습니다. 이전에 로터리 인코더를 사용해 본 적이 없다면, 첨부된 로터리 인코더 튜토리얼 영상을 먼저 보는 것을 권장합니다. 인코더 작동 원리를 이해하고 경험을 쌓는 데 도움이 됩니다.

디스플레이를 소형 브레드보드에 장착합니다. 먼저 디스플레이를 연결합니다:

이제 로터리 인코더를 연결합니다:

영상 설명란에 회로도가 있습니다. 이제 프로젝트에 전원을 공급하면 메뉴가 예상대로 작동하는 것을 볼 수 있습니다!

5단계: 프로젝트 코드

이 프로젝트에서는 4개 라이브러리를 사용합니다:

먼저 drawMenu 함수를 살펴보겠습니다. 이 함수는 디스플레이에 메뉴를 그리는 역할을 하며 몇 밀리초마다 호출되어 메뉴 변경 사항을 화면에 업데이트합니다.

int menuitem = 1;
int frame = 1;
int page = 1;
int lastMenuItem = 1;

세 가지 중요한 전역 변수가 있습니다:

코드 수정을 쉽게 하기 위해 메뉴 항목 이름을 전역 변수로 정의했습니다:

String menuItem1 = "Contrast";
String menuItem2 = "Volume";
String menuItem3 = "Language";
String menuItem4 = "Difficulty";
String menuItem5 = "Light: ON";
String menuItem6 = "Reset";
boolean backlight = true;
int contrast = 60;
int volume = 50;
String language[3] = { "EN", "ES", "EL" };
int selectedLanguage = 0;
String difficulty[2] = { "EASY", "HARD" };
int selectedDifficulty = 0;

loop() 함수에서는 먼저 drawMenu()를 호출해 메뉴를 그리고, 로터리 인코더 값을 읽어 버튼 눌림을 확인합니다. 예를 들어 메인 화면에서 첫 번째 항목이 선택된 상태에서 인코더 값이 증가하면 menuitem이 증가하고 다음 루프에서 두 번째 항목이 선택된 것으로 표시됩니다. 버튼을 누르면 두 번째 페이지(변수 설정)로 이동하고, 다시 인코더로 값을 조정한 후 버튼을 누르면 메인 메뉴로 돌아옵니다.

이것이 이 메뉴의 기본 원리입니다. 모든 메뉴 항목과 페이지에 같은 절차를 적용합니다. 코드는 400줄이 넘어 복잡해 보이지만 직접 해보면 쉽게 이해하고 수정·확장하여 자신의 프로젝트에 활용할 수 있습니다. 코드는 첨부 파일로 제공됩니다.

6단계: 프로젝트 테스트

코드를 업로드하면 프로젝트가 예상대로 작동합니다. 샤프트를 돌려 메뉴를 위/아래로 탐색하고, 로터리 인코더 버튼을 눌러 항목을 선택할 수 있습니다. 정말 멋지지 않나요!

이제 Nokia 5110 LCD용 메뉴 만드는 법을 알았으니 프로젝트에 더 많은 기능을 추가하고 사용자 친화적으로 만들 수 있습니다. 오늘 만든 간단한 메뉴는 개선할 여지가 있습니다. 버튼 상태를 계속 확인하는 대신 인터럽트를 사용하면 전력 소모를 줄이고 코드를 더 깔끔하게 만들 수 있습니다. 곧 인터럽트 관련 영상도 준비할 예정이니 기대해 주세요. 이 메뉴 프로젝트에 대한 여러분의 의견을 댓글로 남겨주세요. 유용하다고 생각하시나요? 여러분의 프로젝트에 메뉴를 사용할 계획이 있으신가요? 생각과 아이디어를 공유해 주세요. 감사합니다!

소스 코드

코드 스니펫 #2

String menuItem1 = "Contrast";
String menuItem2 = "Volume";
String menuItem3 = "Language";
String menuItem4 = "Difficulty";
String menuItem5 = "Light: ON";
String menuItem6 = "Reset";
boolean backlight = true;
int contrast = 60;
int volume = 50;
String language[3] = { "EN", "ES", "EL" };
int selectedLanguage = 0;
String difficulty[2] = { "EASY", "HARD" };
int selectedDifficulty = 0;

GitHub 저장소

제조공정

  1. 아두이노로 모니터 앰비라이트(Ambilight) 시스템 직접 만들기
  2. 아두이노 나노와 노키아 5110 LCD로 20kHz 오실로스코프 만들기: 쉬운 DIY 가이드
  3. 아두이노 우노로 만드는 LCD 애니메이션 & 게임 기초
  4. 아두이노와 스마트폰으로 만드는 스마트 전압계 – 초간단 DIY 프로젝트
  5. 아두이노와 MAX30100으로 만드는 실시간 IoT 심박수 모니터
  6. 아두이노 우노 와이파이 웹 서버: 브라우저로 LED 제어하기
  7. 아두이노와 노키아 5110 LCD로 만드는 DIY 전압계 - 단계별 가이드
  8. 아두이노 나노와 로터리 인코더로 만드는 정밀 측정 바퀴
  9. 아두이노로 크롬 공룡 게임 자동화하기 – LDR과 파이썬으로 장애물 감지
  10. 아두이노 나노와 RDA8057M으로 소형 FM 라디오 만들기