Arduino Nano v3.0 보드를 장착하여 멀티위 콥터를 만들어 볼 수 있는 보드를 설계해 봤습니다. ( 참고로 MW는 MultiWii 의 약자입니다. ^^ )
요즘 Nano 보드 가격이 많이 내렸더군요. 나노 보드에는 USB 연결포트가 있어서 바로 프로그램을 올릴 수 도 있으니 편하겠죠.
그리고 여유 공간에는 XBee 를 꼽아서 사용할 수 있는 포트도 추가하였습니다.
활용도가 높아 지겠지요.
기본 장착센서는 MPU6050 칩입니다. 요새 멀티위에서 많이 사용하는 자이로 + 가속도 센서 통합형 칩이죠. 지자계나 고도계는 센서 보드 연결 포트를 마련해 두었습니다.
위에 링크에 나오는 센서 보드를 바로 연결할 수 있게 핀배열이 되어 있습니다. 여기서 고도계 센서는 BMP085 칩입니다.
그래서 MS5611 칩도 테스트 해보고 싶어서 이건 따로 센서보드를 만들어서 테스트해 볼 생각입니다.
다음에 소개할 FPV용 보드하고도 유기적으로 연결이 되도록 핀구성이 되어 있습니다.
그리고 MWPowerShield라고 명명한 파워보드는 ESC를 연결할때 배선을 최대한 적게하고
MicroCopter를 만들 생각을 한거라 위 아래로 프레임 다리를 잡아 주는 목적도 합니다. ^^
ESC는 BEC이 대부분 내장되어 있더군요.
그것을 최대한 활용할 수 있도록 파워보드에서 전원을 전부 각각 분리해 놨습니다.
그래서 예를 들자면 V1은 멀티위 전원용으로 V2는 RC 수신기 전원용으로 V3는 FPV MPU용으로 V4는 A/V 송신기용입니다.
위에 링크 설명대로 따라 하면 되는데 뒷부분에 부트로더를 ISP 프로그래머를 사용하는데 아두이노를 하는 분들은 ISP 프로그래머가 없는 경우가 많을 것이다. 그리고 브레드 보드에 연결할 변환보드도 귀하기 힘들다. 그래서 본 블로그의 아두이노에서 부트로더 굽기라는 내용을 참조하여 아두이노로 ISP기능을 구현하여 부트로더를 구우면 될 것이다.
하지만 Arduino Uno 보드를 가진 사람은 Uno 보드의 auto reset 기능때문에 이 방법대로 할 수 없다고 한다.
Uno 보드에서 부트로더를 굽는 방법은 http://arduino.cc/en/Tutorial/ArduinoISP 에 따라 하면 되는데 먼저 arduino 메뉴의 File > Examples > ArduinoISP 스케치를 업로드한다.
그 후에 만약 외부클럭 없이 브레드 보드 상에 ATmega328/168 칩만 놓고 작업할려면 (16MHz의 외부클럭을 사용하면 메뉴의 Tools > Boards 메뉴에서 "Arduino Duemilanove or Nano w/ ATmega328" 를 선택한다.)
http://arduino.cc/en/uploads/Tutorial/breadboard.zip 를 받아서 압축을 풀면 boards.txt 파일이 있는데 그 내용을 복사해서 arduino-1.0\hardware\arduino\boards.txt 파일(윈도우의 경우)의 제일 뒤에 첨부한다. 절대 파일에 덮어 쓰면 안된다. 그럼 아래와 같이 Tools > Boards 메뉴에 추가된다. 이제 "ATmega328 on a breadboard (8 MHz internal clock)" 를 선택한다.
그리고 위에 링크 설명처럼 Uno보드의 auto reset 기능을 막기 위해 reset 과 ground 사이에 10uF 캐패시터를 연결해 주던지, reset과 5V 사이에 120 ohm를 연결해준다.
직접 연결하면 회로가 망가질 수 있으니 주의해야 한다. 120 ohm보다 조금 커도 상관은 없는 듯 하다. auto reset 기능이 정지되었는지 확인하는 방법은 Serial Monitor를 열어 놓아 serial port를 사용하면 부트로더가 실행되지 않을 것이다.
그리고 이제 마지막으로 Programmer > Arduino as ISP 를 선택한 후 Burn Bootloader 명령을 실행한다.
참고로 ATmega328p(저전력 설계된 칩)가 아니라 ATmega328 칩에 위와 같이 진행하면
Expected signature for ATMEGA328P is 1E 95 0F Double check chip, or use -F to override this ...
위와 같은 메세지가 나타나며 작업이 진행이 안될 것이다. 스케치 IDE에서 ATmega328p만 인식을 하기 때문인데 이때는 arduino-1.0-windows\arduino-1.0\hardware\tools\avr\etc\avrdude.conf 파일에서
# ATmega328P 부분의
PCB 주문을 할때 비용 절감을 위해서 PCB 기판에 같은 보드를 여러개 동시에 배치하는 것을 미쿡에서는 Panelizing이라고 한다.
전에 PCB Layout 시간에도 다루었지만 Seeed Studio에서도 서브 보드를 5개까지 허용한다. 대신 너무 아쉬운 점은 자르는 것은 각자의 몫이라는 것이다. PCB를 자를수 있는 밴드 쏘우를 또 구해야 할 판이다. 비용 좀 더 받고 잘라 주면 좋을 텐데...
하여튼 Eagle CAD Light 버전에는 복사기능이 막혀 있어, 이 작업을 도와주는 GerbMerge 라는 프로그램이 있다. 이게 Python 어플이라 먼저 아래와 같은 어플이 설치가 되어 있어야 한다.
Python 은 3.x 도 있는데 혹시 몰라서 2.7 버전을 설치했다.
Seeed Studio는 전체 패널의 아웃라인을 요구해서 GerbMerge 를 패치할 필요가 있단다. gerberge-patched github repo 여기서 zip 파일을 다운받아서 gerbmerge 폴더를 C:\Python<version>\Lib\site-packages\gerbmerge (윈도우일 경우) 폴더에 덮어 쓴다. 전에 작업한 FT232-Breakout 보드를 merge 해 볼 것이다. CAM 작업으로 생성한 7개파일을 C:\Python<version>\FT232-Breakout-v10 폴더를 만들어 복사해 온다. <board>.GTO - top silkscreen <board>.GTS - top soldermask <board>.GTL - top copper <board>.GBO - bottom silkscreen <board>.GBS - bottom soldermask <board>.GBL - bottom copper <board>.TXT - Excellon drill file. 그리고 config 파일과, layout 파일을 만든다. panel.cfg 파일내용 #------------------------------------------------------------------------------------------------------------
[DEFAULT] # I always use the local directory to contain all input gerbers, config files, and output files projdir = FT232-Breakout-v10 # MergeOut is the prefix of the output files. MergeOut = merge2 [Options] # CutlineLayers will determine where the subboard markings are, which will help in separating them. These are the accentuated lines between the two instances of the board in the image below. CutLineLayers = *topsilkscreen,*bottomsilkscreen CropMarkLayers = *topsilkscreen,*bottomsilkscreen # OutlineLayers is used by the patched gerbmerge, it defines which layers the entire panel outline will be drawn on. Seeed requires this on all layers. OutlineLayers = *toplayer,*bottomlayer,*topsilkscreen,*bottomsilkscreen,*topsoldermask,*bottomsoldermask FabricationDrawingFile = %(mergeout)s.fab ExcellonLeadingZeros = 0 OutlineLayerFile = %(mergeout)s.oln ScoringFile = %(mergeout)s.sco # here you can specify the maximum dimensions allowed by the Seeed PCB service you ordered (in inches). # gerbmerge will warn you if your final panel (based on your layout) exceeds these dimensions. PanelWidth = 3.93 PanelHeight = 1.965 # comment out the margins or set them to zero if you want the maximum amount of useable area on your panel. #LeftMargin = 0.1 #RightMargin = 0.1 #TopMargin = 0.1 #BottomMargin = 0.1 # spacing determines how much space between the panels. I found 0.0625 to be plenty of space for a band-saw blade, I may reduce it a hair in the next run. XSpacing = 0.0625 YSpacing = 0.0625 CutLineWidth = 0.01 CropMarkWidth = 0.01 AllowMissingLayers = 1 DrillClusterTolerance = 0.002 MinimumFeatureSize = *topsilkscreen,0.008,*bottomsilkscreen,0.008 # if you define the merge output files to be in the filename scheme that Seeed requires, you won't have to rename them by hand later. [MergeOutputFiles] Prefix = %(mergeout)s *TopLayer=%(prefix)s.GTL *BottomLayer=%(prefix)s.GBL *TopSilkscreen=%(prefix)s.GTO *BottomSilkscreen=%(prefix)s.GBO *TopSoldermask=%(prefix)s.GTS *BottomSoldermask=%(prefix)s.GBS Drills=%(prefix)s.TXT BoardOutline=%(prefix)s.bor ToolList = toollist.%(prefix)s.drl Placement = placement.%(prefix)s.txt # Job configuration - for each different sub-board, define a section like follows with the subboard name (used in the layout file) and the gerbers comprising that job. [FT232-Breakout-v10] Prefix=%(projdir)s/FT232-Breakout-v10 # List all the layers that participate in this job. Required layers are Drills # and BoardOutline and have no '*' at the beginning. Optional layers have # names chosen by you and begin with '*'. You should choose consistent layer # names across all jobs. *TopLayer=%(prefix)s.GTL *BottomLayer=%(prefix)s.GBL *TopSilkscreen=%(prefix)s.GTO *BottomSilkscreen=%(prefix)s.GBO *TopSoldermask=%(prefix)s.GTS *BottomSoldermask=%(prefix)s.GBS Drills=%(prefix)s.TXT BoardOutline=%(prefix)s.BOR #----------------------------------------------------------------------------------------------------------------- panel.layout 파일내용 칼럼 추가시 콤마없이 엔터치고 추가하면 된다. #-----------------------------------------------------------------------------------------------------------------
Row { Col { FT232-Breakout-v10 } Col { FT232-Breakout-v10 } }
10cm x 5cm 크기에 merge 한다고 가정하고 작업을 했다. 근데 여기서 헤맨 부분은 bor 파일이 필요한데 Seeed_Gerber_Generater_v0r95_DrillAlign.cam 파일로 gerber 파일을 생성해 봐도 bor 파일은 없다는 거다. 그런데 이 파일이 보드 아웃라인 파일이여서 GBO 파일이 아웃라인만 나타내므로 이걸 복사해서 bor 파일로 만들어서 작업해보니 merge가 되었다. 아래와 같이 실행하면 된다. C:\Python<version>>python.exe C:\Python<version>\Lib\site-packages\gerbmerge\gerbmerge.py panel.cfg panel.layout layout이 잘못 설정되면 패널 사이즈를 초과했다는 메세지를 표시한다.
정상적으로 merge가 되면 아래와 같이 나타난다. Windows 7 운영체제에서는 설치파일은 관리자권한으로 설치하고 cmd.exe 파일도 관리자권한으로 실행해야 에러가 나지 않는다.
여기서 eagle3d- img 파일이 어디에 쓰는 건지 헤깔렸는데 나중에 알고 보니 맞는 부품명이 없어서 3D로 표시가 안되는 부품을 이 이미지 파일에서 찾아서 부품명을 추가할때 사용한다. 여기서 부품명을 추가하는 작업은 좀 복잡해서 생략하기로 한다. 하는 방법은 위에 링크에 나와 있다.
스크립트로 3D을 할 수 있는 엔진으로 Eagle 3d에서 만든 *.pov 파일을 3D 이미지로 보여준다.
위에 파일을 모두 설치했으면 Eagle CAD의 Board 화면에서 File > Run 으로 eagle3d를 설치한 폴더(C:\Program Files\eagle3d\ulp)에서 3d50.ulp 파일을 연다. 그러면 설정 창이 뜨는데 거기서 pov 파일 생성 경로를 설정하고 create POV-File 버튼을 누른다.
POV-Ray를 실행후 open 메뉴로 생성된 pov 파일을 연다. 그리고 이것이 중요한데 Tools > Edit master POVRAY.INI 으로 ealge3d가 설치된 폴더의 povray 폴더를 라이브러리 경로에 추가하는 것이다. 그래야 제대로 렌더링이 된다. 제일 마지막 줄에 Library_Path="C:\Program Files\Eagle3D\povray" 를 추가하고 저장한다.
참고로 Ini 메뉴를 실행하여 Section 항목에서No AA가 아닌 AA로 선택하면 렌더링 시간은 더 걸리지만 좀더 이미지가 선명하게 보인다.
이제 Run 메뉴를 실행하면 IC의 Logo를 표시할지 소켓을 표시할지 등을 물어 보고 없는 부품은 표시되지 않는다는 메세지가 뜬후 OK를 누르면 랜더링된 이미지를 표시한다.
전에 만든 Breakout 보드는 Sparkfun 라이브러리를 사용해서 거의다 표시를 못하고 있다. 그러면 일일이 부품을 추가해 주거나 원래 Eagle CAD에서 제공하는 부품으로 변경하면 표시가능한데 귀찮아서 ^^;; 이렇게 하는 방법을 아는 것에서 마무리 할까 한다.
이제 전에 만든 회로도로 PCB를 만들어 보자. 이 단계는 보드상에 부품을 배치하고 보드파일을 만들어 PCB 제조업체에 보내는 것이다.
먼저 작업전에 vector 폰트를 활성화 시킨다. Control Panel 화면의 Options>User interface>Always vector font를 체크한다.
여기서 보기 편하게 배경색을 검정색으로 변경할 수 있다.
왼쪽 메뉴는 Schematic 화면하고 비슷하지만 추가된 것들이 몇개 있다.
부품들을 Group 하여 마우스 우클릭하여 Move 시켜 아웃라인 안에 넣는다.
부품이 만약 이 아웃라인을 벗어나서 놓여 지면 아래와 같은 에러창이 뜬다.
Freeware 버전이라 이 크기 이상으로 작업 할 수 없는 것이다.
부품명이 표시가 안되어 어떤 부품이 어떤 부품인지 구분이 안간다.
그럼 먼저 부품명을 볼수 있도록 설정한다. 메뉴 > View > Display/hide layers...를 선택하면
아래와 같은 창이 뜨는데 여기서 25~28까지가 위, 아래 보드의 부품명과 부품값을 표시한다. 부품값까지 표시하면 복잡하니 27번은 클릭해서 꺼놓아도 좋다.
F10을 누른 후 각 코너를 클릭하여 아웃라인을 1.5x1.0인치로 변경한다.
부품마다 있는 십자표시를 클릭하여 이동시킨다.(Move : 단축키 F7) 마우스 우클릭하여 회전할 필요가 있으면 회전시킨다.
그런데 회로상에서는 구별이 잘 안가서 막 놓다 보니 부품을 틀리게 놓아서 다시 왼쪽 메뉴의 Replace로 부품을 바꿨다. Replace 창도 Add 창과 같이 생겼는데.. 방식도 똑같다. 검색하여 오른쪽에 부품배치 모양을 보고 고르면 된다. 그리고 나서 Layout상의 부품을 선택하면 부품이 바뀐다. 전에 뭣도 모르고 튜토리얼 보면서 막 따라 하면서 글도 같이 쓰다보니 좀 개판이였다. SMD와 LEAD 부품이 서로 섞여 있다니.. ㅎㅎㅎ
JP1의 커넥터상에 VCC/GND/TX/RX를 Text 명령으로 입력한다. 위치는 21 tPlace 로 선택한다. 실크스크린에 표시될 것이다. 그리고 글자 크기가 크다면 Change 명령의 Size에서 크기를 선택하고 글자를 선택하면 크기가 변경이 된다.
디자인 오류가 없는지 Drc 명령으로 디자인 룰 체크를 한다. Seeed Studio에서 디자인 룰을 제공하니 그 파일(Fusion_eagle_rule_v1.1.dru)을 로딩하여 체크해 본다.
이상이 없으면 Auto 명령으로 autorouter를 한다. 이때 Autorouter Setup 창에서 Routing Grid 값을 기본값으로 해도 되지만 복잡한 회로일때 잘 안될 경우가 있다. 그럴때 8 mil 정도로 한다. 참고로 Seeed Studio 의 최소값은 6 mil 이다. 그럼 대부분 다 그려준다. 만약 몇개 못 그려준 것은 Route와 Ripup 명령으로 직접 그린다.
Auto 명령으로 그린 것이 마음에 들지않아 처음부터 다시 그리고자 한다면 왼쪽 메뉴의 Ripup 명령으론 안된다. 상단 command 입력란에 Ripup; 이라고 입력하면 경고창이 뜨고 확인 버튼을 누르면 다시 처음 상태로 되돌아 간다.
만약 부품명을 표시하고자 할때 부품명의 위치가 적당하지 않으면 Schematic 화면과 마찬가지로 Smash 명령으로 수정할 수 있다. 이제 모두 제대로 만들어 졌다면, 상단 메뉴바의 CAM 을 선택하여 Gerber 파일을 생성해 보자.
그러면 CAM Processor 창이 열리는데 여기서 File > Open > Job 하여 Seeed Studio에서 제공한 cam 파일(Seeed_Gerber_Generater_v0r95_DrillAlign.cam)을 연다. DrillsHoles탭은 EXCELLON 포맷으로, Slot drills/holes 탭등 나머지 탭은 GERBER_RS274X 포맷으로 설정이 될 것이다.
이제 Process_Job 버튼을 누르면 파일들이 생성된다.
생성된 Gerber 파일들을 체크해 봐야 하는데 Sparkfun.com에서는 Viewplot를 사용했는데, 여기선 오픈소스 프로그램인 Gerbv를 사용해 보도록 하겠다.
File > Open layer(s) 로 각각의 Layer를 연다. Seeed Studio에 보낼때 필요한 파일은 아래와 같다. 그러니 TXT 파일을 제외한 6개 Layer를 열어서 확인해 본다.
<pbname>.GTL (top layer)
<pcbname>.GBL (bottom layer)
<pcbname>.GTS (solder stop mask top)
<pcbname>.GBS (solder stop mask bottom)
<pcbname>.GTO (silk top)
<pcbname>.GBO (silk bottom)
<pcbname>.TXT (drill sizes and positions)
Seeedstudio.com에서 Fusion PCB Service를 주문하고 나면 주문번호가 매겨져서 메일이 온다. 그 주문번호를 PCB상의 실크스크린에 적어 놓으면 작업하기 수월하단다.
그런 후에 pcb@seeedstudio.com에 위에 7개 파일을 압축하여 첨부해서 보내면 검토후 진행한다는 메일이 온다. 참고로 파일명은 D(your order number)_(Your PCB size).zip 으로 한다.
PCB 내에 공간을 활용하여 서브 보드를 최대 5개까지 넣을 수 있다. 서브 보드 구분은 홀이나 슬롯이 아닌 실크스크린상에 표시해야 되고 자르는 것은 사용자 몫이다. 절약도 좋은데 PCB 받아서 자르는 것도 일이 될 것 같다. 하여튼 Gerber파일 Merge하는 방법은 다음에 다뤄 보겠다.
가격정책이나 디자인 스펙같은 자세한 사항은 해당 페이지를 확인해 보기 바란다. 디자인룰 캠파일도 여기에 있다.
영화에서 보면 구조신호를 꼭 모스 부호로 보내는데..
정작 모스 부호가 어떻게 생겼는지 몰랐다가
최근에 K5 자동차 광고에 나오는 음이 K5의 모스 부호라는 걸 알고
다시 궁금증을 가지게 되었다.
그리고 SOS 정도 알아 두면 도움이 되지 않을까 하는 생각도... ㅎㅎ
아두이노 관련 샘플을 찾다 보니
모스 부호가 라이브러리로 만들어져 있는게 몇개 있었는데..
그 중에서도 코드가 직관적인게 있어서 사용해 봤는데.. 좋아~
셋째, Eagle keyboard shortcuts 을 다운 받아서 Eagle\scr 디렉토리에 파일을 넣으면 된다.
이때 주의할 점은 scr 확장자가 바이러스가 많이 쓰는 확장자라 txt로 바꿔서 내용을
확인후 집어 넣으란다.
넷째, CAM file 을 다운 받아서 Eagle\cam 디렉토리에 파일을 넣는데 이건 PCB 제조 업체에 보낼 gerber 파일 생성에 영향을 준다.( 사실 CAM 파일은 PCB 제조업체에따라 변경이 필요하다. 제조업체에서 자기에 맞게 파일을 제공하기도 한다.)
이제 Schematics 사용법을 배우기 위해 간단한 브레크아웃 보드를 만들어 보고자 한다.
Eagle CAD를 실행하면 Control Panel이라는 화면이 뜬다.
Control Panel 의 File>New>Project 에서 프로젝트를 FT232-Breakout 라는 이름으로 새로 만든다.
이 만들어진 폴더에서 마우스 우클릭하여 New>Schematic 를 선택하면 Schematic 편집화면이 열린다. 여기서 왼쪽 아이콘 중에서 ADD 를 선택하여 부품 ADD창이 뜬다.
여기서 부품명으로 검색해서 추가하면 된다. 만약에 검색이 안되면 Library 마다 일일이 찾아야 할 경우도 있다. 주의할 점은 오른쪽 아래 Drop 버튼은 누르지 말아야 한다. 이건 그 라이브러리를 사용하지 않겠다는 의미이다. 나중에 Control Panel에서 다시 Use를 선택하여 사용 가능하게 할 수는 있다.
이 창에서 OK를 누르면 Schematic 편집화면에 부품이 나타날 것이다. 클릭할때마다 부품이 계속 생기니 중단하고 싶으면 Esc키를 누른다.
이제 나머지 부품들을 같은 방법으로 추가한다. 부품 위치에 맞게 적당히 회전시킨다.
그리고, 먼저 저장을 한다.
쨔쨘~ 너무 많이 진행되었나? ㅎㅎ 반복적인 부분이고 간단해서 무리가 없을 듯 해서 넘어간다.
콘덴서나 코일은 SparkFun-Passives.lbr에 있고, USB는 SparkFun-Connectors.lbr에 있고, VCC, GND는 SparkFun-Aesthetics.lbr에 있다.
그리고, 4핀 커넥터는 당연히 SparkFun-Connectors.lbr에 있다.
여기서 주의할 점은 FT232RL의 1번핀인 TXD와 4핀 커넥터와 연결을 시켜야 하는데 화면을 가로 질러 일일이 Wire를 그려 줄 필요는 없다. 아래 이미지에서 보이듯 Net (단축키 F9)을 선택해서 Wire 그리는 것과 똑같이 선을 조금만 그려준다. 그리고, Label (단축키 Alt+F9)을 선택해서 그린 Net를 선택하면 이미지처럼 N$4와 같은 디폴트 이름이 나타난다.
이것을 Name (단축키 F4)을 선택해서 이름을 TX로 변경한다. 똑같이 5번핀도 작업하고 RX로 이름을 변경한다.
아래 4핀 커넥터도 같은 방법으로 작업을 하면 해당 이름으로 연결된다는 메세지창이 뜨는데 확인하며 진행한다.
상단 메뉴바의 Board 아이콘을 선택하면 아래 이미지와 같이 나타난다. 이젠 PCB 레이아웃을 할 차례이다.
참고로 Schematic 편집화면의 왼쪽 메뉴에 대한 설명을 첨부한다. 귀찮아서 만들지 않고 sparkfun.com에 있는 이미지이다. 옛날 버전이지만 맨아래 2개 아이콘만 없고 똑같다.
Smash는 부품이름/값의 위치를 변경할 수 있다. Smash를 선택하고 부품을 선택하면 부품이름과 값에 십자(+) 표시가 나타나는데 거기서 마우스 우클릭하면 여러 팝업 메뉴가 나타나는데 거기서 Rotate를 선택하면 회전시킬 수 있다. 위에 이미지에 코일 L1 부품이름을 Smash로 회전시켜야 하는데 안했네. ㅎㅎ
아두이노관련 프로젝트를 할때 아두이노의 특징은 쉴드로 만들어서 모듈화 하려면 PCB도 만들 필요가 있을 것 같고 그러면 PCB를 만들수 있는 툴도 알아야 하기에 아두이노관련 프로젝트에서 주로 쓰는 Eagle CAD를 써보기로 했다.
파일 용량도 작고 기능제한이 있는 프리 버전도 충분히 쓸만한 기능을 제공한다.
#Freeware 제한사항
-. 보드 영역은 100 x 80mm(3.9 x 3.2인치)이다. 바깥에 부품을 놓을 수 없다.
참고로 아두이노 우노 보드 크기가 2.7 x 2.1인치이다. 그러므로 문제없다.
-. 2 signal layers(Top과 Bottom)만 된다.
-. Schematic은 sheet 1개로만 구성될 수 있다.
-. 다른 프로젝트와 합치는 걸 지원하지 않는다.
#설치
Next를 계속 누르면 되고 마지막에 "Run as Freeware"를 선택하고 진행하면 된다.
#실행
처음 실행하면 먼저 디렉토리없으니 만들지 물어본다. 물론 "Yes"라고 하면 된다.
pinMode(pin, mode) : pin - 핀번호, mode - INPUT 또는 OUTPUT 으로 setup함수안에 설정
digitalWrite(pin, value) : pin - 핀번호, valude - HIGH 또는 LOW로 loop함수안에서 사용
digitalRead(pin) : pin - 핀번호로 loop함수안에서 사용
예제)
int ledPin = 13; // LED connected to digital pin 13
int inPin = 7; // pushbutton connected to digital pin 7
int val = 0; // variable to store the read value
void setup()
{
pinMode(ledPin, OUTPUT); // sets the digital pin 13 as output
pinMode(inPin, INPUT); // sets the digital pin 7 as input
}
void loop()
{
val = digitalRead(inPin); // read the input pin
digitalWrite(ledPin, val); // sets the LED to the button's value
}