Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
Tags
- ATmega328p
- 카이캐드
- 우송대학교
- 우송대 라즈베리파이 피코
- androidstudio
- 다형성
- 아두이노
- L293D
- 라즈베리파이 피코
- Pico
- 재정의함수
- ESP32_S2_WROVER
- kotlin
- PICO4
- KiCad
- 개발 보드
- 안드로이드스튜디오
- 코틀린
- ESP32_S2
- 우송대
- 7세그먼트
- 업캐스팅
- 카이캐드 설치
- 추상화함수
- 카이캐드 다운로드
- 모터제어
- 아두이노 모터 드라이버
- Arduoin
- 다운캐스팅
- 마이크로컨트롤러
Archives
- Today
- Total
개발자의 생활
2023년 1학기 2주차 실습과제 본문
2-2
LED4개 점등 소등하기
소스코드
byte LED_PinMap[4] = {10, 11, 12, 13};
void setup() {
for (int i = 0; i < 4; i++) {
// 4개의 LED를 출력으로 선언하기 위해 0~3까지 반복
pinMode(LED_PinMap[i], OUTPUT);//출력핀 설정
}
}
void loop() {
for(int i = 0; i < 4; i++){
// 모든LED를 점등후 소등
digitalWrite(LED_PinMap[i],
!digitalRead(LED_PinMap[i]));
// 현재 핀의 전압상태 1인지 0인지 를 가져와 반전시킨다.
}
delay(1000);
}
2-3
시리얼모니터로 1~4까지 입력받고 순서대로 LED점등후 소등 시키고 O, X로 4비트 표현
소스코드
byte LED_PinMap[4] = {10, 11, 12, 13};
char char_getdata = "";
int num = 0;
void setup() {
Serial.begin(9600);
// 시리얼 통신속도를 9600으로 설정
for (int i = 0; i < 4; i++) {
// 4개의 LED를 출력으로 선언하기 위해 0~3까지 반복
pinMode(LED_PinMap[i], OUTPUT);//출력핀 설정
}
}
void loop() {
if (Serial.available()) {//시리얼 입력이 들어왔다면
char_getdata = Serial.read();
// 문자형 변수에 입력받은 문자1개를 담는다.
if (char_getdata >= '1' && char_getdata <= '4') {
// 입력받은 문자의 아스키값을 비교하여
// 문자1의 아스키값 49 ~ 문자 4의 아스키값 53 사이의 값만 입력을 허용
num = char_getdata - '0' - 1;
// 문자를 정수로 바꾸기 위해
// 문자 0의 아스키값을 빼고 0부터 시작하기 위해 -1을 해준다
for (int i = 0; i < 4; i++) {
// 0~3까지 반복
if (num == i) {
// 입력받은 값과 비교하여 같다면 실생
Serial.print("O ");
digitalWrite(LED_PinMap[i], true);
} else {
// 입력받은 값과 비교하여 다르다면 실생
Serial.print("X ");
digitalWrite(LED_PinMap[i], false);
}
}
Serial.println("");//4bit O X 출력이 끝나면 줄바꿈
delay(50);//led깜빡임을 눈이 확인가능하도록 약간의 딜레이를 준다.
digitalWrite(LED_PinMap[num], false);//마지막led 소등
}
}
}
2-4
시리얼모니터로 4bit의 10진수를 입력받고 2진수로 변경후 LED점등시키고 O, X로 4비트 표현
소스코드
byte LED_PinMap[4] = {10, 11, 12, 13};
char char_getdata = "";
String getnum_str = "";
byte getnum_byte = 0;
void setup() {
Serial.begin(9600);//시리얼 통신속도를 9600으로 설정
for (int i = 0; i < 4; i++) {
// 4개의 LED를 출력으로 선언하기 위해 0~3까지 반복
pinMode(LED_PinMap[i], OUTPUT);//출력핀 설정
}
}
void loop() {
if (Serial.available()) {//시리얼 입력이 들어왔다면
char_getdata = Serial.read();
// 문자형 변수에 입력받은 문자1개를 담는다
if (char_getdata == '\n') {//개행이 되면(입력이 끝나면)
getnum_byte = getnum_str.toInt();
// 문자열 변수에 들어간 숫자를 정수로 변환
for (int i = 3; i >= 0; i--) {//4bit이기에 4번 반복
// 10진수를 2진수로 변환하는 로직
if (getnum_byte % 2 == 1) {
// 2로 나누었을때 나머지값이 1 이라면
Serial.print("O ");
digitalWrite(LED_PinMap[i], true);
} else {
// 2로 나누었을때 나머지값이 0 이라면
Serial.print("X ");
digitalWrite(LED_PinMap[i], false);
}
getnum_byte /= 2;
}
Serial.println("");
// 4bit O X 출력이 끝나면 줄바꿈
getnum_str = "";
} else {//다음 문자가 더 있다면
getnum_str += char_getdata;
// 단일문자를 String변수에 연결시켜 문자열을 만든다.
}
}
}
'과제 > 아두이노' 카테고리의 다른 글
2023년 1학기 6주차 (0) | 2023.04.16 |
---|---|
2023년 1학기 5주차 (7세그먼트 제어) (0) | 2023.04.07 |
2023년 1학기 4주차 과제 (0) | 2023.04.01 |
2023년 1학기 3주차 과제(millis사용하기) (0) | 2023.03.24 |