251104 [ Day 80 ] - Arduino (2)

TaeHyun·2025년 11월 4일

TIL

목록 보기
93/182

시작하며

오늘도 아두이노에 대해 공부했다. 아직 회로 구성이 익숙하지 않아서 많이 어렵지만, 실물로 보이는 것이 있기 때문에 재미가 있는 것 같다.

아두이노 스케치

LED 3개 조절하기

int R_Pin = 12;
int G_Pin = 11;
int B_Pin = 10;

void setup() {
  pinMode(R_Pin, OUTPUT);
  pinMode(G_Pin, OUTPUT);
  pinMode(B_Pin, OUTPUT);
}

void loop() {
  digitalWrite(R_Pin, HIGH);
  delay(500);
  digitalWrite(G_Pin, HIGH);
  delay(500);
  digitalWrite(B_Pin, HIGH);
  delay(500);  

  digitalWrite(R_Pin, LOW);
  delay(500);  
  digitalWrite(G_Pin, LOW);
  delay(500);  
  digitalWrite(B_Pin, LOW);
  delay(500);  
}

PWM 활용

int R_Pin = 3;

void setup() {
  pinMode(R_Pin, OUTPUT);
}

void loop() {
  analogWrite(3, 255); // 3번 핀 최대 출력
  delay(500);
  analogWrite(3, 128); // 3번 핀 50% 출력
  delay(500);
  analogWrite(3, 0); // 3번 핀 0% 출력
  delay(500);
}
  • PWM에서 For문 활용
int ledPin = 3;
int brightness = 0;
void setup() {
  pinMode(ledPin, OUTPUT);
  Serial.begin(9600);
}

void loop() {
  for(brightness = 0; brightness < 255; brightness ++) {
    analogWrite(ledPin, brightness);
    delay(10);
    Serial.println(brightness);
  }
}

택트 스위치 활용

  • 버튼을 누르면 전기 회로가 통하게 되는 소자
int pushButton = 2; // 연결 핀 변수 선언

void setup() {
  Serial.begin(9600); // PC와 시리얼 통신 시작, 통신 속도 = 9600 baud
  pinMode(pushButton, INPUT); // 2핀에 연결된 스위치가 눌렸는지 읽어들이기 위해 INPUT 모드 설정
}

void loop() {
  int buttonState = digitalRead(pushButton);
  Serial.println(buttonState);
  delay(1);
}

플로팅 현상
전기가 흐를 때, 주변의 자기장과 같은 전기 에너지 때문에 신호가 불안정하게 변해 부정전압으로 인한 오작동이 발생하는 현상

  • 풀업 저항 : 스위치 제어 핀에 연결된 라인과 전원 라인 사이에 저항을 연결해주는 방법
  • 풀다운 저항 : 스위치 제어 핀에 연결된 라인과 GND 라인 사이에 저항을 연결하는 방법
  • 버튼을 눌렀을 때 전구 켜지게 하기
    • 스위치를 5v에 연결
    • 스위치 다른쪽에 저항 연결하여 LED + 와 연결
    • LED - 와 GND 연결

2개의 택트 스위치 활용

int Switch1 = 12;
int Switch2 = 11;
int RedPin = 4;
int BluePin = 5;

void setup() {
  Serial.begin(9600);
  pinMode(Switch1, INPUT_PULLUP); 
  pinMode(Switch2, INPUT_PULLUP); 
  pinMode(RedPin, INPUT_PULLUP); 
  pinMode(BluePin, INPUT_PULLUP); 
}

void loop() {
  int SW1 = digitalRead(Switch1);
  digitalWrite(RedPin, LOW);
  int SW2 = digitalRead(Switch2);
  digitalWrite(BluePin, LOW);

  if(SW1 == LOW){
    Serial.print("Switch : ");
    Serial.println("RED");
    digitalWrite(RedPin, HIGH);
    delay(100);
  }

  if(SW2 == LOW){
    Serial.print("Switch : ");
    Serial.println("BLUE");
    digitalWrite(BluePin, HIGH);
    delay(100);
  }
}

마치며

프로젝트를 위해서 빨리 아두이노에 익숙해져야 될 것 같아서 더 열심히 공부를 해야겠다.

profile
Hello I'm TaeHyunAn, Currently Studying Data Analysis

0개의 댓글