아두이노, 농구대 점수판 예제 코드
글. 오상문 sualchi@daum.net
모형 농구대를 제작하고 공이 통과할 때마다 1점씩 올리는 예제입니다.
공을 저 사진의 바구니 그림 통 안으로 넣습니다.
흰 상자에 아두이노 보드가 들어있으며, 디스플레이를 고정하는 지지대이기도 합니다.
초음파 센서는 원통에 부착되었고 상자 속 아두이노 보드와 점프선으로 연결됩니다.
참고로 농구대 링(상자)은 앞에서는 잘 안보이지만 뒤쪽 고정대에 장착된 상태입니다.
[LCD 4핀] [아두이노]
-----------------------------------------
GND ------------------- GND
VCC ------------------- 5V
SDA ------------------- A4
SCL ------------------- A5
[초음파 센서] [아두이노]
-----------------------------------------
VCC ---------------------- 5V
GND ---------------------- GND
TRIG ---------------------- 디지털 7번핀
ECHO --------------------- 디지털 6번핀
[그림] 모형으로 만든 농구대와 점수 출력용 디스플레이 (상자에 아두이노 보드 들어감)
[그림] 농구공(실제로는 탁구공 ^^)이 통과되면 점수가 1점 올라갑니다.
디스플레이가 잘 안보이는데 자세히 보면 0에서 1로 올라간 것을 볼 수 있습니다.
[그림] 농구대 박스 내부에 설치된 아두이노와 디스플레이 연결 모습
다음은 예제 코드입니다.
이 예제는 메뉴에서 '툴 > 라이브러리 관리'에서 설치된 라이브러리에
LiquidCrystal_I2C가 있는지 확인하고
없으면 관리 창에서 이 라이브러리를 검색해서 설치해야 합니다.
// Compatible with the Arduino IDE 1.0
// Library version:1.1
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#define TRIG 7
#define ECHO 6
int score = 0;
int timer = 60;
unsigned long distance;
// set the LCD address to 0x20 for a 16 chars and 4 line display
// set the LCD address to 0x27 for a 16 chars and 2 line display
LiquidCrystal_I2C lcd(0x27,16,2); // 2줄 디스플레이로 설정
void setup()
{
Serial.begin(9600);
pinMode(TRIG, OUTPUT); // 초음파 출력부 설정
pinMode(ECHO, INPUT); // 초음파 입력부 설정
lcd.init(); // LCD 초기화
lcd.backlight(); // 백라이트 on
lcd.clear(); // 내용 지움
lcd.print("Score: "); // "Score: " 문자열 출력
lcd.print(score); // 이어서... 점수 출력
// lcd.setCursor(0,1); // 나중에 시간 제한 설정시 사용하려고 설명문으로 처리함
// lcd.print("Time: ");
// lcd.print(timer);
}
void loop()
{
// 초음파 센서 측정 부분
digitalWrite(TRIG, LOW);
delayMicroseconds(1);
digitalWrite(TRIG, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG, LOW);
distance = pulseIn(ECHO, HIGH)/29/2; // 확인 거리를 cm 단위로 변경
if(distance < 5) { // 거리 5cm 미만이면 공이 통과하는 경우이고 점수 1점 올림
score++;
lcd.clear();
lcd.print("Score: ");
lcd.print(score);
// lcd.setCursor(0,1); // 나중에 시간 제한 설정시 사용하려고 설명문으로 처리함
// lcd.print("Time: ");
// lcd.print(timer);
}
delay(10); // 0.01초 단위로 초음파 검사. 더 늘려도 될 것 같지만...
}
<이상>
'아두이노, 라즈베리파이' 카테고리의 다른 글
아두이노, DC 모터 제어 사이트 링크 (0) | 2018.12.23 |
---|---|
아두이노, 타이머 지정 실행 SimpleTimer 라이브러리 (0) | 2018.12.19 |
아두이노, 4열(4 digits) 7 세그먼트 출력 자료 링크 (0) | 2018.12.05 |
아두이노, 시리얼 IC2 LCD 디스플레이 루프 출력 처리 (0) | 2018.12.05 |
아두이노, 장착한 LCD 주소 검색 I2C 스캐너 소스 (0) | 2018.12.04 |