-
포텐시오미터의 값을 읽어 7Segment x4EA에 표시하기Arduino/7 Segment x 4EA 2020. 11. 2. 18:27
포텐시오의 하드웨어적인 연결은 아래를 참고하자.
designatedroom87.tistory.com/201?category=896892
포텐시오미터의 값을 읽어 LED밝기 조절하기
부품의 설명 신호는 아두이노의 A0핀으로 읽는다. 저항의 크기를 가변으로 조절하는 장치이며, 가변저항은 극성이 없으므로 VCC와 GND가 바뀌어도 된다.입출력 형태는 아두이노의 값을 입력한다.
designatedroom87.tistory.com
연결하면 아래와 같이 된다.
소스는 아래의 내용의 거의 다 가지고 온다.
아래를 참고해보자.
designatedroom87.tistory.com/274?category=900663
시리얼 통신을 이용해서 입력받은 수를 7Segment x4에 출력하기
우선 시리얼 통신을 하기 전에, 문제를 좀 더 간단히 해보자. 시리얼 통신을 통해서 4자리 숫자 받았다고 가정해보자. 그런 이후에 FourDigitalNum라는 함수의 매개변수로 이 숫자를 전달하면 7Segment
designatedroom87.tistory.com
소스 코드
더보기/* 포텐시오미터의 아날로그 값(0~1023)을 디지털 핀에 출력한다. */ #define D1 10 #define D2 11 #define D3 12 #define D4 13 #define DIGIT 4 // 7SEGMENT에 표현할 수 있는 자리 수 // 행의 수는 우리가 표현할 십진수의 개수이며, // 열의 수는 십진수에 따른 수 표기에 필요한 세븐세그먼트핀의 수 bool num[10][8] = { {1,1,1,1,1,1,0,0}, // 숫자0 {0,1,1,0,0,0,0,0}, // 숫자1 {1,1,0,1,1,0,1,0}, // 숫자2 {1,1,1,1,0,0,1,0}, // 숫자3 {0,1,1,0,0,1,1,0}, // 숫자4 {1,0,1,1,0,1,1,0}, // 숫자5 {1,0,1,1,1,1,1,0}, // 숫자6 {1,1,1,0,0,0,0,0}, // 숫자7 {1,1,1,1,1,1,1,0}, // 숫자8 {1,1,1,1,0,1,1,0} // 숫자9 }; // 0000에서 9999까지를 디지털 핀에 출력하는 함수 // 매개변수는 디지털 핀에 출력할 수 void FourDigitalNum(int _num) { int digit = 1000; int l_num = _num; int numArr[DIGIT] = {0,0,0,0}; // 디지털 핀에 출력할 숫자를 저장 int quota; // l_num을 digit로 나눈 몫 int remainer; // l_num을 digit로 나눈 나머지 int i = 0; // numArr배열의 인덱스 // 1. 숫자 분리 while (l_num != 0) { quota = l_num / digit; // 몫을 구한다. remainer = l_num % digit; // 나머지를 구한다. numArr[i++] = quota; // 출력할 수의 맨 앞자리 부터 저장 l_num = remainer; // 그 다음 자리의 수를 찾기 위해 설정 digit /= 10; // 그 다음 자리의 수를 찾기 위해 설정 } // 2. 분리한 수를 디지털 핀에 출력 for (int i = 0; i < DIGIT; i++) { DigitalNum(D1 + i, numArr[i]); delay(5); DigitalPinInit(); Serial.println(numArr[i]); } } void DigitalNum(int _num) { for (int i = 0; i < 8; i++) { digitalWrite(i + 2, num[_num][i]); } delay(1000); } // 디지털핀의 원하는 수를 표시한다. void DigitalNum(int Dpin, int _num) { digitalWrite(Dpin,LOW); for (int i = 0; i < 8; i++) { digitalWrite(i + 2, num[_num][i]); } } // 디지털 핀들을 초기화하는 함수 void DigitalPinInit() { // 디지털 핀에 대한 초기화 for (int i = 10; i < 14; i++) { pinMode(i, OUTPUT); digitalWrite(i,HIGH); } } void setup() { // put your setup code here, to run once: Serial.begin(9600); // 2번핀부터 9번핀까지 모두 설정 for (int i = 2; i < 10; i++) { pinMode(i, OUTPUT); digitalWrite(i,LOW); } // 디지털 핀에 대한 초기화 DigitalPinInit(); } void loop() { int poten = analogRead(A0); FourDigitalNum(poten); }
'Arduino > 7 Segment x 4EA' 카테고리의 다른 글
시리얼 통신을 이용해서 입력받은 수를 7Segment x4에 출력하기 (0) 2020.11.02 7Segment x 4EA와 아두이노의 연결 & 숫자 출력하기 (0) 2020.11.02