아두이노:코드: 두 판 사이의 차이

학교의 모든 지식. SMwiki
둘러보기로 이동 검색으로 이동
잔글편집 요약 없음
 
(같은 사용자의 중간 판 4개는 보이지 않습니다)
2번째 줄: 2번째 줄:


==개요==
==개요==
c언어를 사용해 쉽지 않다. 친절하게도 아두이노에서 제공하는 IDE가 있어 이를 사용하면 무리 없이 코딩을 할 수 있다.
c언어를 사용해 쉽지 않다. 친절하게도 아두이노에서 제공하는 IDE가 있어 이를 사용하면 무리 없이 코딩을 할 수 있다. https://www.arduino.cc/en/software
 
아두이노로 코드를 전달하는 방법은 하위 문서를 참고하자.


연결은 하위 문서를 참고하자.
연결은 하위 문서를 참고하자.
15번째 줄: 17번째 줄:
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 />
===컴퓨터 등과 연결===
기본적으로 [[아두이노:코드]] 문서의 하위 문서들을 참고한다.


==기본명령==
#<code>아두이노>Tools>Board</code> 에서 연결한 보드를 제대로 인식하는지 확인.(보통 윈도우에서 자동으로 드라이버를 잡아 설치해준다.)
일반적으로 loop() 함수 안에 다양한 명령들을 기입한다.
#<code>아두이노>Tools>Port</code> 선택.(보드 종마다 포트를 새로이 잡는다.) 인식이 되지 않는다면 구매사이트에서 제공하는 드라이버를 설치.(가끔 드라이버 설치를 실패했다는 메시지가 나오면 그냥 되기도 한다.) 이후 <code>아두이노>Tools>Port</code> 에 새로운 포트가 생긴다. 이를 선택.
 
#우측 하단에 보드명과 포트명이 뜨는 걸 확인하면 정상.
===신호 방출===
해당 포트의 초기설정을 해준 후 진행해야 한다.
{| 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 />
<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>
=유의사항=
코드를 폴더단위로 저장하기 때문에 다른 프로젝트를 같은 폴더에 넣어버리면 에러가 나곤 한다.

2024년 4월 13일 (토) 10:00 기준 최신판

아두이노 관련 정보를 모으기 위한 틀. 틀:아두이노

  1. 아두이노:개요
  2. 아두이노:하드웨어
    1. 아두이노:우노보드
  3. 아두이노:코드
    1. 아두이노:기초 문법
    2. 아두이노:라이브러리
    3. 아두이노:컴퓨터에서 보드로
    4. 아두이노:안드로이드에서 보드로
  4. 아두이노:핀 사용
    1. 아두이노:전원공급
  5. 아두이노:시리얼 통신
    1. 아두이노:엑셀기록
    2. 아두이노:파이썬과 통신
  6. 아두이노:편의함수
  7. 센서 사용
    1. 아두이노:모션센서
    2. 아두이노:온습도센서
    3. 아두이노:조도센서
    4. 아두이노:pH미터 만들기(Gravity 아날로그 pH센서)
  8. 아두이노:LCD 사용
  9. 아두이노:스위치 사용
  10. 아두이노:릴레이
  11. 아두이노:WIFI
  12. 아두이노:해결되지 않은 다양한 의문들
  13. 수업용 간단 실습
    1. 아두이노:LED
    2. 아두이노:초음파센서
  14. 분류:아두이노 프로젝트

개요[편집 | 원본 편집]

c언어를 사용해 쉽지 않다. 친절하게도 아두이노에서 제공하는 IDE가 있어 이를 사용하면 무리 없이 코딩을 할 수 있다. https://www.arduino.cc/en/software

아두이노로 코드를 전달하는 방법은 하위 문서를 참고하자.

연결은 하위 문서를 참고하자.

유의사항[편집 | 원본 편집]

  • 소문자, 대문자를 구분한다. 해당 함수의 옵션에 대소문자를 구분해 입력해야 한다.
  • 동일한 라이브러리는 하나만 갖고 있어야 한다.(충돌위험)
  • 코드는 잘 저장해두기. 아두이노에 업로드한 코드를 컴퓨터에 되돌리는 일은 굉장히 어렵다. HEX추출은 가능하지만 이를 코드로 되돌리는 일은 해당분야 종사자가 아니라면 거의 불가능에 가깝다 보면 되겠다.

[편집 | 원본 편집]

https://www.tinkercad.com/에서 아두이노 회로와 코드의 시뮬레이션을 해볼 수 있다.


보드연결[편집 | 원본 편집]

컴퓨터 등과 연결[편집 | 원본 편집]

기본적으로 아두이노:코드 문서의 하위 문서들을 참고한다.

  1. 아두이노>Tools>Board 에서 연결한 보드를 제대로 인식하는지 확인.(보통 윈도우에서 자동으로 드라이버를 잡아 설치해준다.)
  2. 아두이노>Tools>Port 선택.(보드 종마다 포트를 새로이 잡는다.) 인식이 되지 않는다면 구매사이트에서 제공하는 드라이버를 설치.(가끔 드라이버 설치를 실패했다는 메시지가 나오면 그냥 되기도 한다.) 이후 아두이노>Tools>Port 에 새로운 포트가 생긴다. 이를 선택.
  3. 우측 하단에 보드명과 포트명이 뜨는 걸 확인하면 정상.