
적히지 않은 나머지는 쓰면서 익히도록
디지털 핀: 0 ~ 5V 두 개의 신호를 다룰 수 있음.
아날로그 핀: 0 ~ 5V 의 신호를 1023개의 신호로 나누어 다룰 수 있음.
즉 신호는 전압의 높이를 이용하는 것이며, 다른 기기에 전원으로도 사용할 수 있음.
아두이노는 C, C++ 기반의 언어를 사용함.
음극에서 양극으로 한 방향으로만 흐르는 전기
교류 전기와 같은 에너지로 조명을 켜도 덜 밝고 효율이 떨어지며, 전기를 저장할 수 있어 건전지에 사용됨.
주기적으로 변하는 전기
전압, 전류 극성의 방향 또한 함께 바뀌며 바뀌는 속도는 주파수로 나타냄.
교류 전기는 저장할 순 없음.
GND핀: (-) 전원을 입력받으며, 그라운드라고 불림. 연결된 전기의 기준점을 0V 로 맞춰줌.
VIN핀: (+) 전원을 입력받기 위한 단자임.
아두이노에 입력된 전압은 레귤레이터를 통해 5V 혹은 3.3V로 변환됨. 그리고 변환된 전원은 전원핀쪽에 5V핀과 3.3V핀, GND(접지)핀을 통해 출력할 수 있음.
레귤레이터: 높은 전압을 일정 전압으로 내려주는 전자부품, 그리고 보드에 내장되어 있음.
저항 값에 맞는 옴을 사용해야함. 안 지키게 되며 어떨지, 겪어보시길…
브레드보드: 전자 회로를 구성할 때 사용되며, 부품과 부품을 연결하기 위해 사용함.
0 ~ 13 번까지 총 14개의 디지털 핀을 통해 디지털 신호를 출력하거나 입력받을 수 있음.
디지털 신호: 전기 신호의 일종, 0(LOW) 또는 1(HIGH) 두 가지의 신호로 구분됨.
아
3 ~ 5V의 전원 입력시, HIGH로 인식
0 ~ 1.5V의 전원 입력시, LOW로 인식
HIGH 신호 출력시, 5V 출력
LOW 신호 출력시, 0V 출력
플롯(Float) 상태 = 플로팅 현상 : 디지털 신호는 0과 1로 표현된다는 것을 기억할 것임. 그런데 디지털 신호가 0과 1도 아닌 애매모한 상태임.
풀업 저항 : 0과 1도 아닌 애매모호한 상태에서 1로 바꿔버리는 것, 그렇게 되면 Default 값은 1, 즉 켜진 상태가 기본임.
풀다운 저항 : 0과 1도 아닌 애매모한 상태에서 0으로 바꿔버리는 것, 그렇게 되며 Default 값은 0, 즉 꺼진 상태가 기본임.
센서: 무엇인가를 감지하기 위한 장치, 대상에 접촉하거나 가까이서 데이터를 검출하면, 물리적인 수치로 측정된 값을 출력함.
디지털 핀에서는 디지털 신호 입출력이 모두 가능했던 반면, 아날로그 신호는 입력과 출력이 서로 다른 핀에서 가능함. 입력은 ANALOG IN 문구가 표시되어 있는 A0 ~ A5 총 6개에서 가능함. 출력은 디지털핀 숫자 옆에 ~가 붙은 PWM 핀에서 가능함.(아두이노 우노 보드 기준임.)
0 ~ 5V의 아날로그 신호 출력
아두이노는 0 ~ 1023의 값으로 인식
PWM핀을 통해 0 ~ 5V 출력
0 ~ 5V = PWM(0 ~ 255)
참고) PWM(= Pulse Width Modulation) 의 약자로 진동의 폭을 조절한다는 의미임.
디지털 신호는 시간에 따라 주기(Pulse) 로 나눌 수 있음.
PWM 출력은 주기가 높을 때 HIGH, 주기가 낮을 때 LOW 의 비율(Duty) 을 조절함으로 아날로그 신호를 출력할 수 있음.
확인 : 컴파일
업로드 : 보드에 코드 업로드
툴 : 포트 및 연결 보드 설정
시리얼 모니터 : 컴퓨터와 아두이노 간에 시리얼 통신을 통해 아두이노의 상태를 모니터로 확인함.
코드 입력창: 명령어를 입력하여 프로그램을 만들기 위한 스크린
void setup() 과 void loop() 부분으로 나뉨.
아두이노에서도 다른 언어와 마찬가지로 ; 을 사용하여 마무리 짓고, 카멜케이스를 사용하며, 한 줄 주석은 //, 여러 줄 주석은 /메모/ 를 사용함.
시리얼(= Serial) : 직렬
패러렐(= Parallel) : 병렬
시리얼 통신 : 직렬 통신, 데이터를 한 개씩 단시간에 전달
패러렐 통신 : 병렬 통신, 여러 개의 데이터를 한 번에 장시간에 걸쳐 데이터를 전달함.
라이브러리: 이미 만들어져 있는 샘플 소스 코드
아두이노 라이브러리 구성(각 파일은 지정된 폴더에 위치해야함.)
아두이노 라이브러리는 두 종류로 분류됨.
조건문 if(조건) {실행} : ‘만약 ~라면 ~한다’와 같은 명령을 만들 수 있음.for (초기식;조건식;증감식) - for문을 사용하면 반복되는 비슷한 명령어를 간단한 표현으로switch case 조건 선택문 : 1일땐 ~하고, 2일땐 ~하고......와 같은 명령어가 성립됨.pinMode(핀번호, 모드) : 사용할 디지털핀의 모드(입력or출력)를 설정하기 위한 함수digitalWrite(핀번호, 신호) : 설정 핀에 디지털 신호를 출력하기 위한 함수digitalRead(핀번호) : 설정된 핀에 입력되는 디지털 신호를 읽음.delay(시간) : 다음 명령어까지 입력 시간만큼 대기하기 위한 함수pulseIn(핀번호, 신호) : 설정 신호를 다시 입력받을 때까지 걸리는 시간을 측정> 초음파 센서 거리 측정 식
거리 = ( pulseIn(echo, HIGH) * 340) / 2
340 : 속도
2 로 나눈 이유 : 왕복거리의 시간을 대입하였기 때문에, 나누기 2함.
> Serial.begin(통신속도) : 시리얼 통신의 시작을 알리며, 통신속도를 설정함.Serial.end() : 시리얼 통신을 끝내기 위한 함수, 사용하지 않아도 됨.Serial.println(값) : 시리얼 통신의 데이터를 시리얼 모니터에 출력 후 줄바꿈 함.Serial.available() - 시리얼 통신으로 수신된 읽지 않은 상태의 데이터의 수를 반환함.Serial.read() - 수신 데이터 중 하나의 데이터를 반환함. (저장된 순서대로)analogRead(핀번호) - 설정핀에 입력되는 아날로그 신호를 읽기 위한 함수analogWrite(핀번호, 값) - 설정핀에 아날로그 값의 신호를 출력하기 위한 함수tone(핀번호, 주파수) & tone(핀번호, 주파수, 시간) 주파수 신호를 출력하여 소리를 설정하기 위한 함수LiquidCrystal lcd (핀1, 핀2, 핀3, 핀4, 핀5, 핀6) : LCD 사용 선언 및 연결핀을 설정lcd.begin (가로,세로) : LCD 사용의 시작을 알리고, 사용할 LCD의 크기를 설정함.lcd.print (문자열) : LCD에 출력할 문자를 설정하는 함수lcd.setCursor(가로, 세로) : LCD에 출력될 문자 출력 위치를 설정하기 위한 함수lcd.clear() - LCD에 출력된 문자를 모두 지움.Servo x : x라는 서보를 선언함. (여기서는 Servo myservo;)myservo.attach(핀번호) : myservo의 신호선을 연결할 핀을 설정하기 위한 함수임.(myservo는 임시로 지은 변수명.) [핀번호 - 서보모터의 신호선을 연결할 핀(PWM핀)을 설정함.]myservo.write(값) : myservo의 회전 위치를 설정하기 위한 함수myservo.detach() : myservo의 작동을 중지.(myservo는 임시로 지은 변수명.)Stepper step1(모터 스텝 수, 핀1, 핀2, 핀3, 핀4) step1라는 스텝모터를 선언하며 설정하기 위한 함수step1.setpSpeed(속도) : step1 스텝 모터의 속도를 설정하기 위한 함수step1.step(값) : step1 스텝 모터의 회전을 제어하기 위한 함수