아두이노 우노로 기초 계산기 만들기 - 쉬운 프로젝트
부품 및 소모품
| 아두이노 우노 (Arduino UNO) |
1개 |
| 아두이노 101 |
1개 |
| 아두이노 나노 R3 |
1개 |
| 아두이노 윤 (Arduino Yun) |
1개 |
| 아두이노 메가 2560 |
1개 |
| 아두이노 듀 (Arduino Due) |
1개 |
| 아두이노 레오나르도 |
1개 |
보드만 있으면 됩니다. 오리지널이든 호환 보드든 아두이노 IDE에서 작동하면 이 프로젝트도 작동합니다.
앱 및 온라인 서비스
프로젝트 소개
어느 날 수학 선생님이 아두이노 이야기를 하던 저에게 "아두이노로 수학도 할 수 있니?"라고 물으셨습니다. 전 "모르겠어요"라고 답했고, 그게 어떻게 가능할지 생각하게 만들었습니다. 방법을 알아냈고 이제 공유합니다.
여기 있습니다! 아두이노로 수학을 하는 아주 간단한 방법. 전 아두이노 우노를 썼지만 어떤 보드든 작동할 거라고 믿습니다.
단계별 과정은 아주 간단합니다:
- 보드를 컴퓨터에 연결
- 아래 코드 업로드
- 시리얼 모니터 활성화
- 유효한 계산식 입력 (코드 참조)
더 나은 계산기를 만들 계획이지만 지금은 기본 연산만 가능합니다. '더 나은' 계산기를 원하시면 알려주세요. 기대해 주세요!
코드
계산기 코드
숫자와 연산자를 함께 입력하세요. 예: "2+3" 또는 "8*2", 결과를 출력합니다.
/* 시리얼 아두이노 계산기
* 이 프로젝트에서 아두이노의 도움으로 기본 산술을 할 수 있습니다. 아주 원시적인 계산기 같은 거죠.
* 두 숫자와 신호를 받아 연산을 수행합니다. 연산은 +, -, *, / 가능.
* 예: "2+3" 전송 (따옴표 없이, 공백 없이), 아두이노가 5 응답.
* "7-3" 입력하면 4 응답.
* 제작: João Paulo Rodrigues Poltronieri
* 이 코드는 퍼블릭 도메인입니다.
*/
// 정보를 저장할 변수 생성
long number1; // 첫 번째 숫자, 시리얼 모니터로 전송
// long 변수라 큰 숫자도 사용 가능
long number2; // 두 번째 숫자
char calSignal; // 계산 신호 저장용 char 변수
long result; // 계산 결과
void setup() {
Serial.begin(9600); // 시리얼 통신 시작
Serial.println("계산식을 보내주세요");
Serial.println("예: 2+3");
Serial.println(); // 테스트용 출력, 빈 줄
}
void loop() {
while(Serial.available() > 0) { // 아두이노로 데이터가 전송되는 동안
number1 = Serial.parseInt(); // 첫 번째 숫자
// "Serial.parseInt" 사용으로 "23" 입력 시 number1에 23 저장
// Serial.read() 썼으면 2만 저장됨
calSignal = Serial.read(); // 첫 번째 숫자 뒤 첫 번째 정보 = 연산자
number2 = Serial.parseInt(); // 두 번째 숫자 저장
resolucao(); // 계산 해결 커스텀 함수
Serial.println("결과 = ");
Serial.println(result); // 계산 결과 출력
Serial.println(); // 줄 바꿈
Serial.println("또 다른 계산 부탁드려요"); // 포르투갈어 원문 유지
Serial.println(); // 줄 바꿈
}
}
void resolucao() {
// 계산을 해결하는 커스텀 함수
switch (calSignal) {
// "switch...case"로 스케치 공간 절약. 기본적으로 여러 "if" 문 검증
// calSignal에 든 값이 무엇인지 검증. 기본적으로 계산 "신호" 검증
case '+' : // calSignal이 '+'면
result = number1 + number2; // 숫자 더하기
break; // case 탈출
case '-' : // calSignal이 '-'면
result = number1 - number2; // 숫자 빼기
break;
case '*' : // calSignal이 '*'면
result = number1 * number2; // 숫자 곱하기
break;
case '/' : // calSignal이 '/'면
result = number1 / number2; // 숫자 나누기
// 나눗셈이 정확하지 않으면 결과는 가장 가까운 정수
break;
default : // 위 경우가 아니면
Serial.println("잘못된 계산식"); // 에러 생성
Serial.println();
result = 0;
}
}
주의: 원본 코드에 버그가 있습니다. 모든 case가 `case '+' :`로 되어 있어 -, *, / 연산이 작동하지 않습니다. 위 코드에서 수정했습니다.
회로도
기본적으로 보드만 있으면 됩니다.