<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh-CN">
		<id>http:///https//wiki.microduino.cn/index.php?action=history&amp;feed=atom&amp;title=8%EC%9E%A5._%EC%8A%A4%EC%9C%84%EC%B9%98_%EB%88%8C%EB%A6%BC_%EC%8B%9C%EA%B0%84_%EC%95%8C%EC%95%84%EB%B3%B4%EA%B8%B0</id>
		<title>8장. 스위치 눌림 시간 알아보기 - 版本历史</title>
		<link rel="self" type="application/atom+xml" href="http:///https//wiki.microduino.cn/index.php?action=history&amp;feed=atom&amp;title=8%EC%9E%A5._%EC%8A%A4%EC%9C%84%EC%B9%98_%EB%88%8C%EB%A6%BC_%EC%8B%9C%EA%B0%84_%EC%95%8C%EC%95%84%EB%B3%B4%EA%B8%B0"/>
		<link rel="alternate" type="text/html" href="https//wiki.microduino.cn/index.php?title=8%EC%9E%A5._%EC%8A%A4%EC%9C%84%EC%B9%98_%EB%88%8C%EB%A6%BC_%EC%8B%9C%EA%B0%84_%EC%95%8C%EC%95%84%EB%B3%B4%EA%B8%B0&amp;action=history"/>
		<updated>2026-04-21T09:53:27Z</updated>
		<subtitle>本wiki的该页面的版本历史</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>https//wiki.microduino.cn/index.php?title=8%EC%9E%A5._%EC%8A%A4%EC%9C%84%EC%B9%98_%EB%88%8C%EB%A6%BC_%EC%8B%9C%EA%B0%84_%EC%95%8C%EC%95%84%EB%B3%B4%EA%B8%B0&amp;diff=4127&amp;oldid=prev</id>
		<title>Md：Created page with &quot;{{Language|Lesson 8--Pulse timing (check how long you hold down the switch)}} {| style=&quot;width: 800px;&quot; |- | ==목표== 채터링을 피하여 버튼을 사용하는 방법에 ...&quot;</title>
		<link rel="alternate" type="text/html" href="https//wiki.microduino.cn/index.php?title=8%EC%9E%A5._%EC%8A%A4%EC%9C%84%EC%B9%98_%EB%88%8C%EB%A6%BC_%EC%8B%9C%EA%B0%84_%EC%95%8C%EC%95%84%EB%B3%B4%EA%B8%B0&amp;diff=4127&amp;oldid=prev"/>
				<updated>2014-09-12T00:12:32Z</updated>
		
		<summary type="html">&lt;p&gt;Created page with &amp;quot;{{Language|Lesson 8--Pulse timing (check how long you hold down the switch)}} {| style=&amp;quot;width: 800px;&amp;quot; |- | ==목표== 채터링을 피하여 버튼을 사용하는 방법에 ...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新页面&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{Language|Lesson 8--Pulse timing (check how long you hold down the switch)}}&lt;br /&gt;
{| style=&amp;quot;width: 800px;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
==목표==&lt;br /&gt;
채터링을 피하여 버튼을 사용하는 방법에 대해 알아 볼것입니다. 시간지연을 이용하도록 하겠습니다. 그러나 이 해결책은 단점도 가지고 있습니다. 시간지연을 사용함으로 버튼을 누르는 사람 모두 다 다른 시간이 나타납니다.&lt;br /&gt;
이 장에서는 버튼이 눌린 시간을 얻는 방법에 대해서 알아보도록 하겠으며 펄스 시간 계산을 사용했습니다.&lt;br /&gt;
또한, 시리얼 포트를 통해 데이터를 모니터링하는 방법에 대해 알아보겠습니다.&lt;br /&gt;
&lt;br /&gt;
==부품==&lt;br /&gt;
*'''[[Microduino-Core/ko|마이크로두이노 코어 모듈]]'''&lt;br /&gt;
*'''[[Microduino-USBTTL/ko|마이크로두이노 USBTTL 모듈]]'''&lt;br /&gt;
*기타 부품&lt;br /&gt;
**브레드보드 점퍼선            약간   &lt;br /&gt;
**브레드보드  	               1개  &lt;br /&gt;
**버튼                         1개  &lt;br /&gt;
**USB 데이터 케이블            1개&lt;br /&gt;
&lt;br /&gt;
==펄스==&lt;br /&gt;
마이크로두이노에서 펄스는 High와 Low를 번갈아가며 변하는 디지털 신호입니다. 펄스 타이밍은 종종 광인코더에서 사용됩니다. 이것을 가지고 속도를 계산할 수도 있습니다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==회로도==&lt;br /&gt;
[[File:lesson8-schematic.jpg|600px|center|thumb]]&lt;br /&gt;
&lt;br /&gt;
내부 풀업저항을 사용했으며 외부에 100nF 캐패시터를 사용했습니다.&lt;br /&gt;
&lt;br /&gt;
==프로그램==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
int pin = 2;                                            // 입력포트핀 D2 설정&lt;br /&gt;
float time1,time2;                                      // 타임 변수&lt;br /&gt;
 &lt;br /&gt;
void setup()&lt;br /&gt;
{&lt;br /&gt;
  Serial.begin(115200);                                 // 시리얼 포트 보드레이트 설정&lt;br /&gt;
  pinMode(pin, INPUT_PULLUP);                           // 입력포트를 입력으로 설정하고 내부 풀업을 사용하도록 설정&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
void loop()&lt;br /&gt;
{&lt;br /&gt;
  //입력포트에서 Low 펄스를 읽고 최대 펄스폭은 60초, 'time1' 변수에 결과 값을 저장하도록 할당&lt;br /&gt;
  time1= pulseIn(pin, LOW,60000000)/1000;              // 시간을 ms로 변환&lt;br /&gt;
  Serial.print(time1);                                 // 시리얼 포트로 'time1' 변수값을 출력&lt;br /&gt;
  Serial.print(&amp;quot;ms  &amp;quot;);&lt;br /&gt;
  time2= pulseIn(pin, LOW,60000000)/1000.0;            // 시간을 ms로 변환&lt;br /&gt;
  Serial.print(time2);                                 // 시리얼 포트로 'time2' 변수값을 출력&lt;br /&gt;
  Serial.println(&amp;quot;ms&amp;quot;);                                // 'ms' 단위를 표시하고 println()함수는 값을 출력하고 새로운 줄로 변경하는 함수&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
==시리얼 모니터링==&lt;br /&gt;
===시리얼 모니터 열기===&lt;br /&gt;
*시리얼 모니터 버튼을 클릭하면 시리얼 모니터 창이 뜹니다.&lt;br /&gt;
[[File:lesson8-serialmonitor.jpg|600px|center|thumb]]&lt;br /&gt;
[[File:lesson8-serialwindow.jpg|600px|center|thumb]]&lt;br /&gt;
&lt;br /&gt;
*주의사항：&lt;br /&gt;
** 시리얼 포트를 사용하기 위해서 setup() 함수내에 Serial.begin(xxxx) 함수를 추가해야 합니다. 여기서 'xxxx'는 보드레이트입니다.&lt;br /&gt;
** 보드레이트는 사용하는 시리얼 모니터와 동일한 값을 설정해야 하며 설정이 맞지 않으면 정확한 값이 보이지 않습니다.&lt;br /&gt;
&lt;br /&gt;
*단위를 변경할때는 데이터 타입에 유의해야 합니다.&lt;br /&gt;
[[File:lesson-calculate.jpg|600px|center|thumb]]&lt;br /&gt;
&lt;br /&gt;
===PulseIn()함수===&lt;br /&gt;
* 기능 : 입력포트에서 펄스의 HIGH 또는 LOW 값을 읽는 기능. 값이 HIGH이면 pulse() 함수는 핀이 HIGH일때 타이머가 동작하고 LOW로 변화될때 타이머가 멈춤니다.&lt;br /&gt;
펄스타임의 리턴 값은 'us' 단위를 가지며 타이머의 범위는 10us ~ 3 분입니다.(1s = 100ms = 1000000us)&lt;br /&gt;
*문법：&lt;br /&gt;
**pulseIn(pin, value) &lt;br /&gt;
**pulseIn(pin, value, timeout)&lt;br /&gt;
*파라메터：&lt;br /&gt;
**pin : I/O 포트, 데이터 타입 : int&lt;br /&gt;
**value : 펄스타입,HIGH or LOW, 데이터 타입 : int&lt;br /&gt;
**타입아웃 (옵션)：펄스 대기 시간, 단위는 us, 디폴트 값은 1초입니다. 데이터 타입 : unsigned long&lt;br /&gt;
&lt;br /&gt;
==결과==&lt;br /&gt;
100nF 커패시터를 입력포트에 병렬로 추가하면 더 양호한 결과를 얻을 수 있습니다.&lt;br /&gt;
[[File:lesson8-capacitance.jpg|600px|center|thumb]]&lt;br /&gt;
==비디오==&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
https://www.youtube.com/watch?v=Ge52Sx_8XeU&lt;/div&gt;</summary>
		<author><name>Md</name></author>	</entry>

	</feed>