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

16x2 LCD 디스플레이에서 맞춤 애니메이션 만들기

구성품 및 소모품

Arduino UNO
모든 Arduino 보드
× 1
Adafruit Standard LCD - 파란색 바탕에 16x2 흰색
Hitachi HD44780과 호환되는 16x2 크기의 모든 LCD 디스플레이가 여기에서 작동합니다.
× 1
저항 220옴
220 - 1k Ohm 범위의 모든 저항. 값이 클수록 화면이 더 어두워집니다.
× 1

앱 및 온라인 서비스

Arduino IDE
맞춤형 글리프 생성기

이 프로젝트 정보

LiquidCrystal 라이브러리를 사용하면 Arduino와 함께 LCD를 쉽게 사용할 수 있습니다. 이 라이브러리에서 특히 흥미로운 함수는 createChar() 함수입니다. 각 행에 하나씩 8바이트 배열로 설명되는 사용자 정의 글리프(문자)를 만들 수 있습니다. 각 바이트의 최하위 5비트는 해당 행의 픽셀을 결정합니다. 예술 작품을 만들기 위해 손으로 바이트를 쓰는 것은 정확히 예술가의 이상적인 과정이 아니므로 제가 웹 도구 상형 문자를 그릴 수 있고 코드가 생성됩니다. .

이 기사에서는 Arduino 보드와 LCD만 있는 사용자 지정 애니메이션을 만드는 방법을 보여줍니다. 이 애니메이션을 사용하여 많은 프로젝트를 만들 수 있습니다. 상태 패널을 장식합니다.

LCD를 Arduino에 연결

LCD를 Arduino에 연결합니다. 화면 모델에 따라 다른 연결이 더 잘 작동할 수 있습니다. 내 화면 중 하나의 경우 아래 회로도가 잘 작동했지만 다른 화면의 경우 전위차계(이 링크 아래의 자습서에서와 같이)를 사용하고 저항 값을 조정하여 최상의 대비를 얻어야 했습니다.

이 링크에서 TinkerCad의 시뮬레이션을 참조하십시오.

예술 창작

https://tusindfryd.github.io/screenduino/의 도구로 이동하여 아트를 만듭니다. 한 번에 최대 8개의 섹션을 사용할 수 있으므로 새 사각형을 선택할 수 없는 경우 이미 8개의 섹션을 사용하고 있지 않은지 확인하세요.

코드 생성

첫 번째 이미지가 끝나면 선택 취소하세요. 상자 "그냥 기능" . 코드를 클립보드에 복사하고 Arduino에 업로드합니다. 이 시점에서 LCD에 이미지가 표시되어야 합니다.

더 많은 프레임 만들기

코드가 저장되었는지 확인하십시오. 이제 두 번째 프레임을 만들 수 있습니다. 다른 이미지를 그리면 됩니다. 완료되면 확인합니다. 상자 "그냥 기능" . 함수를 복사하여 코드 끝에 붙여넣습니다. 새 함수의 이름을 image01()과 같이 다른 이름으로 바꿉니다. , 추적할 수 있습니다. 이제 호출을 image()로 이동해야 합니다. setup()에서 loop()에 대한 함수 함수, 지연 추가, image01() 호출 , 지연을 다시 추가합니다. image()의 이름을 바꾸는 것을 고려하십시오. image00()로 일관성을 위해. loop() 함수는 다음과 같아야 합니다.

void 루프(){ image00(); 지연(250); 이미지01(); 지연(250);} 

스케치를 Arduino에 업로드하십시오. 프레임을 더 추가하거나 지연 시간을 변경해 보십시오.

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

코드

