查看“8장. 스위치 눌림 시간 알아보기”的源代码
←
8장. 스위치 눌림 시간 알아보기
跳转至:
导航
、
搜索
因为以下原因,您没有权限编辑本页:
您所请求的操作仅限于该用户组的用户使用:
用户
您可以查看与复制此页面的源代码。
{{Language|Lesson 8--Pulse timing (check how long you hold down the switch)}} {| style="width: 800px;" |- | ==목표== 채터링을 피하여 버튼을 사용하는 방법에 대해 알아 볼것입니다. 시간지연을 이용하도록 하겠습니다. 그러나 이 해결책은 단점도 가지고 있습니다. 시간지연을 사용함으로 버튼을 누르는 사람 모두 다 다른 시간이 나타납니다. 이 장에서는 버튼이 눌린 시간을 얻는 방법에 대해서 알아보도록 하겠으며 펄스 시간 계산을 사용했습니다. 또한, 시리얼 포트를 통해 데이터를 모니터링하는 방법에 대해 알아보겠습니다. ==부품== *'''[[Microduino-Core/ko|마이크로두이노 코어 모듈]]''' *'''[[Microduino-USBTTL/ko|마이크로두이노 USBTTL 모듈]]''' *기타 부품 **브레드보드 점퍼선 약간 **브레드보드 1개 **버튼 1개 **USB 데이터 케이블 1개 ==펄스== 마이크로두이노에서 펄스는 High와 Low를 번갈아가며 변하는 디지털 신호입니다. 펄스 타이밍은 종종 광인코더에서 사용됩니다. 이것을 가지고 속도를 계산할 수도 있습니다. ==회로도== [[File:lesson8-schematic.jpg|600px|center|thumb]] 내부 풀업저항을 사용했으며 외부에 100nF 캐패시터를 사용했습니다. ==프로그램== <source lang="cpp"> int pin = 2; // 입력포트핀 D2 설정 float time1,time2; // 타임 변수 void setup() { Serial.begin(115200); // 시리얼 포트 보드레이트 설정 pinMode(pin, INPUT_PULLUP); // 입력포트를 입력으로 설정하고 내부 풀업을 사용하도록 설정 } void loop() { //입력포트에서 Low 펄스를 읽고 최대 펄스폭은 60초, 'time1' 변수에 결과 값을 저장하도록 할당 time1= pulseIn(pin, LOW,60000000)/1000; // 시간을 ms로 변환 Serial.print(time1); // 시리얼 포트로 'time1' 변수값을 출력 Serial.print("ms "); time2= pulseIn(pin, LOW,60000000)/1000.0; // 시간을 ms로 변환 Serial.print(time2); // 시리얼 포트로 'time2' 변수값을 출력 Serial.println("ms"); // 'ms' 단위를 표시하고 println()함수는 값을 출력하고 새로운 줄로 변경하는 함수 } } </source> ==시리얼 모니터링== ===시리얼 모니터 열기=== *시리얼 모니터 버튼을 클릭하면 시리얼 모니터 창이 뜹니다. [[File:lesson8-serialmonitor.jpg|600px|center|thumb]] [[File:lesson8-serialwindow.jpg|600px|center|thumb]] *주의사항: ** 시리얼 포트를 사용하기 위해서 setup() 함수내에 Serial.begin(xxxx) 함수를 추가해야 합니다. 여기서 'xxxx'는 보드레이트입니다. ** 보드레이트는 사용하는 시리얼 모니터와 동일한 값을 설정해야 하며 설정이 맞지 않으면 정확한 값이 보이지 않습니다. *단위를 변경할때는 데이터 타입에 유의해야 합니다. [[File:lesson-calculate.jpg|600px|center|thumb]] ===PulseIn()함수=== * 기능 : 입력포트에서 펄스의 HIGH 또는 LOW 값을 읽는 기능. 값이 HIGH이면 pulse() 함수는 핀이 HIGH일때 타이머가 동작하고 LOW로 변화될때 타이머가 멈춤니다. 펄스타임의 리턴 값은 'us' 단위를 가지며 타이머의 범위는 10us ~ 3 분입니다.(1s = 100ms = 1000000us) *문법: **pulseIn(pin, value) **pulseIn(pin, value, timeout) *파라메터: **pin : I/O 포트, 데이터 타입 : int **value : 펄스타입,HIGH or LOW, 데이터 타입 : int **타입아웃 (옵션):펄스 대기 시간, 단위는 us, 디폴트 값은 1초입니다. 데이터 타입 : unsigned long ==결과== 100nF 커패시터를 입력포트에 병렬로 추가하면 더 양호한 결과를 얻을 수 있습니다. [[File:lesson8-capacitance.jpg|600px|center|thumb]] ==비디오== |} https://www.youtube.com/watch?v=Ge52Sx_8XeU
该页面使用的模板:
模板:Language
(
查看源代码
)
模板:Nmbox
(
查看源代码
)
返回至
8장. 스위치 눌림 시간 알아보기
。
导航菜单
个人工具
创建账户
登录
名字空间
页面
讨论
变种
视图
阅读
查看源代码
查看历史
更多
搜索
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
帮助
常见问题
帮助
工具
链入页面
相关更改
特殊页面
页面信息