아두이노 틴커태드 회로정리

SMALL

 

 

 

 

LED 깜빡이기

 

 

 



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

void loop()
{
  digitalWrite(13, HIGH);
  delay(1000); // Wait for 1000 millisecond(s)
  digitalWrite(13, LOW);
  delay(1000); // Wait for 1000 millisecond(s)
}


 

LED 교대로 깜빡이기

 


void setup()
{
  pinMode(13, OUTPUT);
  pinMode(12, OUTPUT);
}

void loop()
{
  digitalWrite(13, HIGH);
  digitalWrite(12, LOW);
  delay(1000); // Wait for 1000 millisecond(s)
  digitalWrite(13, LOW);
  digitalWrite(12, HIGH);
  delay(1000); // Wait for 1000 millisecond(s)
}


 

 

푸시버튼 / 풀다운 방식 저항 연결

 

 

 


void setup()
{
  pinMode(8, OUTPUT);
  pinMode(2, INPUT);
}

void loop()
{
  int readValue = digitalRead(2);
  if(readValue == HIGH){
    digitalWrite(8, HIGH);
  }
  else {
    digitalWrite(8, LOW);
     }
}

 


풀 업 방식 : 스위치 연결이 끊겨도 지속적으로 5V입력 발생 >> 노이즈 영향 x

풀 다운 방식 : 스위치 끊겨도 잔류 전류가 빠져나갈 그라운드가 존재

두 방식을 통해 신호입력의 노이즈(플로팅 현상)을 방지

 

 

Serial Read/Print


void setup()
{
  Serial.begin(9600);
  
  pinMode(8, OUTPUT);
  pinMode(2, INPUT);
}

void loop()
{
  int readValue = digitalRead(2);
Serial.println(readValue);
   delay(100);
}


Serial.begin(9600); >> 아두이노와 컴퓨터가 대화할 수 있도록 통신 속도를 9600bps로 설정

if(Serial.available() > 0) >> "컴퓨터로부터 전송되어 대기 중인 데이터가 있는가?"를 확인

 

int inputValue = Serial.read(); >> 대기 중인 데이터 중 1바이트(문자 하나)를 읽어와 inputValue 변수에 저장

읽어온 값은 문자가 아닌 ASCII(아스키) 코드값 숫자로 저장

 

사용자가 시리얼 모니터에 "hello"를 치고 전송을 누르는 순간,

이 글자들은 아두이노의 시리얼 버퍼라는 임시 저장 공간에 도착

먼저 들어온 게 먼저 나가는(FIFO, First-In-First-Out) 구조

Serial.read()함수는 버퍼에서 데이터를 가져올 때 **딱 1바이트(글자 하나)**만 꺼내오는 성질

한 번 실행될 때 'h'만 쏙 빼오고, 나머지는 버퍼에 그대로 남겨둠 >> loop를 통해서 반복

 

 

가변저항 potentiometer

 



void setup()
{
  //아날로그는 입력만 가능, 핀모드 설정 불필요
  Serial.begin(9600);
}

void loop()
{
  int readValue = analogRead(A0);
  int scale = map(readValue,0, 1023, 0, 10);
Serial.println(scale);
}


map 함수 >> 특정 변수의 범위를 변경

map ( value , from min , from max , to min , to max)

 

 

 

조도센서 photoresistor

 


void setup()
{
  pinMode(8, OUTPUT);
  Serial.begin(9600);
}

void loop()
{
  int readValue = analogRead(A0);
  Serial.println(readValue);
  if(readValue < 500) {
   digitalWrite(8, HIGH); 
  }
  else{
  digitalWrite(8, LOW);
  }
}


LED 밝기 조절하기 (PWM)

 

PWM : Pulse Width Modulation

끄고 키는 비율을 조절해 중간의 값을 만들어 내는 방식

아두이노의 ~표시가 있는 핀이 PWM이 가능 >> 이때 PWM을 사용하려면 analogWrite를 사용(8비트)

 

 


void setup()
{
  pinMode(13, OUTPUT);
  pinMode(11, OUTPUT);
  pinMode(10, OUTPUT);
}

void loop()
{
  digitalWrite(13, HIGH);
  analogWrite(11, 100);
  analogWrite(10, 10);
  
}


 

서보 모터 Servo Motor

 

#include <Servo.h>    >> 서보모터 라이브러리 참고 >> pwm제어 없이 간단하게 각도입력으로 서보를 제어하게 해준다

                                           이 라이브러리 사용 시 9번 10번 핀의 pwm기능이 비활성화 된다

Servo s1;    >> 서보모터 선언

 

s1.attach(13);    >> 서보모터 연결

attatch(pin, min, max) >> pin만 있어도 작동 min/max는 optional

서보모터의 작동 각도가 정확하지 않을때 min과 max를 tuning해서 조절

기본값 : min = 544 max =2400

 

write(angle);    >> 해당 각도만큼 회전  <200 조건에서 작동, 그 이상의 값은 microseconds로 처리

 


#include <Servo.h>

Servo s1;

void setup()
{
  s1.attach(13, 544, 2500);
}

void loop()
{
  s1.write(90);
  delay(20);
}


 

초음파센서 Ultrasonic Sensor

 

초음파 생성 (20kHz ~ 200MHz) >> Ranging 장치

duration = micro second

거리(cm) = duration * (340/20000)

 

3핀 vs 4핀 : 트리거 / 에코 조절 선이 따로 있는지 합쳐져 있는지 여부

트리거 : PWM 필요 X

에코 : PWM 필요 O

 

트리거가 high > low로 되는 순간 초음파 발사 > 동시에 echo는 high로 설정

초음파가 돌아와서 인식되면 echo가 low로 변경 >> echo가 high인 기간을 측정

 


void setup()
{
 Serial.begin(9600);
}

void loop()
{
  //초음파 신호 전송
  pinMode(9, OUTPUT);
  digitalWrite(9, LOW);
  delayMicroseconds(2);
  digitalWrite(9, HIGH);
  delayMicroseconds(5);
  digitalWrite(9, LOW);
  
  //초음파 신호 수신
  pinMode(9, INPUT);
  float duration = pulseIn(9, HIGH);
  float cm = duration *340/10000/2;
  Serial.println(cm);
}


 

피에조 스피커 Piezo Speaker

 

압전소자의 수축/팽창 진동을 이용해 소리를 발생

 

tone(pin,음계,시간)

음계값

 

 

 


void setup()
{
  Serial.begin(9600);
}

float current = 20;

void loop()
{
  delay(100);
  tone(8, current, 300);
  Serial.println(current);
  current +=20;
}

 


 

RGB LED

 

4개의 소켓 : R/G/B + Common Cathode / Common Anode

RGB각 선에 개별 저항 필요 + PWM지원 필요

 

 


int red = 9;
int blue = 10;
int green = 11;

void setup()
{
  pinMode(red, OUTPUT);
  pinMode(blue, OUTPUT);
  pinMode(green, OUTPUT);
}

void loop()
{
analogWrite(red, random(255));
   analogWrite(blue, random(255));
   analogWrite(green, random(255));
}


 

인체감지센서 PIR 센서

 

적외선을 이용해 열을 내는 물체(사람, 동물 등)의 움직임을 감지하는 장치

 


void setup()
{
  pinMode(13, INPUT);
  pinMode(8, OUTPUT);
  Serial.begin(9600);
}

void loop()
{
  int value = digitalRead(13);
  Serial.println(value);
  
  if(value == HIGH){
   digitalWrite(8, HIGH) ;
    delay(2000);
    digitalWrite(8, LOW); 
  }
}


 

728x90
반응형
LIST