<울>
  • 나비 변형 애니메이션
  • 나비 변형 애니메이션Arduino
    이것은 예제 코드(gif의 나비 변형 애니메이션 뒤에 있는 코드)입니다.
    /* 나비 변형 애니메이션 2021 ~ 작성자 tusindfryd 이 코드는 공개 도메인*/#include LiquidCrystal lcd(12, 11)입니다. , 5, 4, 3, 2); // RS, E, D4, D5, D6, D7void setup(){ lcd.begin(16, 2);}void 루프(){ image00(); 지연(250); 이미지01(); 지연(250); 이미지02(); 지연(250); 이미지03(); 지연(700); 이미지04(); 지연(250); 이미지05(); 지연(250); 이미지06(); 지연(700); 이미지07(); 지연(1250);} 무효 image00(){ lcd.clear(); 바이트 이미지22[8] ={B00110, B01101, B11011, B10011, B00111, B01111, B01111, B11111}; 바이트 이미지23[8] ={B01111, B11110, B11100, B11000, B11000, B10000, B10000, B00000}; 바이트 이미지07[8] ={B00000, B00000, B00000, B00000, B00000, B00000, B00001, B00111}; 바이트 이미지08[8] ={B00000, B01000, B10000, B10000, B10000, B11111, B11111, B11000}; 바이트 이미지09[8] ={B00000, B00000, B00000, B00000, B00000, B11000, B11000, B00100}; lcd.createChar(0, 이미지22); lcd.createChar(1, 이미지23); lcd.createChar(2, image07); lcd.createChar(3, image08); lcd.createChar(4, image09); lcd.setCursor(5, 1); lcd.write(바이트(0)); lcd.setCursor(6, 1); lcd.write(바이트(1)); lcd.setCursor(6, 0); lcd.write(바이트(2)); lcd.setCursor(7, 0); lcd.write(바이트(3)); lcd.setCursor(8, 0); lcd.write(byte(4));} 무효 image01(){ lcd.clear(); 바이트 이미지22[8] ={B00110, B00101, B00011, B00011, B00111, B01111, B01111, B11111}; 바이트 이미지23[8] ={B01111, B11110, B11100, B11000, B11000, B10000, B10000, B00000}; 바이트 이미지07[8] ={B00000, B00000, B00000, B00000, B00000, B00000, B11001, B10111}; 바이트 이미지08[8] ={B00000, B01000, B10000, B10000, B10000, B11111, B11111, B11000}; 바이트 이미지09[8] ={B00000, B00000, B00000, B00000, B00000, B11000, B11000, B00100}; 바이트 이미지06[8] ={B00000, B00000, B00000, B00000, B00000, B00000, B00000, B00011}; lcd.createChar(0, 이미지22); lcd.createChar(1, 이미지23); lcd.createChar(2, image07); lcd.createChar(3, image08); lcd.createChar(4, image09); lcd.createChar(5, image06); lcd.setCursor(5, 1); lcd.write(바이트(0)); lcd.setCursor(6, 1); lcd.write(바이트(1)); lcd.setCursor(6, 0); lcd.write(바이트(2)); lcd.setCursor(7, 0); lcd.write(바이트(3)); lcd.setCursor(8, 0); lcd.write(바이트(4)); lcd.setCursor(5, 0); lcd.write(byte(5));} 무효 image02(){ lcd.clear(); 바이트 이미지22[8] ={B00000, B00001, B00011, B00011, B00111, B01111, B01111, B11111}; 바이트 이미지23[8] ={B01111, B11110, B11100, B11000, B11000, B10000, B10000, B00000}; 바이트 이미지07[8] ={B00000, B00000, B00000, B00001, B00111, B00100, B11001, B10111}; 바이트 이미지08[8] ={B00000, B01000, B10000, B10000, B10000, B11111, B11111, B11000}; 바이트 이미지09[8] ={B00000, B00000, B00000, B00000, B00000, B11000, B11000, B00100}; lcd.createChar(0, 이미지22); lcd.createChar(1, 이미지23); lcd.createChar(2, image07); lcd.createChar(3, image08); lcd.createChar(4, image09); lcd.setCursor(5, 1); lcd.write(바이트(0)); lcd.setCursor(6, 1); lcd.write(바이트(1)); lcd.setCursor(6, 0); lcd.write(바이트(2)); lcd.setCursor(7, 0); lcd.write(바이트(3)); lcd.setCursor(8, 0); lcd.write(byte(4));} 무효 image03(){ lcd.clear(); 바이트 이미지22[8] ={B00000, B00001, B00011, B00011, B00111, B01111, B01111, B11111}; 바이트 이미지23[8] ={B01111, B11110, B11100, B11000, B11000, B10000, B10000, B00000}; 바이트 이미지07[8] ={B00000, B00000, B00000, B00000, B00000, B00000, B00001, B00111}; 바이트 이미지08[8] ={B00000, B01000, B10000, B10000, B10000, B11111, B11111, B11010}; 바이트 이미지09[8] ={B00000, B00000, B00000, B00000, B00000, B11000, B11000, B00100}; 바이트 이미지24[8] ={B00010, B00111, B00111, B00111, B00111, B00111, B00010, B00000}; lcd.createChar(0, 이미지22); lcd.createChar(1, 이미지23); lcd.createChar(2, image07); lcd.createChar(3, image08); lcd.createChar(4, image09); lcd.createChar(5, 이미지24); lcd.setCursor(5, 1); lcd.write(바이트(0)); lcd.setCursor(6, 1); lcd.write(바이트(1)); lcd.setCursor(6, 0); lcd.write(바이트(2)); lcd.setCursor(7, 0); lcd.write(바이트(3)); lcd.setCursor(8, 0); lcd.write(바이트(4)); lcd.setCursor(7, 1); lcd.write(byte(5));} 무효 image04(){ lcd.clear(); 바이트 이미지22[8] ={B00000, B00001, B00011, B00011, B00111, B01111, B01111, B11111}; 바이트 이미지23[8] ={B01111, B11110, B11100, B11000, B11000, B10001, B10000, B00000}; 바이트 이미지07[8] ={B00000, B00000, B00000, B00000, B00000, B00000, B00001, B00111}; 바이트 이미지08[8] ={B00000, B01000, B10000, B10000, B10000, B11111, B11111, B11010}; 바이트 이미지09[8] ={B00000, B00000, B00000, B00000, B00000, B11000, B11000, B00100}; 바이트 이미지24[8] ={B00010, B00100, B01011, B10101, B11010, B10101, B11010, B01110}; 바이트 이미지25[8] ={B00000, B00000, B00000, B10000, B10000, B00000, B00000, B00000}; lcd.createChar(0, 이미지22); lcd.createChar(1, 이미지23); lcd.createChar(2, image07); lcd.createChar(3, image08); lcd.createChar(4, image09); lcd.createChar(5, 이미지24); lcd.createChar(6, 이미지25); lcd.setCursor(5, 1); lcd.write(바이트(0)); lcd.setCursor(6, 1); lcd.write(바이트(1)); lcd.setCursor(6, 0); lcd.write(바이트(2)); lcd.setCursor(7, 0); lcd.write(바이트(3)); lcd.setCursor(8, 0); lcd.write(바이트(4)); lcd.setCursor(7, 1); lcd.write(바이트(5)); lcd.setCursor(8, 1); lcd.write(byte(6));} 무효 image05(){ lcd.clear(); 바이트 이미지24[8] ={B01010, B10100, B01011, B10101, B11010, B10101, B11010, B01110}; 바이트 이미지25[8] ={B00000, B00000, B00000, B10000, B10000, B00000, B00000, B00000}; 바이트 이미지23[8] ={B01101, B01010, B01101, B00111, B00000, B00000, B00000, B00000}; 바이트 이미지07[8] ={B00000, B00000, B00000, B00000, B00000, B00000, B00001, B00011}; 바이트 이미지08[8] ={B00000, B00000, B00000, B00000, B00000, B00000, B00000, B10000}; lcd.createChar(0, 이미지24); lcd.createChar(1, 이미지25); lcd.createChar(2, 이미지23); lcd.createChar(3, image07); lcd.createChar(4, image08); lcd.setCursor(7, 1); lcd.write(바이트(0)); lcd.setCursor(8, 1); lcd.write(바이트(1)); lcd.setCursor(6, 1); lcd.write(바이트(2)); lcd.setCursor(6, 0); lcd.write(바이트(3)); lcd.setCursor(7, 0); lcd.write(byte(4));} 무효 image06(){ lcd.clear(); 바이트 이미지08[8] ={B00000, B00100, B01010, B01010, B10001, B00011, B00110, B01100}; 바이트 이미지07[8] ={B00000, B00000, B00000, B00000, B00001, B00010, B00010, B00001}; 바이트 이미지09[8] ={B00000, B00000, B10000, B11000, B00000, B00000, B11000, B00100}; 바이트 이미지24[8] ={B00100, B00100, B00011, B00000, B00000, B00000, B00000, B00000}; 바이트 이미지25[8] ={B10000, B00000, B00000, B00000, B00000, B00000, B00000, B00000}; lcd.createChar(0, image08); lcd.createChar(1, image07); lcd.createChar(2, image09); lcd.createChar(3, 이미지24); lcd.createChar(4, 이미지25); lcd.setCursor(7, 0); lcd.write(바이트(0)); lcd.setCursor(6, 0); lcd.write(바이트(1)); lcd.setCursor(8, 0); lcd.write(바이트(2)); lcd.setCursor(7, 1); lcd.write(바이트(3)); lcd.setCursor(8, 1); lcd.write(byte(4));} 무효 image07(){ lcd.clear(); 바이트 이미지24[8] ={B10101, B01110, B01110, B00100, B10101, B01110, B00100, B11111}; 바이트 이미지08[8] ={B00000, B00100, B01010, B01010, B10001, B00011, B00110, B01100}; 바이트 이미지07[8] ={B00000, B00000, B00000, B00000, B00001, B00010, B00010, B00001}; 바이트 이미지09[8] ={B00000, B00000, B10000, B11000, B00000, B00000, B00000, B00000}; lcd.createChar(0, 이미지24); lcd.createChar(1, image08); lcd.createChar(2, image07); lcd.createChar(3, image09); lcd.setCursor(7, 1); lcd.write(바이트(0)); lcd.setCursor(7, 0); lcd.write(바이트(1)); lcd.setCursor(6, 0); lcd.write(바이트(2)); lcd.setCursor(8, 0); lcd.write(바이트(3));}

    회로도


    제조공정

    1. CDS:3D 투명 LCD 디스플레이
    2. 비행 시뮬레이터용 Arduino가 있는 LCD 패널
    3. LCD 애니메이션 및 게임
    4. Arduino UNO로 LCD TFT 화면에 이미지 표시하기!
    5. 128x64 LCD 디스플레이의 DIY 10Hz-50kHz 오실로스코프
    6. PHP를 사용하여 Arduino와 통신하는 웹사이트를 만드는 방법
    7. 16x2 LCD의 MAX 30102 심박수 모니터
    8. Arduino 기상 관측소
    9. DS1302 RTC가 있는 간단한 알람 시계
    10. PCB 프로토타입 프로세스:맞춤형 PCB를 만드는 5단계