아두이노란?
ARDUINO
아두이노는 작은 컴퓨터입니다. 8비트연산을 할수 있는 마이크로컨트롤러가 있는 오픈소스 하드웨어입니다. 오픈소스라는 단어는
이 하드웨어의 설계도 및 부품, 프로그래밍 할 수 있는 소프트웨어등이 공개 되어있고 누구나 활용가능하며 개조하고 변경하여 원하는 목적에 맞게 응용하는것이 가능합니다. 아두이노를 통하여 누구나 쉽게 전자적제어에 접근할 수 있는 길이 열리게되었고 라즈베리파이, 갈릴레이,비글본블랙,라떼판다등 다양한 오픈소스 하드웨어를 활용할 수 있는 시대가 되었습니다.
아두이노의 특징은 운영체제없이 하드웨어기반 설계로 전기적 신호를 즉각적으로 제어 할 수 있는 부분입니다. 프로그래밍은 컴퓨터에서 하지만 아두이노에 프로그램을 업로드 하게 되면 스스로 상황에 맞는 전자적 제어를 할 수 있게 됩니다. 이러한 물리적인 장치제어 장점이 있어서 다양한 센서들의 정보를 수집하고 컴퓨터에 전달하고 다시 전기적 신호를 보내어 장치들을 제어하는 신경의 역할을 할 수가 있습니다. 이런장점이 있어 윈도우기반의 라떼판다PC는 아두이노와 직접적으로 연결할수 있는 핀을 제공하고 있습니다.
커뮤니티,네트워크를 통하여 아두이노등을 이용한 다양한 상상력의 작품들을 볼수가 있다.
(Integrated Development Environment) IDE란 코딩,디버깅,등을 하나의 소프트웨어에서 가능하게 하는 통합 개발환경을 말한다.
비쥬얼 스튜디오같은 프로램이 대표적인 예이다.
아두이노는 전용 sketches프로그램을 제공하여 쉽게 사용이 가능하다.
맥,윈도우,리눅스의 운영체제를 지원한다 Dwonload
전기의 이해 참조 https://kocoafab.cc/tutorial/view/348
1.LED깜박이기
예) https://kocoafab.cc/tutorial/view/12
++기본적인 함수에 대해 이해합시다.자료메모++
1. setup 함수
setup함수는 필수 함수로써, 스케치가 다시 시작 될 때 한번만 실행됩니다.
본격 작동이 시작되기 전에 지정해야 할 설정을 이 함수 안에 적으면 됩니다.
2. pinMode 함수
위에 setup함수 안에 pinMode함수는 특정 핀을 입력, 출력을 사용할 것인지 결정하는 것입니다.
디지털 13번 핀을 출력으로 사용할 것이므로 led와 OUTPUT이라고 입력합니다. 입력의 경우 INPUT이라고 입력하면 됩니다.
3. loop함수
loop함수도 setup( )처럼 필수로 존재해야 하며, 전원이 꺼질 때 까지 무한히 실행됩니다.
만약 loop()안에 LED를 ON/OFF 하는 것을 적어두었다면 계속해서 실행되기 때문에 LED가 계속 켜졌다 꺼 짐을 반복할 것입니다. 즉 깜박거리게 될 것입니다.
4. digitalWrite함수
특정핀의 출력값을 결정합니다.
HIGH이면 연결된 전압을 LOW이면 0V를 출력시킵니다. HIGH면 5V를 출력시킵니다.
이를 통해서 LED 점 등을 조절 할 수 있습니다.
5. delay함수
일시정지 같은 기능으로 1000은 1초를 의미합니다. 만약 빨리 깜박이게 하려면 숫자를 줄이면 됩니다.
++기본적인 변수의 데이터형에 대해 이해합시다.자료메모++
변수
변수는 '선언' 합니다. int led = 13; 변수는 다음과 같은 형태로 선언합니다. (int val : val이라는 이름의 변수를 선언하며 이변수는 int 형으로 데이 터를 저장 및 참조 해야한다. 변수와 상수명의 첫글자는 반드시 영문이며 대문자와 소문자는 구분됩니다. ( int val2(o) int 2val(x) / int val ≠ int VAL ) 긴 문장에는 "_" 를 사용해서 알기 쉽게 한다 ( "_"도 문자로 취급한다. ) 데이터형 따라서 우리가 입력한 문자가 숫자인지, 알파벳인지 구분하기 위해서는 데이터형이라는 것을 만들고 선언해 주 어야 한다. 이렇게 데이터가 어떤 타입인지 선언하는것 이외에도 불필요한 메모리낭비를 막기위해, 문자의 갯수 에 따라 다 표현하기 위해 데이터형마다 할당되는 메모리가 다르다. 아두이노는 C언어에 기반하여 만들어졌기때문에 C언어의 데이터타입과 거의 유사한 형태를 띄고 있다.
int
정수형 데이터를 저장하기 위한 데이터타입으로. ATmega기반의 보드에서는 2바이트(2의 16승) 메모리를 할 당받는다. ARM프로세서를 사용한 보드에는 4바이트(2의 32승)의 메모리를 할당받기때문에 이점에 유의하여 야 한다.
const
상수를 선언하기 위한 것으로 상수로 선언된 값은 소스내에서 값을 바꿀 수가 없다. 일반변수에 하나의 값만 넣 어서 변함없이 사용하고 싶다면 데이터타입 앞에 선언하면 된다. 코드작성의 편의를 위해서 사용된다.
float
실수형의 데이터(소수점을 사용하는 숫자)를 저장하기 위한 데이터 타입이다. 4바이트의 메모리를 할당받으며 부호비트 1비트, 지수부 8비트, 나머지 23비트는 가수부이다. -3.4*10^38 ~ 3.4*10^38사이의 숫자를 표현 가능하며 정밀도 면에서 double에 비해 떨어지고 연산속도 또한 느리기 때문에 정밀한 연산결과를 위해서는 float보다 double을 사용하는것이 좋고, 큰 연산이 필요할 때는 되도록이면 사용하지 않는다.
char
하나의 문자를 저장하기 위한 데이터 타입으로 1바이트의 메모리가 할당된다. char형은 문자가 저장되지만 실 질적으로 내부에는 아스키코드값이 입력되므로 덧셈과 뺄셈과 같은 연산이 가능하다. 부호가 존재하기 때문에 -128~127까지의 숫자가 저장된다.
boolean
참, 거짓을 의미하는 논리값을 저장하는 데이터타입으로 true(1)나 false(0)의 값이 들어가게 된다. 메모리 최 소단위인 1바이트를 사용한다. String 문자를 사용하기 위해 사용하는 전용클래스로 다양한 멤버함수와 연산자 사용으로 char형보다 다양하게 문자 를 사용이 가능하다.
++주석처리,자료메모++
프로그램 내에 삽입된 메모를 말한다. 자신이나 다른 사람들의 이해를 돕고 프로그램 설명을 뒷받쳐주기 위해서 주석을 쓴다. 주석에도 종류가 있는데 블록 단위 주석과 행 단위 주석으로 나뉜다.
블록 단위 주석은 시작부터 끝을 표시하는 방식이다.
시작은 /* 끝은 */ 표시한다. (초록색 표시는 주석 처리를 한 표시이다.)
/* 컴퓨터는 주석을 무시합니다. 컴퓨터는 주석을 무시합니다. */
행단위 주석은 간단하게 문장앞에 //로 주석 처리하면 된다.
//컴퓨터는 주석을 무시합니다.
//컴퓨터는 주석을 무시합니다
\
++실습_예제 #1 : LED 한개 깜박이기
++실습응용_Led 8개 깜빡이기 해보기
1초 딜레이 하고 순차적으로 하였다
CODE
//무식하지만 단순하게
// the setup function runs once when you press reset or power the board void setup() { // initialize digital pin 13 as an output. pinMode(13, OUTPUT); pinMode(12, OUTPUT); pinMode(11, OUTPUT); pinMode(10, OUTPUT); pinMode(9, OUTPUT); pinMode(8, OUTPUT); pinMode(7, OUTPUT); pinMode(6, OUTPUT); }
// the loop function runs over and over again forever void loop() { digitalWrite(13, HIGH); // turn the LED on 5V가 됨 digitalWrite(12, LOW); // turn the LED off 0V가 됨 digitalWrite(11, LOW); // turn the LED off 0V가 됨 digitalWrite(10, LOW); // turn the LED off 0V가 됨 digitalWrite(9, LOW); // turn the LED off 0V가 됨 digitalWrite(8, LOW); // turn the LED off 0V가 됨 digitalWrite(7, LOW); // turn the LED off digitalWrite(6, LOW); // turn the LED off delay(1000); digitalWrite(13, LOW); // turn the LED off digitalWrite(12, HIGH); // turn the LED on digitalWrite(11, LOW); // turn the LED off digitalWrite(10, LOW); // turn the LED off digitalWrite(9, LOW); // turn the LED off digitalWrite(8, LOW); // turn the LED off digitalWrite(7, LOW); // turn the LED off digitalWrite(6, LOW); // turn the LED off delay(1000); digitalWrite(13, LOW); // turn the LED off digitalWrite(12, LOW); // turn the LED off digitalWrite(11, HIGH); // turn the LED on digitalWrite(10, LOW); // turn the LED off digitalWrite(9, LOW); // turn the LED off digitalWrite(8, LOW); // turn the LED off digitalWrite(7, LOW); // turn the LED off digitalWrite(6, LOW); // turn the LED off delay(1000); digitalWrite(13, LOW); // turn the LED off digitalWrite(12, LOW); // turn the LED off digitalWrite(11, LOW); // turn the LED off digitalWrite(10, HIGH); // turn the LED on digitalWrite(9, LOW); // turn the LED off digitalWrite(8, LOW); // turn the LED off digitalWrite(7, LOW); // turn the LED off digitalWrite(6, LOW); // turn the LED off delay(1000); digitalWrite(13, LOW); // turn the LED off digitalWrite(12, LOW); // turn the LED off digitalWrite(11, LOW); // turn the LED off digitalWrite(10, LOW); // turn the LED off digitalWrite(9, HIGH); // turn the LED on digitalWrite(8, LOW); // turn the LED off digitalWrite(7, LOW); // turn the LED off digitalWrite(6, LOW); // turn the LED off delay(1000); digitalWrite(13, LOW); // turn the LED off digitalWrite(12, LOW); // turn the LED off digitalWrite(11, LOW); // turn the LED off digitalWrite(10, LOW); // turn the LED off digitalWrite(9, LOW); // turn the LED off digitalWrite(8, HIGH); // turn the LED on digitalWrite(7, LOW); // turn the LED off digitalWrite(6, LOW); // turn the LED off delay(1000); digitalWrite(13, LOW); // turn the LED off digitalWrite(12, LOW); // turn the LED off digitalWrite(11, LOW); // turn the LED off digitalWrite(10, LOW); // turn the LED off digitalWrite(9, LOW); // turn the LED off digitalWrite(8, LOW); // turn the LED off digitalWrite(7, HIGH); // turn the LED on digitalWrite(6, LOW); // turn the LED off delay(1000); digitalWrite(13, LOW); // turn the LED off digitalWrite(12, LOW); // turn the LED off digitalWrite(11, LOW); // turn the LED off digitalWrite(10, LOW); // turn the LED off digitalWrite(9, LOW); // turn the LED off digitalWrite(8, LOW); // turn the LED off digitalWrite(7, LOW); // turn the LED off digitalWrite(6, HIGH); // turn the LED on delay(1000); }
++ 실습응용 반복문사용해 보기
반복문을 이용하면 코드를 줄일 수 있다
for 반복문 (for loop) 사용법
참조) https://www.kocoafab.cc/tutorial/view/50
for(초기화식; 조건식; 증가식;) { ...... }
초기값을 조건에 해당 할때까지 반복실행..
반복문을 사용하여 코드실행을 다시 하여보았습니다.
CODE
int timer = 100; // delay타임을 timer 변수로 설정합니다
void setup() {
// 6번부터 13번까지 핀모드를 설정합니다.
for (int thisPin = 6; thisPin < 14; thisPin++) {
pinMode(thisPin, OUTPUT);
}
}
void loop() {
// 6번핀 부터 13번 핀까지 켜졌다 꺼졌다 반복합니다.
for (int thisPin = 6; thisPin < 14; thisPin++) {
// turn the pin on:
digitalWrite(thisPin, HIGH);
delay(timer);
// turn the pin off:
digitalWrite(thisPin, LOW);
}
// 13번 핀부터 6번까지 켜졌다 꺼졌다 반복합니다
for (int thisPin = 13; thisPin >= 6; thisPin--) {
// turn the pin on:
digitalWrite(thisPin, HIGH);
delay(timer);
// turn the pin off:
digitalWrite(thisPin, LOW);
}
}
가상을 회로도를 그릴수 있는 소프트웨어들
fritzing
http://fritzing.org/home/
autocad circuits 은 tinkercad로 통합되었다
https://www.tinkercad.com/
tiny cad https://tinycad.en.softonic.com/https://tinycad.en.softonic.com/
무료 회로도 설명 http://luftaquila.tistory.com/18