728x90
반응형

Arduino 29

아두이노 소프트웨어-xxii. SPI 라이브러리

안녕하세요 제타지니입니다. 지난 번의 포스트를 통해 몇 가지 짚고 넘어가겠습니다. SPI 통신(Serial Peripheral Interface)는 Master - Slave 간의 1:N 방식의 통신입니다. * 최소 4개의 연결선 (MOSI, MISO, SCLK, SS)가 필요하며, 슬레이브가 한 개 늘어날 때마다 SS 선도 한개씩 추가. * 모든 Slave 기기에 대하여 MOSI, MISO, SCLK는 공통 * 전이중(full-duplex)방식으로 송신과 수신이 동시에 이루어지기에 I2C 통신에 비해 빠르다. * 아두이노에서는 일반적으로 짧은 거리의 고속 데이터 통신이 필요한 경우 SPI를 사용하며, 복잡한 통신의 경우에도 사용됨. * MISO(Master In Slave Out), MOSI(Maste..

아두이노 소프트웨어-xviii. 아두이노 String 클래스 - String Class

안녕하세요 제타지니입니다. 이번 포스트에서는 String class에 대해서 다루어 보겠습니다. 이 포스트는 [아두이노 상상을 스케치하다 - 허경용 저]에서 참고하였습니다. 이번의 포스트는 아두이노에서 자주 쓰이는 Class 중의 하나인 String 클래스입니다. String 클래스는 바로.... '문자열'을 다루기 위한 클래스입니다. 아두이노의 기반을 이루는 C++에서는 문자열을 다루기 위한 클래스를 제공하고 있으며, 아두이노 역시 String이라는 클래스를 통해서 문자열을 쉽게 처리할 수 있도록 도와줍니다. (C언어 에서는 문자열을 다루기 위한 데이터형이 별도로 정의되어 있지 않고, 문자 배열을 이용해서 문자열을 처리하지만, 문자 배열로 문자 열을 다루는 것은 많이 번거롭고 많은 주의를 요한다는 것을..

아두이노 소프트웨어-xix. Serial 통신

안녕하세요 제타지니입니다. 오늘은 아두이노의 시리얼 통신에 대해서 더 다루어보겠습니다. 이전에 Serial 클래스를 업로드 하면서 Serial 통신에 대한 개념 포스트가 필요하다는 것을 알게되었습니다. 그래서 이번 포스트에서는 Serial 통신에 대해서 공부하고, 그에 대한 내용을 담아 업로드 하려고 합니다. Serial 통신 Serial = 직렬, 즉 직렬 통신이라는 뜻이지요. 이 직렬통신은 아두이노 - PC 사이에서 뿐만이아니라, 여러 기기에서 사용되는 통신입니다. 기본 의미부터 살펴보자면, [직렬 통신]...? 그럼 [병렬 통신]도 있나요..? 있죠. 있습니다. Parallel(병렬) 통신이라고 합니다. 둘의 차이란... 무엇일까요? 쉽게, 우리가 물리학에서 나오는 '전기' 파트에서 직렬과 병렬을 ..

아두이노 소프트웨어-xvii. 아두이노 Serial 클래스 - Serial Class

안녕하세요 제타지니입니다. 오늘은 시리얼 통신에 대해서 보겠습니다. *시리얼 통신이란 무엇일까?(Serial communication) Serial(직렬) 통신. RS 232통신이라고 합니다. 직렬통신이라고 함은 컴퓨터와 기기의 1:1 통신입니다. 한번에 한 비트씩 통신을 합니다. Serial 통신은 USART(Universal Synchronous Asynchronous Receiver Transmitter, 동기 + 비동기 방식 통신) 또는 UART(Universal Asynchronous Receiver Transmitter)로 알려진 방식으로 RS-232C 프로토콜에 정의된 내용 중에서 데이터 송수신을 위한 세 개의 핀, RXD(receive data, 수신 데이터), TXD(Transmit da..

아두이노 소프트웨어-xvi. 함수 - 인터럽트 함수

안녕하세요 제타지니입니다. 이번 포스트에서는 인터럽트 함수를 보겠습니다. 인터럽트를 설명하자고 하면 두 가지 종류가 필요합니다. 1. 인터럽트 함수 2. 외부 인터럽트 함수 자 보시죠. 1. 인터럽트 함수 *interrupts() 매개변수, 반환값 모두 없는 함수입니다. noInterrupts 함수에 의해 금지된 인터럽트의 발생을 허용합니다. 인터럽트를 허용하게 되면, 작업의 순서와 시간에 변화가 있을 수 있습니다. #define interrupts() sei() 입니다. sei() 함수는 전역적으로 인터럽트 발생을 허용해 주기 위해 사용하는 AVR 마이크로 컨트롤러 함수 입니다. *noInterrupts() 매개변수, 반환값이 모두 없습니다. 인터럽트 발생을 금지시킵니다. 이후 interrupts() ..

아두이노 소프트웨어-xv. 함수 - 인터럽트 개념

안녕하십니까 제타지니입니다. 오늘은 인터럽트의 개념에 대해서 설명하겠습니다. 인터럽트라는 놈이 있습니다. 이놈은 너무나도 악독해서, 프로세서가 어떤 명령을 수행중인 중간에 끼어들죠. 사실 악독한 놈이라기 보단, 하드웨어와 소프트웨에서 상당히 중요한 분이시며, 많이 사용되어지는 기법 중의 하나입니다. 자 한번 알아보시죠 인터럽트, Interrupt 방해하다. 중단시키다. 라는 뜻을 가진 영어입니다. 뜻 그대로 현재 수행중인 프로그램을 중단시키는 놈이지요. 그림으로 조금 더 쉽게 알아보자면, 그림으로 나타내야죠. 그러니까 이대로 설명을 드리자면, 프로그램이 실행되는 도중에, 인터럽트가 발생하면 실행중인 프로그램을 잠시 멈추고 인터럽트 서비스 루틴, 즉 인터럽트가 걸렸을 시에 동작되는 프로그램을 실행시키고, ..

아두이노 소프트웨어-xiv. 함수 -비트 조작 함수

처음 공부할 때 비트 조작 함수를 보고, 도대체 이것은 무엇인가... 했었죠. 바이트 반환? 무슨 바이트???? 비트를 읽어?? 왜?? 비트 기록??? 등등 알수 없는 언어 투성이... 자 그래서 이번 포스트에서는 이 비트 조작함수에 대해서 알아보고, 어떻게 쓰는지 알아보겠습니다. 설명은 간단합니다. 오늘 설명할 함수는 lowByte highByte bitRead bitset bitWrite bitClear bit 7가지 입니다. lowByte(x) 데이터(x)의 최하위(Low) 바이트(Byte)를 반환합니다. highByte(x) 데이터(x)의 두 번째 최하위 바이트(Byte)를 반환합니다. bitRead(x, n) 데이터(x) n: 읽어낼 비트 위치, LSB(Lease Significant Byte)..

아두이노 소프트웨어-xiii. 함수 -난수 생성 함수

안녕하세요 제타지니입니다. 오늘은 난수 생성 함수에 대해서 다루어 보려고 합니다. 난수생성함수에 대한 이야기는 생각보다 길어질 것 같아서 이번 포스트에서 하겠습니다. 컴퓨터는 난수 생성에 굉장히 취약합니다. 왜냐하면 컴퓨터란 녀석은 '정해진 명령'을 따라 수행하는 녀석이기 때문에 '예외'에 취약한 성격을 보이기 때문이지요.(컴퓨터의 특성 Deterministic, Deterministic Algorithm을 사용하기 때문) 그래서 컴퓨터로 진짜-난수(True-random number)를 만드는 것은 사실상 불가능합니다. 하지만 가짜-난수(pseudo-random number)를 만드는 것은 가능하지요! 이 가짜-난수를 진짜-난수처럼 보이게 하면 됩니다! 가짜-난수는 다음과 같은 특성을 지니지요. 1. 일..

아두이노 소프트웨어-xii. 함수 -수학 함수

안녕하세요 제타지니입니다. 이번 포스트에서는 아두이노에 저장되어있는 '수학함수'에 대해서 알아보겠습니다. 수학함수라고 하면, 저희가 흔히 아는 값 비교, 연산 등에 쓰이는 함수이죠. 자세하게 알아볼 함수는 다음과 같습니다. 최대 -최소값 반환 함수 min, max 절대값 반환 함수 abs 데이터 / 값 제한 & 반환 함수 constrain, map 거듭제곱 / 제곱근 반환 함수 pow, sqrt 삼각함수 sin, cos, tan 난수생성함수 randomSeed random 최댓값 - 최솟값 반환 함수 min과 max 함수를 같이 설명해 보도록 하겠습니다. min(a, b); //a 와 b값 중에 최솟값을 계산해서 반환합니다. max(a, b); //a 와 b값 중에 최댓값을 계산해서 반환합니다. a와 b..

아두이노 소프트웨어-xi. 함수 -시간함수

아두이노는 여러가지의 함수를 가지고 있는데요, 오늘은 시간 함수에 대해서 알아보도록 하겠습니다. 이번 포스트에서 소개할 시간 함수는 프로그램이 구동되고 '얼마만큼의 시간이 지났는 가'를 측정하는 -경과 시간 체크 함수-와, 프로그램을 지정한 시간만큼 멈추어 주는 -동작 시간 지연 함수-에 대해서 알아보겠습니다. 경과시간 체크 함수 경과시간 체크 함수에는 두 가지가 있습니다. millis micros millis 함수 unsigned long millis(void) 프로그램이 시작한 후의 경과 시간을 밀리초(milli-seconds, 1/1000초) 단위로 반환하는 간단한 함수입니다. 약 50의 시간이 경과하면 overflow로 인해 다시 0이됩니다. 경과시간은 4바이트 크기의 unsigned long 형..

728x90
반응형