-
아두이노 Uno R4 LED 숫자, 게이지 토글카테고리 없음 2023. 10. 11. 16:03
LED Matrix gauge and number toggle
아두이노 LED Matrix에 가변저항을 조절하여 그에 따른 값을 숫자와 게이지로 나타내는
프로그램을 만들어보겠습니다. 먼저 Fritzing 프로그램을 통해 미리 회로도를 만들어봤습니다.
작성 코드
#include "ArduinoGraphics.h" #include "Arduino_LED_Matrix.h" ArduinoLEDMatrix matrix; char buf[4]; // 숫자 텍스트를 저장하는 문자 배열 int D = 0; // 0: 숫자 1: 게이지 토글 변환 const int buttonPin = 2; // 버튼 핀 번호 void setup() { Serial.begin(115200); // 시리얼 통신 초기화 matrix.begin(); // LED Matrix 초기화 설정 matrix.beginDraw(); // 그리기 초기화 matrix.stroke(0xFFFFFFFF); // 선의 색상 matrix.textFont(Font_5x7); // 텍스트 폰트를 설정 matrix.beginText(1, 1, 0xFFFFFF); (1,1)에서 시작하여 하얀색 pinMode(buttonPin, INPUT_PULLUP); // 버튼 핀을 입력으로 설정, 내부 풀업 저항 } void drawBarGraph(int n) { // 게이지 uint32_t frame[3] = {0}; // LED 패턴 배열 int nFull = floor(n / 32); // LED 그룹 개수 int nDots = n % 32; // LED 개수 int i; for (i = 0; i < nFull; i++) frame[i] = 0xffffffff; if (i == nFull && nDots != 0) // 끌 LED 결정 frame[i] = 0xffffffff << (32 - nDots); // 쉬프트한 만큼 LED 끄기 matrix.loadFrame(frame); // LED Matrix에 게이지 표시 } void loop() { int buttonState = digitalRead(buttonPin); Serial.println(D); if (buttonState == LOW) { // 버튼이 눌렸을 때 D = (D + 1) % 2; // 토글 delay(100); } int a = analogRead(A1); Serial.println("A = " + String(a)); int n = map(a, 0, 1023, 0, 99); // 가변저항의 값 0에서 1023을 두자리 숫자로 바꾸기 위하여 0에서 99로 변환 Serial.println("N = " + String(n)); // 변환한 가변저항 값을 출력 if (D == 0) { // 숫자 토글 drawBarGraph(n); } else if (D == 1) { // 토글 전환 sprintf(buf, "%2d", n); // 가변저항 값 숫자 출력 matrix.println(buf); matrix.endText(); } delay(300); }
위와 같이 코드를 짜보았습니다.
가변저항이 변하는 값에 따라 0에서 1023을 0에서 99인 두 자리 숫자로 표현하여 이를 버튼을 눌렀을 때
토글 되는 방식으로 게이지 형태 또는 두 자리 숫자 형태로 LED Matrix에 나타나도록 작성했습니다.
작동 영상
이렇게 가변저항을 돌리면 LED 매트릭스가 달라지고 버튼을 누르면 게이지와 숫자가 토글됩니다.
감사합니다.