●아날로그(Analog) 데이터

 ▷연속적인(continuous) 데이터

 ▶디지털과 비교

  ▷장점 : 원본 데이터에 충실하다.

  ▷단점 : 노이즈에 약하다. 온도 특성이 나쁘다. 데이터 처리가 복잡하다.

 ▶Analog to Digatal 컨버팅

  1. 필터링(Filtering) : 본래 신호를 정확히 표본화 하기 위해 잡음 등의 신호를 차단하는 것.

  2. 표본화(Sampling) : 아날로그 파형을 디지털 형태로 변환하기 위해 표본을 취하는 것.

   ▷표본화율 : 1초동안 취한 표본수 (Hz). 높을수록 본래 신호 특성을 잘 유지할 수 있지만, 데이터 양이 많아진다.

   ▷나이퀴스트 정리 : 최대 주파수성분이 f_max인 아날로그 신호는 적어도 2*f_max이상의 표본화율로 샘플링할 경우, 원신호를 완전히 복원할 수 있다. -> 나이퀴스트 주파수 : 2*f_max

  3. 양자화(Quantization) : 표본화에서 얻어진 수치(y축)를 n개의 레벨로 분해한 뒤, 샘플값을 근사시키는 것. -> 정밀도

  4. 부호화(Coding) : 양자화된 값을 비트로 변환하는 것.

 

○Arduino 아날로그 데이터 입력

 ▷ATmega2560에는 16채널의 10비트 해상도(0~1023 -> 0~5V) 아날로그-디지털 변환기가 포함되어 있음

 ▷A0~A15(디지털54~69)

 ▷하나의 아날로그-디지털 변환기를 공유하므로 동시에 여러 채널 사용은 불가능함.

 ▶Pulse-Width Mpdulation(PWM)

  ▷아날로그 신호를 디지털화 하여 인코딩하는 방법

  ▷일정한 주기에서 정사각파의 0, 1부분의 비율(1의 비율 0~100%->dutyCycle)을 조정하여 0~5V의 아날로그 값을 입력함

  ▷PWM은 디지털 신호의 일종이지만, 출력 함수가 analogWrite이므로 흔히 아날로그 데이터 출력으로 불린다.

  ▷디지털 2~13번, 디지털 44~46번이 PWM신호를 출력 가능함.

 

※가변저항 연결

가변저항 연결

 ▶위에서 본 기준으로

  ▷왼쪽 : GND / 중앙 : 출력핀 / 오른쪽 : VCC

 

※RGB LED연결

RGB LED 연결

 ▶헤드를 위로 눕혀서 봤을때 기준으로

  ▷가장 왼쪽(1번째) : R / 2번째 : VCC / 3번째 : G / 4번째 : B

  ▷GND가 없음에 주의

  ▷공통 양극 방식이므로, analogWrite(0)에서 최대 밝기, analogWrite(255)에서 최소 밝기 임에 주의

 

◎analog데이터 입출력 함수

 ▷analogRead (pin번호) : pin에서 아날로그 값을 읽어온다. (0~1023)

 ▷analogWrite (pin번호, 0~255사이의 dutyCycle) : pin에서 PWM으로 아날로그 데이터를 출력한다.

 ▷analog Reference (모드) : 기준 전압을 설정한다. DEFAULT(5V) / INTERNAL(1.1V)->ATmega2560사용 불가 / INTERNAL1V1(1.1V)->ATmega2560에서만 사용 / INTERNAL2V56(2.56V)->ATmega2560에서만 사용 / EXTERNAL(AREF핀에 인가된 0~5V) 

'컴퓨터 지식 > 아두이노' 카테고리의 다른 글

디지털 입력 - 버튼  (0) 2020.06.12
String 클래스  (0) 2020.06.12
디지털 출력 (LED)  (0) 2020.06.12
Arduino IDE 기초  (0) 2020.06.12
아두이노  (0) 2020.06.12

