ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 아두이노 Uno R4 LED 숫자, 게이지 토글
    카테고리 없음 2023. 10. 11. 16:03

    LED Matrix gauge and number toggle


    아두이노 LED Matrix에 가변저항을 조절하여 그에 따른 값을 숫자와 게이지로 나타내는

    프로그램을 만들어보겠습니다. 먼저 Fritzing 프로그램을 통해 미리 회로도를 만들어봤습니다.

    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 매트릭스가 달라지고 버튼을 누르면 게이지와 숫자가 토글됩니다.

    감사합니다.


Designed by Tistory.