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

로터리 인코더를 사용하는 Nokia 5110 Lcd의 Arduino 메뉴

구성품 및 소모품

Arduino UNO
× 1
로터리 인코더
× 1
노키아 5110 LCD
× 1

앱 및 온라인 서비스

Arduino IDE

이 프로젝트 정보

친애하는 친구, 다른 튜토리얼에 오신 것을 환영합니다! 이 비디오에서 우리는 인기 있는 Nokia 5110 LCD 디스플레이용 메뉴를 만드는 방법을 배웁니다. 우리 프로젝트를 더 사용자 친화적이고 유능하게 만들기 위해 시작하겠습니다!

이것은 우리가 구축할 프로젝트입니다. 디스플레이에 간단한 메뉴가 나타나고 로터리 인코더의 도움으로 로터리 인코더 버튼을 눌러 위 또는 아래로 탐색하고 메뉴 항목을 선택할 수 있습니다. 로터리 엔코더의 가운데 버튼을 누르면 다른 화면이 나타나고 변수 값을 변경할 수 있습니다. 로터리 엔코더 버튼을 한 번 더 누르면 메인 메뉴 화면으로 돌아갑니다. 메뉴에는 6개의 항목이 있으며 메뉴를 위아래로 스크롤할 수 있으며 디스플레이의 항목이 그에 따라 변경됩니다. 이 메뉴가 어떻게 작동하는지 정확히 보려면 ​​첨부된 비디오를 시청하십시오. 물론 원하는 경우 더 복잡한 메뉴를 만들기 위해 수정할 수 있습니다.

이제 이 프로젝트를 빌드하는 방법을 살펴보겠습니다.

1단계:모든 부품 가져오기

이 프로젝트를 빌드하는 데 필요한 부품은 다음과 같습니다.

