查看“2장. LED 켜기 응용(여러개 LED 켜기)”的源代码
←
2장. LED 켜기 응용(여러개 LED 켜기)
跳转至:
导航
、
搜索
因为以下原因,您没有权限编辑本页:
您所请求的操作仅限于该用户组的用户使用:
用户
您可以查看与复制此页面的源代码。
{{Language|2장. LED 켜기 응용(여러개 LED 켜기)}} {| style="width: 800px;" |- | ==목적== 여러 개의 LED 제어하는 방법을 알아본다. ==부품== *'''[[Microduino-Core/ko|마이크로두이노 코어 모듈]]''' *'''[[Microduino-USBTTL/ko|마이크로두이노 USBTTL]]''' *기타 부품 **브레드보드 점퍼선 약간 **브레드보드 한개 **LED 8개 **220ohm 저항 8개 **USB 데어터 케이블 1개 [[File:lesson2All.jpg|600px|center|thumb]] ==회로도== *LED의 캐소드(-)측은 마이크로두이노의 GND에 연결하고, 애노드는 마이크로두이노의 D3 ~ D10 I/O 핀에 연결하는 방법과 *LED의 캐소드(-)측은 마이크로두이노의 D3 ~ D10의 디지털 I/O 핀에 연결하고, 애노드는 마이크로두이노의 VCC에 연결하는 두가지 방법이 있다. 이것은 공통 캐소드와 공통 애노드의 개념으로 닉시관이나 7 Segment에 적용된다. [[File:schematic2.jpg|600px|center|thumb]] ==소스== *I/O 출력에 직접 연결하기 <source lang="cpp"> void setup() { for(int i=3;i<11;i++) // D3 ~ D10 I/O 출력을 디지털 I/O 포트로 설정하기 위한 반복문 pinMode(i, OUTPUT); // I/O 포트를 출력으로 설정하는 함수 } void loop() { for(int i=3;i<11;i++) { digitalWrite(i, HIGH); // D3 ~ D10 디지털 I/O 출력을 HIGH로 설정 delay(50); // 시간지연 50ms digitalWrite(i, LOW); // D3 ~ D10 디지털 I/O 출력을 LOW로 설정 delay(50); // 시간지연 50ms } } </source> * 16비트 배열를 이용하여, 출력데이터를 각 I/O 포트를 쉬프트 시킴으로 여러가지 멋있는 모양을 만들수 있다. <source lang="cpp"> /*=============================================== 0x(High-low:10,9,8,7)(High-low:6,5,4,3) Example 0x81:10000001 10번핀,9번핀,8번핀,7번핀,6번핀,5번핀,4번핀,3번핀 ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ 1 0 0 0 0 0 0 1 공통 캐소드 방식으로 연결한 형태이므로 LED의 모든 캐소드는 같이 연결한다. 출력이 1일때 ON, 0일때 OFF가 된다. =================================================*/ long data[]= { 0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80, //왼쪽에서 오른쪽으로 하나씩 켜진후 꺼진다. 0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01, //오른쪽에서 왼쪽으로 하나씩 켜진후 꺼진다. 0x81,0x42,0x24,0x18,0x18,0x24,0x42,0x81, //양쪽에서 중간으로 중간에서 양쪽으로 켜진후 꺼진다. 0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f,0xff, //왼쪽에서 오른쪽으로 하나씩 켜진다. 0xff,0x7f,0x3f,0x1f,0x0f,0x07,0x03,0x01, //오른쪽에서 왼쪽으로 꺼진다. }; void setup() { for(int x=3;x<11;x++) { pinMode(x,OUTPUT); // I/O핀을 출력으로 설정 } } void loop() { for(int x=0;x<40;x++) // 다른 LED 패턴을 읽는다. { leddisplay(data[x]); // leddisplay() 함수를 호출한다. delay(200); // 각 상태마다 200ms 시간지연 } leddisplay(0x00); // 한 싸이클이 완료되면 모든 LED를 끈다. delay(200); } void leddisplay(int num) // 포트와 LED를 맵핑하는 함수 { /*==================================================================== (num >> x)에서 x는 16진수 num을 x 비트만큼 오른쪽 쉬프트하라는 표현이다. 0 is the lowest bit, bit 7 is the highest bit. 0은 최하위비트이고 7은 최상위비트이다. 쉬프트된 데이터와 0x01과 AND 연산하여 0 또는 1의 임의의 값을 얻을 수 있다. 얻어진 값을 마이크로두이노의 I/O 포트에 출력한다. ====================================================================*/ digitalWrite(3, ((num>>0)&0x01)); // num값을 0 만큼 오른쪽 쉬프트하고 0x01과 AND 연산해서 얻어진 값을 I/O 포트 D3의 값으로 출력 digitalWrite(4, ((num>>1)&0x01)); // num값을 1 만큼 오른쪽 쉬프트하고 0x01과 AND 연산해서 얻어진 값을 I/O 포트 D4의 값으로 출력 digitalWrite(5, ((num>>2)&0x01)); digitalWrite(6, ((num>>3)&0x01)); digitalWrite(7, ((num>>4)&0x01)); digitalWrite(8, ((num>>5)&0x01)); digitalWrite(9, ((num>>6)&0x01)); digitalWrite(10,((num>>7)&0x01)); } </source> 이 예제는 LED를 켜기위해 할당된 I/O 포트와 16진수 값을 맵핑하여 다양한 효과를 낼 수 있음을 보여준다. 0x18은 바이너리값으로 00011000으로 변환되며 여기서 '0'은 LED가 OFF되고, '1'은 LED가 ON 된다. 이것을 이용하면 많은 재미있는 효과를 만들어 낼수 있다. ==결론== *프로그램 1 왼쪽에서 오른쪽으로 각각의 LED가 켜지고 꺼진다. *프로그램 2 5가지의 패턴 효과를 구현할 수 있다. 왼쪽에서 오른쪽으로, 오른쪽에서 왼쪽으로, 가장자리에서 중앙으로 중앙에서 가장자리고, 왼쪽에서 오른쪽으로 켜지고 꺼지는 효과를 나타낼 수 있다. ==비디오== |}
该页面使用的模板:
模板:Language
(
查看源代码
)
模板:Nmbox
(
查看源代码
)
返回至
2장. LED 켜기 응용(여러개 LED 켜기)
。
导航菜单
个人工具
创建账户
登录
名字空间
页面
讨论
变种
视图
阅读
查看源代码
查看历史
更多
搜索
Welcome
首页
创客大赛
大赛详情
3D打印
安装月球车
图形化编程
操控月球车
升级月球车
编程工具下载
软件下载
Arduino
Processing
Mixly
Scratch
模块套件
Microduino 102
mCookie 102
mCookie 202
mCookie 302
IBC
其他
应用套件
四轴飞行器
平衡车
小车CUBE
音乐播放器
刷卡音乐播放器
wifi气象站
彩虹音乐触摸灯
分贝检测仪
迎门汇报
LED点阵时钟
LED点阵屏幕
硬件
mCookie
Sensor
Microduino
MicroWrt
MicroNux
MicroRobot-Core
MicroRobot-CoreESP
ideaBoard
ideaBox
MicroMV
MicroAI
帮助
常见问题
帮助
工具
链入页面
相关更改
特殊页面
页面信息