|
|
4번째 줄: |
4번째 줄: |
| c언어를 사용해 쉽지 않다. 친절하게도 아두이노에서 제공하는 IDE가 있어 이를 사용하면 무리 없이 코딩을 할 수 있다. | | c언어를 사용해 쉽지 않다. 친절하게도 아두이노에서 제공하는 IDE가 있어 이를 사용하면 무리 없이 코딩을 할 수 있다. |
|
| |
|
| | 아두이노로 코드를 전달하는 방법은 하위 문서를 참고하자. |
|
| |
|
| 연결은 하위 문서를 참고하자. | | 연결은 하위 문서를 참고하자. |
15번째 줄: |
16번째 줄: |
| ===팁=== | | ===팁=== |
| https://www.tinkercad.com/<nowiki/>에서 아두이노 회로와 코드의 시뮬레이션을 해볼 수 있다. | | https://www.tinkercad.com/<nowiki/>에서 아두이노 회로와 코드의 시뮬레이션을 해볼 수 있다. |
|
| |
| =기본 함수=
| |
| 초기에 한 번 실행되는 setup 함수와 이후 반복적으로 실행되는 loop함수가 있다.
| |
|
| |
| ==초기설정==
| |
| setup 함수 안에 초기 설정을 집어넣는다.
| |
|
| |
| 라이브러리 추가 같은 코드를 사용하기도 한다.<syntaxhighlight lang="c">
| |
| void setup(){
| |
| //여기 안에 세팅요소를 넣는다.
| |
| }
| |
| </syntaxhighlight>
| |
| {| class="wikitable"
| |
| !요소
| |
| !설명
| |
| !예시
| |
| |-
| |
| |Serial.begin(9600);
| |
| |시리얼 통신을 사용하겠다는 선언. 숫자는 초당 비트를 의미(통신속도)한다. 보통 9600.
| |
| 시리얼 통신(직렬통신)은 데이터를 짧은 시간에 한 개씩 전달하는 통신, 병렬통신은 여러 데이터를 장시간에 전달하는 통신에 쓰인다.
| |
| |
| |
| |-
| |
| |pinMode(포트번호,OUTPUT);
| |
| |
| |
| *해당 포트번호를 OUTPUT으로 쓰겠다는 의미(출력(+)극으로 쓰겠다는 의미.)
| |
| *A1 등의 포트에선 필요가 없지만, 번호로 이루어진 포트를 사용하려면 필수적인 설정이다.
| |
| |
| |
| |-
| |
| |pinMode(포트번호,INPUT);
| |
| |센서 따위를 통해 특정 값을 수신하겠다는 의미.
| |
| |pinMode(12,INPUT);
| |
| |-
| |
| |constrain(포트번호, 최솟값, 최댓값);
| |
| |해당 포트의 입력값을 최솟값, 최댓값 사이로 제한한다.
| |
| |
| |
| |-
| |
| |이외 필요하다고 생각되는 코드.
| |
| |
| |
| |
| |
| |}
| |
|
| |
| ===업로드===
| |
| 좌측 상단의 체크마크를 클릭 후 업로드를 하면 보드에 업로드된다.<br />
| |
|
| |
| ==기본명령==
| |
| 일반적으로 loop() 함수 안에 다양한 명령들을 기입한다.
| |
|
| |
| ===신호 방출===
| |
| 해당 포트의 초기설정을 해준 후 진행해야 한다.
| |
| {| class="wikitable"
| |
| !명령
| |
| !설명
| |
| !예시
| |
| |-
| |
| |digitalWrite(포트번호, HIGH);
| |
| |포트번호에 HIGH 혹은 LOW 값을 넣는다. 이는 1, 0과 같다.
| |
| |digitalWrite(12, HIGH);
| |
| |-
| |
| |analogWrite(포트번호, i);
| |
| |포트번호에 i값을 넣는다. 아날로그 데이터를 흉내 내어 0~255 을 넣을 수 있다.
| |
| 아날로그를 흉내 낸 데이터를 출력하기 위해선 PWM(~표시가 있는 칸)이 가능한 곳에서만 가능하다.
| |
| |analogWrite(10, 200);
| |
| |}
| |
|
| |
| ===신호 수신===
| |
| {| class="wikitable"
| |
| !명령
| |
| !설명
| |
| !예시
| |
| |-
| |
| |digitalRead(포트번호);
| |
| |해당 포트의 초기설정을 해준 후 진행해야 한다.
| |
| 포트번호에 입력된 값을 받는다.(0, 1로 받는다.)
| |
| |digitalRead(12);
| |
| |-
| |
| |analogRead(포트번호);
| |
| |포트번호로 들어온 신호를 0~255로 받는다.
| |
| 아날로그 데이터라면 인풋만 가능하기에 ANALOG IN 포트에 꽂으면 별 설정없이 가져온다.
| |
|
| |
| 우노보드에 아날로크 포트로 들어온 경우 0~1023 사이의 값으로 받는다. 한계값이 정해진 경우, n/1023 을 곱하는 등의 처리로 데이터의 값을 맞춰준다.
| |
| |int a = analogRead(A0);
| |
| |}
| |
| ===기타 조작===
| |
| {| class="wikitable"
| |
| !명령
| |
| !설명
| |
| |-
| |
| |delay(숫자);
| |
| |숫자에 해당하는 시간(ms)만큼 쉰다.
| |
| |}
| |
|
| |
| ===시리얼모니터 관련===
| |
| 시리얼 모니터에서 읽어오는 데이터를 확인할 수 있다. 이를 위해서 데이터를 Serial로 보내는 과정이 필요.
| |
| {| class="wikitable"
| |
| !
| |
| !설명
| |
| |-
| |
| |Serial.print(각종 문자열);
| |
| |시리얼 모니터에 해당 문자열을 띄운다.
| |
| 변수의 경우 String(변수) 처리 해주어야 한다.
| |
| |-
| |
| |Serial.println(문자열);
| |
| |ln은 한 칸 내리는 것을 의미. 데이터를 표시한 후 줄바꿈까지 실행.
| |
| |-
| |
| |
| |
| |
| |
| |}
| |
|
| |
| ===사용===
| |
| 우측 상단의 Serial Monitor를 통해 내부에서 연산된 값을 보거나, 필요한 값을 보드에 전달할 수 있다.
| |
|
| |
| Tools>Serial Plotter를 통해 그래프로 볼 수 있다.
| |
|
| |
| <br />
| |
|
| |
| <br />
| |
|
| |
| ===tip===
| |
| 주석처리 : 쌍 슬래시 // 뒤에 쓰는 것은 주석처리된다.
| |
|
| |
| 범위주석 : /* 내용 */ 형식으로 쓰면 범위 주석이 된다.
| |
|
| |
| <br />
| |
|
| |
| ==개별 함수==
| |
| 사용자가 자주 사용하는 명령들을 블록화하는 등의 작업이 필요하다.
| |
|
| |
| ===개별함수 만들기===
| |
| {| class="wikitable"
| |
| |+
| |
| !과정
| |
| !설명
| |
| !예시
| |
| |-
| |
| |만들기
| |
| |void 함수명() {내용} 형태로 개인함수를 지정할 수 있다.
| |
| |
| |
| |-
| |
| |변수 사용하기
| |
| |함수명(자료형 변수) 형태로 첫줄을 시작하고, 내부에서 사용하면 된다.
| |
|
| |
|
| |
| 전역변수를 그대로 사용하려면 자료형을 기입하지 않고 그냥 변수명을 쓰면 된다.
| |
| |<syntaxhighlight lang="c">
| |
| void func(int x)
| |
| {
| |
| digitalWrite(x, 1);
| |
| }
| |
| </syntaxhighlight>
| |
| |-
| |
| |
| |
| |
| |
| |
| |
| |}
| |
|
| |
| ===개별함수 사용===
| |
| <code>함수명();</code> 이라고 입력하면 그 부분에서 함수가 작동한다.
| |
|
| |
| <br />
| |
|
| |
| ==반복문==
| |
| for(int i=0; i<5;) {내용} 형태로 작성한다.<syntaxhighlight lang="c">
| |
| for(int i=0; i<5;)
| |
| {
| |
| 명령
| |
| i = i+1
| |
| }
| |
| </syntaxhighlight>
| |
|
| |
| ==조건문==
| |
| <syntaxhighlight lang="c">
| |
| if(조건)
| |
| {
| |
| 명령
| |
| }
| |
| else
| |
| {
| |
| 명령
| |
| }
| |
| </syntaxhighlight>
| |
|
| |
| =유의사항=
| |
| 코드를 폴더단위로 저장하기 때문에 다른 프로젝트를 같은 폴더에 넣어버리면 에러가 나곤 한다.
| |