시리얼
1. Serial.begin(9600);
"자, 이제부터 대화 시작한다! 속도는 9600으로 맞춰!"
- 설명: 통신을 준비하는 명령어입니다. 보통 setup() 안에 딱 한 번 써줍니다.
- 비유: 전화를 걸 때 상대방과 내 목소리 톤(속도)을 맞추는 것과 같아요. 9600이 가장 표준적인 속도입니다. 양쪽 속도가 다르면 글자가 깨져서 보입니다.
2. Serial.available()
"우체통에 편지 들어온 거 있어? 있으면 몇 통이나 있어?"
- 설명: 현재 아두이노로 들어온 데이터가 있는지 확인하는 함수입니다.
- 비유: 우체통 입구를 살짝 열어서 편지가 들어있는지 확인하는 거예요. 편지가 있으면 그 개수(바이트 수)를 알려주고, 없으면 0이라고 답합니다. 보통 if (Serial.available() > 0) 요렇게 세트로 씁니다.
3. Serial.read()
"제일 앞에 있는 편지 한 통 꺼내서 읽어봐!"
- 설명: 들어온 데이터를 진짜로 읽어오는(가져오는) 명령어입니다.
- 비유: 우체통에서 편지를 딱 한 장 꺼내는 행위입니다. 한 번 읽고 나면 그 데이터는 우체통에서 사라집니다.
사용자 입력받기
void setup() {
Serial.begin(115200);
}
void loop() {
if (Serial.available()) {
char userInput = Serial.read();
Serial.print(userInput);
}
}

LED 켜고 끄기
const int LED = 13;
void setup() {
Serial.begin(115200);
pinMode(LED, OUTPUT);
}
void loop() {
if (Serial.available()) {
char userInput = Serial.read();
switch(userInput) {
case 'n':
digitalWrite(LED, HIGH);
break;
case 'f':
digitalWrite(LED, LOW);
break;
default:
break;
}
}
}

LED 밝기 조절하기
const int LED = 11;
void setup() {
Serial.begin(115200);
pinMode(LED, OUTPUT);
}
void loop() {
if (Serial.available()) {
char userInput = Serial.read();
switch(userInput) {
case '0': analogWrite(LED, 0); break;
case '1': analogWrite(LED, 25*1); break;
case '2': analogWrite(LED, 25*2); break;
case '3': analogWrite(LED, 25*3); break;
case '4': analogWrite(LED, 25*4); break;
case '5': analogWrite(LED, 25*5); break;
case '6': analogWrite(LED, 25*6); break;
case '7': analogWrite(LED, 25*7); break;
case '8': analogWrite(LED, 25*8); break;
case '9': analogWrite(LED, 25*9); break;
default: break;
}
}
}

digitalRead(pin):특정 핀의 값을 읽는 명령어
pin: 읽고자 한느 핀 번호 HIGH 또는 LOW 값을 돌려준다. digitalRead 함수는 할당된 핀이 VCC(=5V) 또는 GND에 연결된 상태에 따라 논리적으로 1, 0을 읽는 함수이다.
0, 1 읽기 - 디지털 입력 핀을 0V에 연결하면 논리적으로 0 값이 입력됨
const int digitalPin = 2;
void setup() {
Serial.begin(115200);
pinMode(digitalPin, INPUT);
}
void loop() {
int digitalValue = digitalRead(digitalPin);
Serial.println(digitalValue);
}
1

0

버튼회로 구성하기 - 누르면 1, 떼면 0
const int digitalPin = 2;
void setup() {
Serial.begin(115200);
pinMode(digitalPin, INPUT);
}
void loop() {
int digitalValue = digitalRead(digitalPin);
Serial.println(digitalValue);
}

버튼값에 따라 LED 켜고 끄기
const int ledPin = 13;
const int buttonPin = 2;
void setup() {
pinMode(ledPin, OUTPUT);
pinMode(buttonPin, INPUT);
}
void loop() {
int buttonInput = digitalRead(buttonPin);
digitalWrite(ledPin, buttonInput);
}
버튼 값에 따라 LED 밝기 조절하기
const int ledPin = 11;
const int buttonPin = 2;
void setup() {
pinMode(buttonPin, INPUT);
}
void loop() {
int buttonInput = digitalRead(buttonPin);
if(buttonInput == HIGH) {
for (int t_high=0; t_high<=255; t_high++) {
analogWrite(ledPin, t_high);
delay(4);
}
} else {
analogWrite(ledPin, 0);
}
}

