#include <TM1637Display.h>
const int CLK = 3;
const int DIO = 4;
TM1637Display display(CLK, DIO);
const int JOY_X = A1; // 조이스틱 X축 핀
const int JOY_Y = A2; // 조이스틱 Y축 핀
int joyXValue = 0; // 조이스틱 X축 값
int joyYValue = 0; // 조이스틱 Y축 값
int totalValue = 0; // 조이스틱의 총합
void setup()
{
Serial.begin(9600);
display.setBrightness(0x0f); // 최대 밝기로 설정
// 아날로그핀 명시적 표시
pinMode(JOY_X, INPUT);
pinMode(JOY_Y, INPUT);
}
void loop()
{
readAnalogValues(); // 조이스틱 +- x , +-y값 읽기
calculatePlusXY(); // 조이스틱 +x , +y 방향으로 계산
calculateMinusXY(); // 조이스틱 -x , -y 방향으로 계산
printSerial();
}
void readAnalogValues()
{
// 조이스틱 X축 , y축 값 읽기
joyXValue = analogRead(JOY_X);
joyYValue = analogRead(JOY_Y);
}
void calculatePlusXY()
{
// X축이 오른쪽 방향이면 + 값으로 계산
if (joyXValue > 600)
{
totalValue++;
}
// Y축이 위쪽 방향이면 + 값으로 계산
if (joyYValue > 600)
{
totalValue++;
}
}
void calculateMinusXY()
{
// X축이 왼쪽 방향이면 - 값으로 계산
if (joyXValue < 400)
{
totalValue--;
}
// Y축이 아래쪽 방향이면 - 값으로 계산
if (joyYValue < 400)
{
totalValue--;
}
}
// 테스트 위한 시리얼 출력 totalValue 값 출력
void printSerial()
{
Serial.print("Total Value: ");
Serial.println(totalValue); // 수정: totlaValue -> totalValue
delay(1); // 1ms 대기
display.showNumberDec(totalValue, true, 4, 0); // 7Segment 에 totalValue 값 출력
}