● 버튼

 ▷On : 1(VCC) / Off : 0 (GND)

 ▷Off에서 아무런 회로가 연결되어있지 않으면 주변 핀의 상태, 정전기 등의 영향을 받을 수 있기 때문에 회로가 오픈괴는 경우를 피해야 함. -> 풀다운 저항의 사용

 ▷풀다운 저항 : 스위치가 오픈인 경우, 입력핀이 저항으로 GND와 연결되어 있음 -> 누르지 않으면 0, 누르면 1

풀다운 저항 버튼 연결

 ▷풀업 저항 : 스위치가 오픈인 경우, 입력핀이 저항으로 VCC와 연결되어 있음 -> 누르지 않으면 1, 누르면 0 (직관적인 동작과 반대)

풀업 저항 버튼 연결

 ▷풀업 저항의 경우, pinMode(pin번호, INPUT_PULLUP)으로 마이크로컨트롤러 내장 풀업 저항을 사용 가능

 ▷바운싱, 채터링 : 기계적인 진동에 의해 버튼을 누를 때 On/Off가 반복해서 나타나는 것. -> 디바운싱을 통해 없앰.

'컴퓨터 지식 > 아두이노' 카테고리의 다른 글

아날로그 데이터 입출력  (0) 2020.06.12
String 클래스  (0) 2020.06.12
디지털 출력 (LED)  (0) 2020.06.12
Arduino IDE 기초  (0) 2020.06.12
아두이노  (0) 2020.06.12

●String 클래스

 ▷문자열 처리를 위한 클래스로, C++의 String Class와 유사함

 ▷별도의 include를 필요로 하지 않는다.

 ▷생성자 : String (val, base, decimalPlaces)

  ▷val : String으로 만들 값 (거의 모든 기본타입이 변환 가능)

  ▷base : Int인 경우 어떤 진법으로 표시할건지

  ▷decimalPlaces : float, double인경우 소수점아래 몇자리까지 표시할건지

 ▷+ 연산자 : 객체와 다른 타입의 데이터 결합으로 새로운 String 객체를 생성한다.

 

◎String 메서드 일부

 ▷compareTo (String객체) : 자신과 String객체를 사전순으로 비교함

  ▷return값 음수 : 자신이 앞섬 / 0 : 문자열이 같음 / 양수 : 비교한 String객체가 앞섬.

 ▷equals (String객체) : 자신과 String 객체를 비교하여 같으면 True를, 아니면 false를 반환

 ▷equalsIgnoreCase (String객체) : 위와 비슷하지만, 대소문자 구분없이 비교함.

'컴퓨터 지식 > 아두이노' 카테고리의 다른 글

아날로그 데이터 입출력  (0) 2020.06.12
디지털 입력 - 버튼  (0) 2020.06.12
디지털 출력 (LED)  (0) 2020.06.12
Arduino IDE 기초  (0) 2020.06.12
아두이노  (0) 2020.06.12

●디지털 입출력

 ▷디지털 핀에 들어오는 전압(0~5V)를 읽거나 쓸 수 있음 -> On : 5V, Off : 0V

 

 

○LED(Light Emitting Diode) - 발광 다이오드

 ▷양극에서 음극으로, 순반향으로만 전류가 흐르며 순방향 연결에서 빛을 내는 소자 (긴쪽 : +)

 ▷데이터 핀에 연결하여 비트 단위의 데이터를 확인함 (HIGH -> 켜짐, LOW -> 꺼짐)

 

◎관련 함수

 ▷pinMode (핀번호, 모드) : 해당 핀을 INPUT 또는 OUTPUT (또는 INPUT_PULLUP)의 모드로 동작하도록 함.

 ▷digitalWrite(핀번호, 값) : 해당 핀이 HIGH(->On) 또는 LOW(->Off)의 값을 핀에서 출력함.

 ▷digitalRead(핀번호) : 해당 핀으로의 입력이 HIGH 또는 LOW인지 읽어옴.

 

 ▷delay (대기ms) : 해당 ms만큼 대기함. (코드 수행이 일시적으로 멈춤)

