아날로그 입력과 출력
디지털 신호 vs. 아날로그 신호 디지털 신호 아날로그 신호 출처 : http://blog.naver.com/roboholic84/220333343346
PWM 아날로그 출력을 사용하는 이유 : 아날로그 신호값을 조절할 수 있기 때문(모터의 회전 속도, LED 밝기 조절 등) PWM 출력 : 전압 신호의 Pulse(전압 파형)를 이용하여 원하는 전압신호 평균값을 출력으로 만들어내는 것. 출처 : http://blog.naver.com/roboholic84/220333343346 출처 : http://arduino.cc
아날로그 출력 PWM 출력을 하기 위해서는 ~표시 단자에 핀을 꽂아야 하고 analogWrite() 함수를 사용해야 한다.
펄스(PWM)로 LED 밝기 조절하기 준비물 하드웨어 연결 아두이노, 브래드보드, LED 2개, 1K 저항 2개
int led10 = 10; int led11 = 11; int i = 0; void setup(){ pinMode(led10, OUTPUT); pinMode(led11, OUTPUT); } void loop(){ for(i=0; i<3; i++){ //디지털 출력 digitalWrite(led10, HIGH); digitalWrite(led11, HIGH); delay(1000); digitalWrite(led10, LOW); digitalWrite(led11, LOW);
for(i=0; i<256; i++){ //아날로그 출력 analogWrite(led10, i); delay(30); } //led10은 켜져있고 led11은 서서히 밝아지기 for(i=0; i<256; i++){ delay(5000);
//led10, led11 모두 서서히 어두워졌다가 밝아지기 for(i=255; i>=0; i--){ analogWrite(led10, i); analogWrite(led11, i); delay(30); } delay(1000); for(i=0; i<256; i++){ delay(5000);
int led = 9; int brightness = 0; int fadeAmount = 5; void setup(){ pinMode(led, OUTPUT); } void loop(){ analogWrite(led, brightness); brightness = brightness + fadeAmount; if(brightness==0 || brightness==255) fadeAmount = -fadeAmount; delay(30);
부저(Buzzer) 울리기-3장 준비물 하드웨어 연결 아두이노, 브래드보드, 수동 부저
int buzzer=8; void setup(){ pinMode(buzzer, OUTPUT); } void loop(){ digitalWite(buzzer, HIGH); delay(1000); digitalWrite(buzzer, LOW);
펄스(PWM)로 Buzzer 연주하기 Transistor : 디지털 회로에서는 스위치 용도, 아날로그 회로에서는 신호 증폭용으로 사용됨. 구성 : Base, Emitter, Collector - 입력 : 베이스와 이미터의 경로 - 출력 : 컬렉터와 이미터의 경로 출처 : http://recipes.egloos.com/4971003
3. NPN 트랜지스터 vs. PNP 트랜지스터 - NPN : If (Base전압 > Emitter전압) Then Collector -> Emitter 로 전류가 흐름 - PNP : If (Base전압 < Emitter전압) Then Emitter -> Collector 로 전류가 흐름 출처 : http://panopticha.tistory.com
4. 준비물 5. 하드웨어 연결 아두이노, 브래드보드, 수동 부저, 10K 저항 1개, S8050 NPN 트랜지스터 1개
int speakerPin = 8; int numTones = 10; int tones[] = {261, 277, 294, 311, 330, 349, 370, 392, 415, 440}; //mid C C# D D# E F F# G G# A void setup() {} void loop(){ for(int i = 0; i<numTones; i++){ tone(speakerPin, tones[i]); delay(500); } noTone(speakerPin); delay(1000);
아날로그 입력 아두이노는 아날로그 신호를 디지털 부호로 변환해서 받아들인다. – ADC(Analog-Digital Converter) 보드에 ANALOG IN 이라고 표시된 핀들이 ADC 기능을 가진다.
가변저항 값 읽어오기 준비물 하드웨어 연결 아두이노, 브래드보드, LED 1개, 1K 저항 1개, 가변저항 1개
int speakerPin = A0; int led = 9; void setup(){ pinMode(led, OUTPUT); Serial.begin(9600); } void loop(){ int sensorValue = 0; sensorValue = analogRead(sensorPin); sensorValue = map(sensorValue, 0, 1023, 0, 255); analogWrite(led, sensorValue); Serial.println(sensorValue); delay(10);
테스터기 흉내 – 전압 값 읽기 준비물 하드웨어 연결 아두이노, 브래드보드, LED 1개, 1K 저항 1개
//이전과 같음 void loop(){ int sensorValue = 0; float valtage = 0 //이전과 같음 void loop(){ int sensorValue = 0; float valtage = 0.0; sensorValue = analogRead(sensorPin); valtage = ((float)sensorValue/1023.0) * 5.0; Serial.print(sensorValue); Serial.print(“, “); Serial.println(voltage); analogWrite(led, sensorValue); Serial.println(sensorValue); delay(10); }