LED 주사위 만들기
const int led[6] = { 3,5,6,9,10,11 };
const int buttonPin = 2;
void setup() {
for(int x=0; x<=5; x++) {
pinMode(led[x], OUTPUT);
}
pinMode(buttonPin, INPUT);
}
void loop() {
int buttonInput = digitalRead(buttonPin);
if (buttonInput == HIGH) {
for (int x=0; x<=5; x++) {
for (int x=0; x<=5; x++) {
digitalWrite(led[x], LOW);
}
digitalWrite(led[x], HIGH);
buttonInput = digitalRead(buttonPin);
if (buttonInput == LOW) break;
delay(50);
}
}
}
analogRead(pin): 특정 아날로그 핀의 값을 읽는 명령어
pin: 읽고자 하는 아날로그 핀 번호 0~1023 사이의 값을 돌려준다
ADC값 간단하게 읽어보기
const int analogPin = A0;
void setup() {
Serial.begin(115200);
}
void loop() {
int analogValue = analogRead(analogPin);
Serial.println(analogValue);
}
1023

0

679~680 출력됨 -> (1024/5V) * 3.3V = 675.8V 가 나와야한다고 함

가변저항 회로 구성하기 -> 0~1023 사이의 값이 나온다
const int analogPin = A0;
void setup() {
Serial.begin(115200);
}
void loop() {
int analogValue = analogRead(analogPin);
Serial.println(analogValue);
}

가변저항 입력에 따라 LED 밝기 조절하기
const int ledPin = 3;
const int analogPin = A0;
void setup() {
Serial.begin(115200);
}
void loop() {
int sensorInput = analogRead(analogPin);
Serial.println(sensorInput);
analogWrite(ledPin, sensorInput/4);
}
디지털 LED 막대 측정기
const int led[6] = { 3, 5, 6, 9, 10, 11 };
const int analogPin = A0;
void setup() {
Serial.begin(115200);
for (int x=0; x<=5; x++) {
pinMode(led[x], OUTPUT);
}
}
void loop() {
int sensorInput = analogRead(analogPin);
Serial.println(sensorInput);
for (int i = 0; i < 6; i++) {
// 기준값: 146, 292, 438, 584, 730, 876
if (sensorInput > (146 * (i + 1))) {
digitalWrite(led[i], HIGH);
} else {
digitalWrite(led[i], LOW);
}
}
}
아날로그 LED 막대 측정기
const int led[6] = { 3, 5, 6, 9, 10, 11 };
const int analogPin = A0;
void setup() {
Serial.begin(115200);
for (int x=0; x<=5; x++) {
pinMode(led[x], OUTPUT);
}
}
void loop() {
int sensorInput = analogRead(analogPin);
for (int n=0; n<=5; n++) {
if (sensorInput/171 >= 1+n) {
analogWrite(led[n], 255);
} else if (sensorInput / 171 >= 0+n) {
analogWrite(led[n], int(sensorInput%171/171.0*255));
}
}
}
빛 센서: 빛의 양이 적을수록(어두울수록) 저항값은 높아지고, 빛의 양이 많을수록 저항값은 낮아짐
빛 센서값 읽어보기 - 빛 센서를 손으로 가리면 값이 700 대까지도 나옴
const int ledPin = 10; // 전구가 꽂힌 10번 핀
const int analogPin = A0;
void setup() {
Serial.begin(115200);
// [추가] 10번 핀을 전기를 내보내는 '출력' 모드로 설정합니다.
pinMode(ledPin, OUTPUT);
}
void loop() {
int analogValue = analogRead(analogPin);
Serial.println(analogValue);
// [방법 1] 무조건 꽉 켜기
digitalWrite(ledPin, HIGH);
}

빛 센서 값에 따라 밝기 조절하기
const int ledPin = 10; // 전구가 꽂힌 10번 핀
const int analogPin = A0;
void setup() {
Serial.begin(9600);
}
void loop() {
int sensorInput = analogRead(analogPin);
Serial.println(sensorInput);
analogWrite(ledPin, sensorInput/4);
}
'아두이노' 카테고리의 다른 글
| 아두이노 - 서보모터, 초음파 (0) | 2026.03.23 |
|---|---|
| 아두이노 - Timer (빛, 부저) (0) | 2026.03.23 |
| 아두이노 - 조이스틱, 부저, 서보, 초음파 (0) | 2026.03.22 |
| 아두이노 LED 회로 구성하기 (0) | 2026.03.21 |
| 아두이노 시작 (0) | 2026.03.21 |