'컴퓨터 지식 > 아두이노' 카테고리의 다른 글

디지털 입력 - 버튼  (0) 2020.06.12
String 클래스  (0) 2020.06.12
Arduino IDE 기초  (0) 2020.06.12
아두이노  (0) 2020.06.12
마이크로 컨트롤러  (0) 2020.03.16

●Arduino IDE

 ▷ 작고 간단한 통합개발환경 /IDE
 ▷ 한 번의 클릭으로 Compile 에서 Upload 까지 진행
 ▷ Java로 구현되어 OS 간 이식성이 뛰어남
 ▷ Debugging 기능은 제공하지 않음

 ▷ Arduino SW는 다른 Arduino 보드에서도 동일한 동작을 구현 가능

 ▶μC에서의 프로그램

  ▷오직 하나의 프로그램만 설치됨.

  ▷설치된 프로그램은 전원이 주어지는 한 끝나지 않는 무한 루프를 동작.

 

○Sketch

 ▶setup과 loop, 2개의 함수로 구성

  ▷setup : 초기화 함수, 스케치 실행이 시작될 때 한 번만 실행.
  ▷loop : 반복 실행 함수, μC를 위한 프로그램에서 메인/이벤트 루프에 해당됨.

 

○UART Serial 통신

 ▷Universal(범용) Asynchronous(비동기) Receiver/Transmitter(수/송신기)

 ▷하드웨어 수준에서 지원하는 저수준의 통신 기술

 ▷RX, TX, GND 3개의 핀을 활용하며, TX와 RX를 교차 연결함.

 ▷컴퓨터와의 통신은 0번 UART채널 Serial 객체를 사용 (Atmega16u2 -> 변환)

 

○Serial 클래스

 ▷스케치 작성에 쓰이는 UART Serial 통신을 위한 클래스 (Arduino 기본 클래스)

 ▷클래스 명 : Serial_, 객체 : Serial ~ Serial3

 

 

◎Serial 기초 메서드

 ▷begin (int speed) : 초당 speed비트의 속도로 통신 시작 (보통 9600)

 ▷print (string[int, float.. 등의 기본 type]) : Serial Monitor에 출력

   ▷print (int, format) : 정수를 주어진 진수로 출력 (BIN, OCT, DEC, HEX)

   ▷print (float, int) : 소수점 아래 int자리수까지 출력

 ▷println (~) : 위와 동일하지만 마지막에 newline

 ▷write (~) : print와 기본적인 동작은 동일. 하지만 정수를 보낼시에 숫자를 그대로 전송함. (print는 수를 ASCII코드로 변환후 전송함) -> 수에 해당하는 ASCII코드가 출력됨.

 ▷available () : 시리얼 통신으로 수신한 데이터의 길이 (바이트 단위)를 리턴함. 데이터 수신시 버퍼에 기록됨.

 ▷read () : 데이터 수신이 저장된 버퍼에서 1바이트씩 읽어옴.

  ▷readBytesUntil (종료 문자, 버퍼(char*), 최대 길이) : 종료 문자를 읽을 때 까지 read()를 반복하여 버퍼에 저장함. 최대 길이에 도달하거나 종료 문자를 읽으면 종료하고, 읽은 데이터의 길이 byte값을 반환함.

 ▷peek () : read와 같은 return을 하지만, 버퍼에 저장된 데이터를 읽은 후 삭제하지 않음.

 

'컴퓨터 지식 > 아두이노' 카테고리의 다른 글

디지털 입력 - 버튼  (0) 2020.06.12
String 클래스  (0) 2020.06.12
디지털 출력 (LED)  (0) 2020.06.12
아두이노  (0) 2020.06.12
마이크로 컨트롤러  (0) 2020.03.16

+ Recent posts