- 필요한 재료 :
- TFT LCD 화면 모듈 알아보기 :
- 터치 스크린 용 TFT LCD 화면 보정 :
- Arduino와의 TFT LCD 연결 :
- TFT LCD 용 Arduino 프로그래밍 :
- 일:
Arduino는 항상 프로젝트를 쉽게 빌드하고 더 매력적으로 보이도록 도와 왔습니다. 터치 스크린 옵션을 사용하여 LCD 화면을 프로그래밍하는 것은 복잡한 작업처럼 들릴 수 있지만 Arduino 라이브러리와 쉴드는 정말 쉽게 만들었습니다. 이 프로젝트에서는 2.4 인치 Arduino TFT LCD 화면을 사용 하여 더하기, 빼기, 나누기 및 곱하기와 같은 모든 기본 계산을 수행 할 수있는 자체 Arduino 터치 스크린 계산기 를 구축 할 것 입니다.
필요한 재료:
- Arduino Uno
- 2.4 인치 TFT LCD 디스플레이 실드
- 9V 배터리.
TFT LCD 화면 모듈 알아보기:
실제로 프로젝트를 시작하기 전에이 2.4 인치 TFT LCD 모듈 이 어떻게 작동하는지, 어떤 유형 이 있는지 아는 것이 중요 합니다. 이 2.4 인치 TFT LCD 화면 모듈의 핀아웃을 살펴 보겠습니다.
보시다시피 모든 Arduino Uno / Arduino Mega Board에 완벽하게 맞는 28 개의 핀이 있습니다. 이 핀의 작은 분류는 아래 표에 나와 있습니다.
보시다시피 핀은 LCD 명령 핀, LCD 데이터 핀, SD 카드 핀 및 전원 핀과 같은 네 가지 주요 분류로 분류 할 수 있습니다. 이러한 핀은 Arduino 라이브러리.
또한 위에 표시된 모듈 하단에 SD 카드 슬롯이 있으며, 이는 bmp 이미지 파일이있는 SD 카드를로드하는 데 사용할 수 있으며 이러한 이미지는 Arduino 프로그램을 사용하여 TFT LCD 화면에 표시 할 수 있습니다.
주목해야 할 또 다른 중요한 사항은 인터페이스 IC 입니다. 원래 Adafruit TFT LCD 모듈에서 값싼 중국 클론에 이르기까지 시장에서 사용할 수있는 많은 유형의 TFT 모듈이 있습니다. Adafruit 실드에 완벽하게 작동하는 프로그램은 중국 브레이크 아웃 보드에서 동일하게 작동하지 않을 수 있습니다. 따라서 어떤 유형의 LCD 디스플레이를 손에 들고 있는지 아는 것이 매우 중요합니다. 이 세부 정보는 공급 업체로부터 얻어야합니다. 저와 같은 저렴한 클론을 가지고 있다면 아마도 ili9341 드라이버 IC를 사용하고있을 것입니다 . Arduino 자습서와 인터페이스하는이 TFT LCD를 따라 몇 가지 기본 예제 프로그램을 시도하고 LCD 화면에 익숙해 질 수 있습니다. 여기에서 Arduino를 사용한 다른 TFT LCD 프로젝트도 확인하십시오.
- Arduino 및 TFT LCD와 함께 NeoPixel LED 스트립을 사용하는 방법
- Arduino를 사용한 스마트 폰 제어 디지털 코드 잠금
터치 스크린 용 TFT LCD 화면 보정:
TFT LCD 모듈의 터치 스크린 기능을 사용하려는 경우 제대로 작동하도록 보정해야합니다. 보정이없는 LCD 화면은 거의 작동하지 않을 수 있습니다. 예를 들어 한 곳에서 터치하면 TFT가 다른 곳에서 터치에 반응 할 수 있습니다. 이러한 보정 결과는 모든 보드에 대해 유사하지 않으므로이 작업은 사용자가 수행해야합니다.
교정하는 가장 좋은 방법은 교정 예제 프로그램 (라이브러리와 함께 제공)을 사용하거나 직렬 모니터를 사용하여 오류를 감지하는 것입니다. 그러나이 프로젝트에서는 버튼의 크기가 크므로 보정이 큰 문제가되지 않아야하며 아래의 프로그래밍 섹션에서 화면 보정 방법도 설명하겠습니다.
Arduino와의 TFT LCD 연결:
2.4 인치 TFT LCD 화면은 완벽한 Arduino Shield입니다. Arduino Uno 상단에있는 LCD 화면을 직접 밀면 핀과 완벽하게 일치하고 안으로 미끄러집니다. 그러나 안전 문제로 터미널이 TFT LCD 화면과 접촉하는 경우를 대비하여 Arduino UNO의 프로그래밍 터미널을 작은 절연 테이프로 덮으십시오. UNO에 조립 된 LCD는 다음과 같습니다.
TFT LCD 용 Arduino 프로그래밍:
이 arduino 계산기 코드가 작동 하도록 SPFD5408 라이브러리를 사용 하고 있습니다. 이것은 Adafruit의 수정 된 라이브러리이며 LCD TFT 모듈과 원활하게 작동 할 수 있습니다. 이 기사의 끝에서 전체 프로그램을 확인할 수 있습니다.
참고: 이 라이브러리를 Arduino IDE에 설치하거나이 프로그램을 오류없이 컴파일하는 것이 매우 중요합니다.
이 라이브러리를 설치하려면 위의 링크를 클릭하기 만하면 Github 페이지로 이동합니다. 복제 또는 다운로드를 클릭하고 "ZIP 다운로드"를 선택합니다. zip 파일이 다운로드됩니다.
이제 Arduino IDE를 열고 Sketch-> Include Librarey->.ZIP 라이브러리 추가를 선택 합니다. 브라우저 창이 열리고 ZIP 파일로 이동하여 "확인"을 클릭합니다. 성공하면 Arduino의 왼쪽 하단에 "Library added to your Libraries"가 표시됩니다. 동일한 작업을 수행하는 자세한 지침은 Interfacing Tutorial에 나와 있습니다.
이제 Arduino IDE에서 아래 코드를 사용하여 터치 스크린 계산기가 작동하도록 Arduino UNO에 업로드 할 수 있습니다. 더 아래로 코드를 작은 부분으로 설명했습니다.
이 프로그램이 작동하려면 세 개의 라이브러리가 필요합니다. 이 세 라이브러리는 모두 위에 제공된 링크에서 다운로드 한 ZIP 파일로 제공됩니다. 아래에 표시된대로 코드에 간단히 포함 시켰습니다.
#포함
앞서 말했듯이 예상대로 작동하도록 LCD 화면을 보정해야하지만 여기에 제공된 값이 거의 보편적이라고 걱정하지 마십시오. 변수 TS_MINX, TS_MINY, TS_MAXX 및 TS_MAXY는 화면의 보정을 결정합니다. 보정이 만족스럽지 않다고 생각되면 주변에서 놀아도됩니다.
# TS_MINX 정의 125 # TS_MINY 85 정의 # TS_MAXX 965 정의 # TS_MAXY 905 정의
TFT LCD 화면은 많은 색상을 표시 할 수 있으므로이 모든 색상은 16 진수 값으로 입력해야합니다. 사람이 더 쉽게 읽을 수 있도록하기 위해 아래와 같이이 값을 변수에 할당합니다.
#define WHITE 0x0000 // Black-> White #define YELLOW 0x001F // Blue-> Yellow #define CYAN 0xF800 // Red-> 청록색 #define PINK 0x07E0 // 녹색-> 분홍색 #define RED 0x07FF // 청록색-> 빨간색 #define GREEN 0xF81F // 분홍색-> 녹색 #define BLUE 0xFFE0 // Yellow-> Blue #define BLACK 0xFFFF // White-> Black
이제 프로그래밍 부분에 들어갈 수 있습니다. 이 프로그램에는 세 가지 섹션이 있습니다. 하나는 버튼과 디스플레이가있는 계산기의 UI를 만드는 것입니다. 그런 다음 사용자 터치를 기반으로 버튼을 감지하고 최종적으로 결과를 계산하여 표시합니다. 하나씩 살펴 보겠습니다.
1. 계산기 UI 생성:
여기 에서 계산기의 사용자 인터페이스 를 디자인 하는 데 많은 창의력을 사용할 수 있습니다. 16 개의 버튼과 하나의 디스플레이 유닛이있는 계산기의 기본 레이아웃을 간단하게 만들었습니다. MS 페인트에 무언가를 그리는 것처럼 디자인을 구성해야합니다. 추가 된 라이브러리를 사용하면 선, 직사각형, 원, 문자, 문자열 및 기타 선호하는 색상을 그릴 수 있습니다. 이 기사에서 사용 가능한 기능을 이해할 수 있습니다.
저는 선과 상자 그리기 기능을 사용하여 90 년대 계산기와 매우 유사한 UI를 디자인했습니다. 각 상자의 너비와 높이는 60 픽셀입니다.
// 결과 상자를 그립니다. tft.fillRect (0, 0, 240, 80, CYAN); // 첫 번째 열 그리기 tft.fillRect (0,260,60,60, RED); tft.fillRect (0,200,60,60, BLACK); tft.fillRect (0,140,60,60, BLACK); tft.fillRect (0,80,60,60, BLACK); // 세 번째 열 그리기 tft.fillRect (120,260,60,60, GREEN); tft.fillRect (120,200,60,60, BLACK); tft.fillRect (120,140,60,60, BLACK); tft.fillRect (120,80,60,60, BLACK); // Draw Secound & Fourth Column for (int b = 260; b> = 80; b- = 60) {tft.fillRect (180, b, 60,60, BLUE); tft.fillRect (60, b, 60,60, BLACK);} // (int h = 80; h <= 320; h + = 60)에 대한 수평선 그리기 tft.drawFastHLine (0, h, 240, WHITE); // (int v = 0; v <= 240; v + = 60)에 대한 수직선 그리기 tft.drawFastVLine (v, 80, 240, WHITE); // (int j = 0; j <4; j ++) {for (int i = 0; i <4; i ++) {tft.setCursor (22 + (60 * i), 100 + (60 * 제이)); tft.setTextSize (3); tft.setTextColor (WHITE); tft.println (symbol);
2. 버튼 감지:
또 다른 도전 과제는 사용자 터치를 감지하는 것 입니다. 사용자가 어딘가를 터치 할 때마다 그가 터치 한 픽셀의 X 및 Y 위치를 확인할 수 있습니다. 이 값은 아래와 같이 println을 사용하여 직렬 모니터에 표시 할 수 있습니다.
TSPoint p = waitTouch (); X = py; Y = px; Serial.print (X); Serial.print (','); Serial.println (Y); // + ""+ Y);
너비와 높이가 각각 60 픽셀이고 4 개의 행과 (0,0)부터 시작하는 열을 가진 상자를 디자인했기 때문입니다. 각 상자의 위치는 아래 그림과 같이 예측할 수 있습니다.
그러나 실제적인 경우 이것은 결과가 아닙니다. 보정 문제로 인해 예상 값과 실제 값 사이에 큰 차이가있을 것입니다.
따라서 상자의 정확한 위치를 예측하려면 라인을 클릭하고 직렬 모니터에서 해당 위치를 확인해야합니다. 이것은 가장 전문적인 방법은 아니지만 여전히 완벽하게 작동합니다. 모든 선의 위치를 측정하고 아래 값을 얻었습니다.
이제 모든 상자의 위치를 알고 있기 때문입니다. 사용자가 아무 곳이나 터치하면 아래 그림과 같이 (X, Y) 값과 각 상자의 값을 비교하여 그가 터치 한 위치를 예측할 수 있습니다.
if (X <105 && X> 50) // 2 열의 버튼 감지 {if (Y> 0 && Y <85) {Serial.println ("Button 0"); // (숫자 == 0) 숫자 = 0; 그렇지 않으면 숫자 = (숫자 * 10) + 0; // 두 번 누름} if (Y> 85 && Y <140) {Serial.println ("Button 2"); if (숫자 == 0) 숫자 = 2; 그렇지 않으면 숫자 = (숫자 * 10) + 2; // 두 번 누름}
3. 숫자 표시 및 결과 계산:
마지막 단계는 결과를 계산하여 TFT LCD 화면에 표시하는 것입니다. 이 arduino 계산기 는 2 개의 숫자로만 연산 을 수행 할 수 있습니다. 이 두 숫자는 변수 "Num1"및 "Num2"로 명명됩니다. 변수“Number”는 Num1 및 Num2에서 값을주고 받고 결과를 가져옵니다.
용도가 버튼을 누르면 숫자에 한 자리가 추가됩니다. 다른 버튼을 누르면 이전 한 자리에 10을 곱하고 새 번호가 추가됩니다. 예를 들어, 8을 누른 다음 5를 누른 다음 7을 누릅니다. 그러면 먼저 변수가 8을 누른 다음 (8 * 10) + 5 = 85를 누른 다음 (85 * 10) +7 = 857을 누릅니다. 마지막으로 변수는 그것으로 가치 857.
if (Y> 192 && Y <245) {Serial.println ("버튼 8"); if (숫자 == 0) 숫자 = 8; 그렇지 않으면 숫자 = (숫자 * 10) + 8; // 다시 누름}
덧셈과 같은 작업을 수행 할 때 사용자가 덧셈 버튼을 누르면 숫자의 값이 Num1 로 전달되고 숫자가 0이되어 두 번째 숫자를 입력 할 준비가됩니다.
Equal을 누르면 Number의 값이 Num2 로 전송되고 각 계산 (이 경우 추가)이 수행되고 결과가 변수 "Number"에 다시 저장됩니다.
마지막으로이 값은 LCD 화면에 표시됩니다.
일:
이 Arduino 터치 스크린 계산기 의 작동 은 간단합니다. 아래 주어진 코드를 Arduino에 업로드하고 실행해야합니다. LCD 화면에 계산기가 표시됩니다.
이제 숫자를 입력하고 계산을 수행 할 수 있습니다. 지금은 두 개의 피연산자와 연산자로만 제한됩니다. 그러나 많은 옵션을 갖도록 코드를 조정할 수 있습니다.
계산을 수행 한 후 매번 화면의 값을 지우려면 "C"를 눌러야합니다. 프로젝트를 이해하고 비슷한 것을 만드는 것을 즐겼기를 바랍니다. 의심스러운 점이 있으면 포럼이나 아래 댓글 섹션에 자유롭게 게시하십시오. 다음 번에 또 다른 흥미로운 프로젝트와 함께 행복한 컴퓨팅까지 만나요 !!
또한 아래 데모 비디오를 확인하십시오.