<울>
  • 아두이노 우노 ▶ http://educ8s.tv/part/ArduinoUno
  • <울>
  • 노키아 5110 LCD 디스플레이 ▶ http://educ8s.tv/part/NOKIA5110
  • <울>
  • 로타리 인코더 ▶ http://educ8s.tv/part/RotaryEncoder
  • <울>
  • 작은 브레드보드 ▶ http://educ8s.tv/part/SmallBreadboard
  • <울>
  • 일부 전선 ▶ http://educ8s.tv/part/Wires
  • 프로젝트 비용은 10달러 미만으로 매우 저렴합니다. 아래 동영상 설명에서 내가 사용하는 모든 부품에 대한 링크를 찾을 수 있습니다.

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

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

    Nokia 5110은 원래 휴대폰 화면용으로 설계된 기본 그래픽 LCD 화면입니다. 저전력 CMOS LCD 컨트롤러/드라이버인 PCD8544 컨트롤러를 사용합니다. 이 때문에 이 디스플레이는 인상적인 전력 소비를 가지고 있습니다. 켜져 있지만 백라이트는 비활성화되어 있을 때 0.4mA만 사용합니다. 절전 모드일 때 0.06mA 미만을 사용합니다! 이것이 이 디스플레이를 내가 가장 좋아하는 이유 중 하나입니다. PCD8544는 직렬 버스 인터페이스를 통해 마이크로컨트롤러에 인터페이스합니다. 따라서 디스플레이를 Arduino와 함께 사용하기가 매우 쉽습니다. 8선만 연결하면 됩니다.

    Nokia 5110 LCD 디스플레이를 Arduino와 함께 사용하는 방법에 대한 자세한 자습서를 준비했습니다. 이 튜토리얼에서 해당 비디오를 첨부했으며 디스플레이에 대한 유용한 정보를 제공할 수 있으므로 주의 깊게 시청하는 것이 좋습니다. 디스플레이 비용은 약 $4입니다.

    ▶ http://educ8s.tv/part/NOKIA5110

    에서 받으실 수 있습니다.

    3단계:로터리 인코더

    샤프트 엔코더라고도 하는 로터리 엔코더는 샤프트 또는 액슬의 각도 위치 또는 동작을 아날로그 또는 디지털 코드로 변환하는 전기 기계 장치입니다. 로터리 인코더는 산업 제어, 로봇 공학, 특수 목적의 사진 렌즈, 컴퓨터 입력 장치(예:광기계 마우스 및 트랙볼), 제어된 응력 레오미터, 회전하는 레이더 플랫폼을 포함하여 정밀한 샤프트 무제한 회전이 필요한 많은 응용 분야에서 사용됩니다.

    이 프로젝트에서 사용할 로터리 인코더는 매우 저렴한 인코더입니다. 또한 버튼이 내장되어 있으며 작동하려면 5개의 전선만 연결하면 됩니다. 로터리 엔코더 사용법에 대한 자세한 튜토리얼을 준비했습니다. 이 동영상은 여기에 첨부되어 있습니다.

    이 로터리 인코더의 비용은 매우 저렴합니다. 비용은 약 $1.5입니다.

    바로가기 ▶ http://educ8s.tv/part/RotaryEncoder

    4단계:프로젝트 구축

    이제 모든 부품을 연결해 보겠습니다. 이 프로젝트를 빌드하기 전에 과거에 로터리 엔코더를 사용하지 않았다면 로터리 엔코더에 대해 제가 준비한 튜토리얼을 시청하는 것이 좋습니다. 로터리 엔코더의 작동 방식을 이해하는 데 도움이 되며 이에 대한 경험을 얻을 수 있습니다. 이 동영상을 여기에 첨부합니다.

    이렇게 작은 브레드보드에 디스플레이를 배치했습니다. 먼저 디스플레이를 연결해 보겠습니다. 리셋인 디스플레이의 첫 번째 핀은 Arduino Uno의 디지털 핀 3으로, 두 번째 핀은 디지털 핀 4로, 세 번째 핀은 디지털 핀 5로, 네 번째 핀은 디지털 핀 11로, 다섯 번째 핀은 디지털로 연결됩니다. 핀 13. 다음 핀은 Vcc입니다. Vcc를 브레드보드의 양극 레일에 연결하고 브레드보드 양극 레일을 Arduino의 3.3V 출력에 연결합니다. 다음 핀은 디스플레이용 백라이트입니다. 소프트웨어를 통해 제어하고 싶기 때문에 디지털 핀 7에 연결합니다. 마지막 핀은 GND입니다. GND를 브레드보드의 네거티브 레일에 연결하고 브레드보드의 네거티브 레일을 Arduino GND에 연결합니다.

    이제 로터리 인코더를 연결하기만 하면 됩니다. 첫 번째 핀은 GND이고 브레드보드의 네거티브 레일에 연결합니다. 다음 핀은 Vcc이고 브레드보드의 양극 레일에 연결합니다. 다음 핀은 SW이고 아날로그 핀 2에 연결합니다. 다음 핀의 이름은 DT이고 아날로그 핀 1에 연결합니다. 마지막으로 핀 CLK는 아날로그 핀 0에 연결됩니다. 이 프로젝트의 개략도는 다음에서 찾을 수 있습니다. 아래 동영상에 대한 설명입니다.

    이제 프로젝트에 전원을 공급할 준비가 되었습니다. 보시다시피 프로젝트가 제대로 작동하고 메뉴가 예상대로 작동합니다! 좋습니다. 이제 프로젝트의 소프트웨어를 살펴보겠습니다.

    5단계:프로젝트 코드

    이 프로젝트에서는 4개의 라이브러리를 사용합니다. 디스플레이용으로 2개의 라이브러리를 사용하고 로터리 인코더용으로 2개를 사용합니다.

    <울>
  • Adafruit GFX:https://github.com/adafruit/Adafruit-GFX-Library
  • <울>
  • 노키아 5110:https://github.com/adafruit/Adafruit-PCD8544-Nokia-5110-LCD-library
  • <울>
  • 인코더 라이브러리:https://github.com/0xPIT/encoder/tree/arduino
  • <울>
  • TimerOne 라이브러리:https://github.com/PaulStoffregen/TimerOne
  • 먼저 drawMenu 함수를 살펴보겠습니다. 이 기능은 디스플레이에 메뉴를 그리는 역할을 합니다. 이 함수는 몇 밀리초마다 호출되므로 메뉴에 변경 사항이 있는 경우 이 함수는 화면의 메뉴를 업데이트하는 역할을 합니다.

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

    또한 3개의 매우 중요한 전역 변수, 변수 페이지, 변수 메뉴 항목 및 변수 프레임이 있습니다. 변수 페이지는 화면에 표시되는 UI 화면을 기억합니다. 따라서 페이지 변수가 1이면 기본 UI 화면에 있고 변수가 2이면 변수에 값을 설정하는 보조 UI 화면에 있습니다. 메뉴 항목은 선택한 메뉴 항목을 기억합니다. 따라서 값이 1이면 첫 번째 메뉴 항목이 선택되므로 drawMenu 함수는 이 메뉴 항목을 흰색 문자로 검은색으로 그려야 합니다. 메뉴 항목이 2이면 두 번째 메뉴 항목이 선택되는 식입니다. 프레임 변수는 메뉴의 어느 부분이 화면에 표시되는지 기억합니다. 우리가 만든 메뉴에는 6개의 항목이 있고 한 번에 3개의 항목만 표시할 수 있으므로 화면에 표시되는 항목을 알아야 합니다. 프레임 변수는 정확히 이것을 알려줍니다. 프레임 변수의 값이 1이면 처음 세 개의 메뉴 항목을 표시하고 2이면 항목 2,3,4 등을 표시합니다.

    코드를 가능한 한 쉽게 수정할 수 있도록 하여 메뉴 항목의 이름을 보유하는 전역 변수를 만들었습니다. 이렇게 하면 코드에서 검색하지 않고도 쉽게 자신만의 메뉴를 만들 수 있습니다.

    문자열 menuItem1 ="대비";문자열 menuItem2 ="볼륨";문자열 menuItem3 ="언어";문자열 menuItem4 ="난이도";문자열 menuItem5 ="조명:켜짐";문자열 menuItem6 ="재설정"; 부울 백라이트 =true;int 대비=60;int 볼륨 =50;문자열 언어[3] ={ "EN", "ES", "EL" };int selectedLanguage =0;문자열 난이도[2] ={ "쉬운" , "하드" };int selectedDifficulty =0; 

    처음에는 코드에 필요한 모든 전역 변수를 초기화합니다. 다음으로 디스플레이를 초기화합니다. 루프 함수에서 처음에는 drawMenu 함수를 호출하여 화면에 메뉴를 그립니다. 그런 다음 로터리 인코더에서 값을 읽고 버튼이 눌렸는지 확인합니다. 예를 들어, 메인 UI 화면에 있고 첫 번째 메뉴 항목이 선택된 경우 로터리 인코더의 값이 증가하면 menuitem 변수가 증가하고 다음 루프에서 drawMenu 함수는 선택된 대로 두 번째 메뉴 항목을 그립니다. 이제 로터리 인코더의 버튼을 누르면 변수 값을 설정하는 두 번째 페이지로 이동합니다. 다시 로터리 인코더를 사용하여 변수 값을 늘리거나 줄일 수 있습니다. 버튼을 누르면 메인 메뉴 페이지로 돌아가서 페이지 변수가 감소합니다.

    이것이 이 메뉴의 기본 아이디어입니다. 모든 메뉴 항목과 페이지에 대해 동일한 절차를 따릅니다. 코드는 복잡하고 400줄 이상입니다. 복잡해 보이지만 직접 해보면 더 쉽게 이해가 될 것이고, 변경하고 확장하여 자신의 프로젝트에서 사용할 수 있을 것입니다. 언제나처럼 여기에서 첨부된 코드를 찾을 수 있습니다.

    Nokia5110MenuRotary.ino

    6단계:프로젝트 테스트

    코드를 로드하면 프로젝트가 예상대로 작동하는 것을 볼 수 있습니다. 샤프트를 사용하여 메뉴를 위아래로 탐색할 수 있으며 로터리 인코더 버튼을 눌러 메뉴 항목을 선택할 수 있습니다. 정말 멋지네요!

    이제 Nokia 5110 LCD 디스플레이용 메뉴를 구축하는 방법을 알았으므로 프로젝트에 더 많은 기능을 추가하고 더 사용자 친화적으로 만들 수 있습니다. 오늘 만든 이 간단한 메뉴는 개선할 수 있습니다. 버튼 상태를 항상 확인하는 대신 인터럽트를 사용할 수 있습니다. 이렇게 하면 프로젝트의 전력 소비를 줄이고 코드를 더 깔끔하게 만들 수 있습니다. 곧 인터럽트에 대한 비디오를 준비 할 것이므로 계속 지켜봐주십시오. 이 메뉴 프로젝트에 대한 귀하의 의견을 듣고 싶습니다. 유용하다고 생각하고 프로젝트에서 메뉴를 사용할 계획입니까? 아래에 귀하의 생각과 아이디어를 게시해 주십시오. 감사합니다!

    <섹션 클래스="섹션 컨테이너 섹션 축소 가능" id="코드">

    코드

    <울>
  • 코드 스니펫 #2
  • 코드 스니펫 #2일반 텍스트
    문자열 menuItem1 ="대비";문자열 menuItem2 ="볼륨";문자열 menuItem3 ="언어";문자열 menuItem4 ="난이도";문자열 menuItem5 ="조명:켜짐";문자열 menuItem6 ="재설정"; 부울 백라이트 =true;int 대비=60;int 볼륨 =50;문자열 언어[3] ={ "EN", "ES", "EL" };int selectedLanguage =0;문자열 난이도[2] ={ "EASY", "HARD " };int selectedDifficulty =0;
    깃허브
    https://github.com/adafruit/Adafruit-GFX-Libraryhttps://github.com/adafruit/Adafruit-GFX-Library

    제조공정

    1. Arduino를 사용하여 모니터 Ambilight 만들기
    2. Nokia 5110 LCD의 DIY Simple 20kHz Arduino 오실로스코프
    3. LCD 애니메이션 및 게임
    4. Arduino와 스마트폰을 사용한 DIY 전압계
    5. IoT를 사용한 심박수 모니터
    6. Arduino Uno WiFi를 사용하는 WebServerBlink
    7. Arduino 및 Nokia 5110 디스플레이가 있는 DIY 전압계
    8. 로터리 인코더가 있는 DIY 간단한 측정 휠
    9. arduino를 사용한 자동화된 Dino 게임
    10. Arduino 및 RDA8057M을 사용하는 FM 라디오