·Î±×ÀÎ £ü ȸ¿øµî·Ï £ü ³»±Û £ü Àå¹Ù±¸´Ï £ü ÁÖ¹®Á¶È¸ £ü ÇöÀçÁ¢¼ÓÀÚ
 »óǰ °Ë»ö








 °Ô½ÃÆÇ °Ë»ö





 
 
ȸ¿øµî·Ï £ü ºñ¹øºÐ½Ç


¿Â¶óÀÎ ÀԱݰèÁÂ
¤ý±â¾÷ÀºÇà
¤ý219-043192-01-028
¤ýÀ̰ǿµ

      °Å·¡ÀºÇà ¹Ù·Î°¡±â
 
 Arduino Open Source
¾ÆµàÀ̳ë ÇÔ¼öÀÇ »ó¼¼¼³¸í
¤ýÀÛ¼ºÀÚ avrtools¢â        
¤ýÀÛ¼ºÀÏ 2012/03/09
¤ý÷ºÎ#1 OneButtonLibrary.zip (4KB) (Down:617)
¤ýÃßõ: 0  ¤ýÁ¶È¸: 2188   
  One Button Switch Library
Á¦¸ñ : Arduino OneButton Library
ÂüÁ¶ : http://www.mathertel.de/Arduino/OneButtonLibrary.aspx

ÀÔ·Â ½ºÀ§Ä¡ 󸮰¡ Àß µÇ¸é ÀåÄ¡°¡ °í±ÞÀ¸·Î ´À²¸Áö´Âµ¥, ÀÔ·Â ½ºÀ§Ä¡ 󸮰¡ ¹Ì¼÷Çϸé?
¿­½ÉÈ÷ ¸¸µç ÀåÄ¡ÀÇ Á¶ÀÛ¼ºÀÌ ¶³¾îÁö¹Ç·Î ½Î±¸·Á°¡ µÇ¾î ¹ö¸³´Ï´Ù,,,,

 

´©¸§ ½ºÀ§Ä¡ ÇÑ °³ÀÇ °ªÀ» Àдµ¥ ¹«½¼ ¶óÀ̺귯¸®? ¶ó°í ¸»Çϱ⿡´Â ¹«¸®°¡ ÀÖÁö ¾ÊÀ»±î¿ä?
±×·¸½À´Ï´Ù. Æß¿þ¾î¸¦ ¸¸µé´Ù º¸¸é ½ºÀ§Ä¡ Àб⸦ Á¶ÀÛ¼ºÀÌ ÁÁ°Ô Àß ¸¸µé·Á¸é »ó´çÈ÷ ¾î·Á¿ö Áý´Ï´Ù.

½ºÀ§Ä¡ °ËÃâÀÇ °¡Àå Å« ¹®Á¦´Â ÁÖÇÔ¼ö¿¡¼­ ½Ã°£ÀÌ ÇÊ¿äÇÑ ¾î¶² Áß¿äÇÑ ÇÔ¼ö¸¦ ½ÇÇàÁßÀ̰ųª
ÇÔ¼ö¸¦ ó¸®ÇÏ´Ù ¸»°í ½ºÀ§Ä¡ ÀÔ·ÂÀ» °ËÃâÇÏ·¯°¥ ¼ö ¾ø´Â ÇÔ¼ö¸¦ ½ÇÇàÁßÀÏ ¶§ ½ºÀ§Ä¡ Á¶ÀÛÀÌ ¹ß»ýÇÑ´Ù¸é
ÀåÄ¡´Â ½ºÀ§Ä¡ °ËÃâ ´É·ÂÀÌ ¶³¾îÁö¹Ç·Î Á¶ÀÛ¼ºÀÌ ³ª»Û ÀåÄ¡·Î ÆÇÁ¤µÉ ¼öµµ ÀÖ½À´Ï´Ù.
 
¶ÇÇÑ ½ºÀ§Ä¡ÀÇ ´­¸² °ËÃâÀº ÀǿܷΠÁö¿¬ ŸÀ̸ӳª, ¸ÕÀú »óŸ¦ ±â¾ïÇϱ⵵ ÇØ¾ß Çϸ鼭
¾î¶² °æ¿ì¿¡´Â ¾ó¸¶³ª ´­·Á ÀÖ¾ú´ÂÁö¸¦ ÆÇ´ÜÇØ¾ß ÇÏ´Â ¶§µµ ÀÖ½À´Ï´Ù.
°á±¹ ½º윛 ´­¸²°ËÃâÀº 󸮼ӵµ º¸´Ù´Â ½Ã°£ÀÌ °É¸®´Â Á¾·ùÀÇ ÀÛ¾÷À̹ǷÎ,
½ºÀ§Ä¡ ´­¸² °ËÃâÀ» Àß ¸ø ó¸®Çϸé Á¤ÀÛ Áß¿äÇÑ ´Ù¸¥ ÇÔ¼öÀÇ ½ÇÇà½Ã°£À» ³¶ºñÇÏ°Ô µË´Ï´Ù.
 
ÀÌ·²¶§, ¸¶Ä§ ÁÁÀº ¶óÀ̺귯¸®°¡ ÀÖ´Ù¸é, °ñÄ¡¾ÆÇ ½ºÀ§Ä¡ 󸮸¦ ½±°Ô ¸¸µé ¼ö µµ ÀÖ°Ú±º¿ä,,, 
Library : ÷ºÎÆÄÀÏ #1À» ³»·Á¹Þ±âÇÑ ´ÙÀ½ ¾ÐÃàÀ» Ç®¸é ¾Æ·¡¿Í °°Àº Æú´õ°¡ ³ª¿É´Ï´Ù.
OneButton.cpp¿Í OneButton.h °¡ µé¾îÀÖ´Â OneButton Æú´õ¸¦ Åë°·Î Libraries Æú´õ¾È¿¡ º¹»çÇØ ÁÝ´Ï´Ù.


  
examples ¾ÈÀÇ SimpleOneButton Æú´õ´Â ³»¹®¼­ÀÇ Arduino·Î º¹»çÇØ ÁÝ´Ï´Ù.
 
 
Arduino IDE¸¦ ÀÛµ¿½Ã۰í,  Sketch > Import Libary >¸¦ º¸¸é
¾Æ·¡ÀÇ È­¸éó·³ OneButton ÀÌ µî·ÏµÇ¾î ÀÖ½À´Ï´Ù.
 

ÀÚ ÀÌÁ¦ File > Open ¿¡¼­ ³»¹®¼­ > ArduinoSimpleOneButton > Æú´õ ¾ÈÀÇ  SimpleOneButton.ino¸¦ ¼±ÅÃÇÕ´Ï´Ù.
¹öưÀ» ÀÔ·ÂÇÒ ¼ö ÀÖ´Â ¶óÀ̺귯¸® ¼Ò½º°¡ ¾ÆµàÀÌ³ë ½ºÄÏÄ¡·Î µé¾î ¿Ô½À´Ï´Ù.
VÀÚ ¸ð¾çÀÇ Verify ´ÜÃ߸¦ ´©¸£¸é ÄÄÆÄÀÏÀ» ½ÃÀÛÇÏ°í ¿À·ù°¡ ¾øÀ¸¸é IDE ¾Æ·¡ÂÊ¿¡ Done CompileÀÌ Ç¥½ÃµË´Ï´Ù.

ÀÌ ½ºÄÏÄ¡¿Í ¶óÀ̺귯¸®´Â Ç¥ÁØÀûÀÎ ´ÜÃß ½ºÀ§Ä¡°¡ Çѹø, µÎ¹ø ±×¸®°í ¿À·§µ¿¾È ´­·ÁÁö´Â°¡¸¦ °ËÃâÇÒ ¶§,
¾î¶»°Ô ÀÔ·ÂÇÉÀ» »ç¿ëÇÏ´ÂÁö º¸¿©ÁØ´Ù. À̰ÍÀº ÇѰ³ÀÇ ´ÜÃß ½ºÀ§Ä¡¸¦ ´Ù±â´ÉÀ¸·Î Àç»ç¿ëÇÏ´Â °ÍÀÌ °¡´ÉÇÏ´Ù.

¾ÆµàÀ̳ë ÇÁ·Î±×·¥À» ½ÃÀÛÇÒ ¶§, °£´ÜÇÑ ´©¸§´ÜÃ߸¦ Àд ¿¹Á¦¸¦ ÀÌÇØÇÏ·Á¸é,
ªÀº ½Ã°£¿¡ on/off°¡ ¹Ýº¹µÇ´Â Á¢Á¡ Áøµ¿À» Á¦°ÅÇØ¾ß ÇÑ´Ù.
°á·ÐÀº ½ºÄÉÄ¡¿¡¼­ ½±°Ô ó¸®ÇÏ´Â OneButton À̶ó°í ºÎ¸£´Â ÀÛÀº ¶óÀ̺귯¸®ÀÌ´Ù. 
ÀÌ ÀÚ·á´Â ¶óÀ̺귯¸®¸¦ ¾î¶»°Ô »ç¿ëÇÏ´ÂÁö º¸¿©ÁØ´Ù. ~~~ Áß·«,

ÇÁ·Î±×·¥ÀÌ ¸·È÷Áö ¾Ê°Ô ´ÜÃß ½ºÀ§Ä¡¸¦ Àбâ
³ª´Â Àü¿ë ¿ëµµ¸¦ À§ÇÑ loop() ÇÔ¼ö·Î ½ºÄÏÄ¡°¡ Á» ´õ º¹ÀâÇØÁø´Ù°í ÃßÃøÇÕ´Ï´Ù.
°øÅëÀûÀ¸·Î ¿ä±¸µÇ´Â ¹æ¹ýÀ¸·Î ¶óÀ̺귯¸®ÀÇ tick() ÇÔ¼ö ´ë½Å¿¡ 
´ÜÃß ½ºÀ§Ä¡°¡ µÎ¹ø ´­·È´ÂÁö¸¦  Àд ÇÔ¼ö¸¦ ¸¸µé¾î¾ß Çϰí, ÁÖ±âÀûÀ¸·Î È£Ãâµµ ÇØ¾ß ÇÕ´Ï´Ù.
 
¶óÀ̺귯¸® ÇÔ¼ö ¾È¿¡¼­ ¸ðµÎ 3 Á¾·ùÀÇ °ËÃâÀ» À§ÇÑ Äڵ带 ãÀ» ¼ö ÀÖ½À´Ï´Ù.
¸ðµç 3 Á¾·ùÀÇ ±â´ÉÀ» À§ÇØ ´ç½ÅÀÇ ÄÚµå´Â register ÇÔ¼ö·Î ¶óÀ̺귯¸®¿¡ ¿¬°áÇÒ ¼ö ÀÖ½À´Ï´Ù. 
´ç½ÅÀÇ ÇÔ¼ö´Â ¾Ë¸Â°Ô °ËÃâµÈ »óÅÂÀÏ ¶§ È£ÃâµÉ °ÍÀÔ´Ï´Ù.

OneButton ¶óÀ̺귯¸®ÀÇ »ç¿ë ¿¹
À̰÷Àº ÀÌ¹Ì LED°¡ ¿¬°áµÈ ¾ÆµàÀÌ³ë ±âÆÇÀÇ D13 Æ÷Æ®ÀÇ Ãâ·ÂÀ» ¹Ù²Ù±â À§ÇØ, 
´©¸§ ½ºÀ§Ä¡¸¦ µÎ¹ø ´­·¯, Ãâ·ÂÀ» ¹Ù²Ù´Â OneButton ¶óÀ̺귯¸®¸¦ »ç¿ëÇÏ´Â °£´ÜÇÑ ¿¹ÀÌ´Ù.

#include "OneButton.h"  // ¶óÀ̺귯¸®ÀÇ ¼Ò½º¸¦ ºÒ·¯ ¿Â´Ù.
OneButton button(A1); // ´ÜÃß ½ºÀ§Ä¡´Â A1 ÇÉ¿¡ ¿¬°áÇÑ °ÍÀ» Á¤ÀÇ.

void setup()   // Àü¿øÀÌ ÄÑÁø ÈÄ Ã³À½ Çѹø ½ÇÇàµÇ´Â ÃʱâÈ­ ÇÔ¼ö 
{            
   pinMode(13, OUTPUT); //
pin 13À» µðÁöÅÐ Ãâ·ÂÀ¸·Î ¼³Á¤. 
   button.attachDoubleClick(doubleclick); // ¶óÀ̺귯¸®¿¡ ³»ÀåµÈ µÎ¹ø´­¸° »óŸ¦ °ËÃâÇϴ ÇÔ¼ö¸¦ ½ºÄÉÄ¡¿¡ ¿¬°áÇÑ´Ù.
 } // ÃʱâÈ­ ³¡ 

void loop()     
// ÁÖÇÔ¼ö´Â ¿¬¼ÓÀ¸·Î ¹«ÇÑÇÏ°Ô ¹Ýº¹µÈ´Ù.
{                
  button.tick();  // ´ÜÃß ½ºÀ§Ä¡°¡ µÎ¹ø ´­·Ç´ÂÁö °Ë»çÇÑ´Ù. ¶óÀ̺귯¸®¿¡ µé¾îÀÖ´Â ÇÔ¼öÀÌ´Ù.
  delay(10);     // ¿©±â¿¡ Ãß°¡·Î ´Ù¸¥ ÀÏÀ» Çϴ ÇÔ¼ö¸¦ ³ÖÀ» ¼ö ÀÖ´Ù.
}  // ÁÖÇÔ¼öÀÇ ³¡

// ÀÌ ÇÔ¼ö´Â ´ÜÃß ½ºÀ§Ä¡°¡ 2¹ø ´­¸®¸é ¶óÀ̺귯¸®¿¡¼­ ÀÚµ¿À¸·Î È£ÃâµÇ¾î ½ÇÇàµÈ´Ù.
void doubleclick()
{
  static int m = LOW;  // ´­¸° °ÍÀ» ÀÎÁöÇÏ¿© ¿©±â¸¦ »øÇàÇϹǷΠ´©¸§ »óÅ´ Áö¿î´Ù.
  m = !m;  // LED »óŸ¦ ¹Ù²Ù±â À§ÇØ ½ÅÈ£¸¦ µÚÁý´Â´Ù. 
  digitalWrite(13, m);  // µÚÁýÀº ½ÅÈ£¸¦ D13 ¿¡ Ãâ·Â
}  // µÎ¹ø ´©¸£±â ó¸® ÇÔ¼ö ³¡ (ÀÌ ÇÔ¼ö´Â ½ºÀ§Ä¡ ´­¸² °ËÃâ ÈÄ¿¡ »ç¿ëÀÚÀÇ ¿ëµµ¸¦ ó¸®ÇÏ´Â ÇÔ¼öÀÌ´Ù)


´©¸§´ÜÃß ½ºÀ§Ä¡°¡ ÇØÁ¦ µÈ ´ÙÀ½, µÎ¹ø´­¸² °ËÃâÇÔ¼ö°¡ ¾î¶»°Ô µÇ´ÂÁö º¸¿©ÁØ´Ù.
 
±â´ÉÀÇ »ó¼¼
¶óÀ̺귯¸®°¡ ¾î¶»°Ô ÀÛµ¿ÇÏ´ÂÁö ¿¹Á¦¸¦ ¼³¸íÇÏ¿© º¸¿©ÁØ´Ù.
ÀÔ·Â ÇÉÀÇ Çѹø ´­¸²À» °ËÃâÇϰųª, µÎ¹ø ´­¸² ȤÀº ¿À·¡ ´­¸²ÀÇ »óŸ¦ Á¡°ËÇϱâ À§ÇØ,
OneButton ¶óÀ̺귯¸® ¾È¿¡¼­ tick() ÇÔ¼öÀÇ ±â´ÉÀ» ãÀ» ¼ö ÀÖ½À´Ï´Ù. 
 
´ÙÀ½ÀÇ »óÅ ±×¸²(state diagram)¿¡¼­ º¸¿©Áִ ó¸®ÀÇ Á¾·ù´Â À¯ÇÑ »óŠ󸮱â finite state machine (FSM) À̶ó ÇÑ´Ù. 
Ưº°ÇÑ ±×¸²À̳ª ¼öÇÐÀÇ ¼ö½Äµéµµ °á±¹ Á¤º¸¸¦ ½±°Ô Àü´ÞÇÏ·Á´Â ´Ù¸¥ ¾ð¾î¶ó°í »ý°¢ÇÏ¸é µË´Ï´Ù.

 

Ç×»ó tick() ÇÔ¼ö´Â ÇöÀç »óȲ¿¡¼­ È£ÃâµÈ´Ù. ÇöÀç »óÅÂÀÇ Àбâ¿Í ÀÔ·ÂÆ÷Æ®ÀÇ °ªÀº ºÐ¼®µÈ´Ù.   
±×¸®°í ÇöÀç »óŰ¡ º¯È­µÉ ¶§ »ç¿ëÇÒ ¿ÜºÎ ÇÔ¼ö ¿¹ doubleclick()ÀÌ È£ÃâµÈ´Ù.
Ưº°ÇÑ OneButton ¶óÀ̺귯¸® ±â´ÉÀº delay() ÇÔ¼ö³ª ºñ½ÁÇÑ Áö¿¬ÇÔ¼ö°¡ ¾Æ´Ï´Ù.
±×¸®°í °ÅÀÇ ¸ðµç °æ¿ì¿¡ ºü¸£°Ô ÁÖÇÔ¼ö·Î µ¹¾Æ¿Ã °ÍÀÌ´Ù. (Áö¿¬ÀÌ ¾øÀ¸¹Ç·Î 󸮼ӵµ°¡ ºü¸£´Ù)

ÀÌÁ¦ ºÎÅÍ´Â, ÀÌ ¼ÒÇÁÆ®¿þ¾î ÀåÄ¡°¡ ¾î¶»°Ô ÀÛµ¿ÇÏ´ÂÁö ¼³¸íÇÑ´Ù.
ÀÔ·Â °ª (Input values)Àº ÀϹÝÀûÀ¸·Î µðÁöÅÐ ÀÔ·Â Æ÷Æ®¿¡ ¿¬°áµÈ ´ÜÃß ½ºÀ§Ä¡ÀÇ °ËÃâ¹æ¹ýÀÌÁö¸¸,
ÀÌ ÇÉÀº high »óÅ·Π³»ºÎ pull upµÇ¾î ÀÖ°í, ¿¬°áµÈ ½ºÀ§Ä¡°¡ ´­·ÈÀ» ¶§ low »óÅ·Πpull down µÈ´Ù.
´ÜÃß ½ºÀ§Ä¡ °ËÃâ ¼ÒÇÁÆ®¿þ¾î¿¡¼­, óÀ½À¸·Î °ËÃâµÉ µðÁöÅÐ ÀÔ·Â °ªÀº µðÁöÅÐ ÀÔ·Â ÇÉÀÇ °ªÀÌ »ç¿ëµÈ´Ù.
int buttonLevel = digitalRead(_pin); // ÇöÀç ´ÜÃßÀÇ ½ÅÈ£

´Ù¸¥ ÀÔ·Â °ªÀ¸·Î ÇöÀç ½Ã°£ÀÌ ÇÊ¿äÇÏ´Ù. millis() ÇÔ¼ö´Â ÁÁÀº ½Ã°£°ªÀ» Á¦°øÇÑ´Ù.
ÀÌ ½Ã°£ °ªÀº ´ÜÃß°¡ ´­¸° ½Ã°£ÀÇ Çհ踦 ¿ÏÀüÇÏ°Ô °ËÃâÇϱâ À§ÇØ »ç¿ëµÈ´Ù.
ÀÔ·ÂÇÉ¿¡ ´­·ÁÀִ ½Ã°£ °ªÀº ´©¸§Ã³¸® º¯¼ö now·Î º¹»çµÈ´Ù
unsigned long now = millis(); // current (relative) time in msecs.

»óÅÂ(State) Á¤º¸´Â ÇѹøÀǠȣÃ⠱׸®°í µû¶ó¿À´Â ´ÙÀ½ È£Ãâ »óÅ »çÀÌ¿¡¼­ ¼ýÀÚ¿Í ½Ã°£°ªÀ¸·Î ÀúÀåµÈ´Ù.
ÇöÀçÀÇ »óȲÀÌ Æ¯º°ÇÑ »óÅ·Π¸íĪµÈ ÇѰ³ÀÇ º¯¼ö _stat ¿¡ Á¤º¸·Î °¢ÀÎ(hold)µÈ´Ù.  
Áï, ´ÜÃß°¡ óÀ½ ´­·ÁÁ³À» ¶§, »óÅÂÀÇ ¼ýÀÚ¸¦ »ç¿ëÇÏ°í ´Ù¸¥ Çϳª´Â ½Ã°£À» ÀúÀåÇÒ °ÍÀÌ´Ù.  
2°³ÀÇ º¯¼ö´Â »óŠ󸮱â(state machine)ÀÇ ÇÔ¼ö·Î Á¤Àǵǰí static keyword·Î Ç¥½ÃµÈ´Ù.
 
¶ÇÇÑ 2°³ÀÇ º¯¼ö´Â ´ÙÀ½¿¡ tick ÇÔ¼öÀÇ È£ÃâÀ» À§ÇØ ¼ýÀÚ·Î ÀúÀåµÉ °ÍÀÌ´Ù.
int _state = 0; // state 0·Î ½ÃÀ۵ȴÙ: ´ÜÃß°¡ ´­¸±¶§ ±îÁö ±â´Ù¸°´Ù
unsigned long _startTime; // state 1 À¸·Î ¼³Á¤µÉ °ÍÀÌ´Ù. 

½ÃÀÛ »óÅ (Starting situation = state 0)
»óÅ õÀÌ´Â ´ÜÃß°¡ ´©¸§ÀÇ ´ë±â¿¡¼­ 0 »óÅ (state 0)·Î ½ÃÀÛÇÑ´Ù.
´ÜÃß´­¸²À» °ËÃâÇÏ´Â ÇÔ¼ö´Â ªÀº ½Ã°£ ÈÄ¿¡ ´Ù½Ã È£ÃâµÉ °ÍÀ̹ǷÎ,
¸¸ÀÏ ´ÜÃß°¡ ´­·ÁÁöÁö ¾ÊÀ¸¸é ÇÔ¼ö·Î ºÎÅÍ Áï½Ã ÁÖ ÇÔ¼ö·Î º¹±Í(return)µÈ´Ù.

±×·¯³ª ¸¸ÀÏ ´ÜÃß°¡ ´­·ÁÁ³´Ù¸é, º¯¼ö now´Â stat 0¿¡¼­ ´Ù¸¥ »óÅÂÀÎ stat 1À¸·Î ÀúÀåµÈ´Ù.
Áö³­ ½Ã°£ÀÇ ÆÇ´ÜÀº ¸ÕÀú ÇöÀçÀÇ ½Ã°£À» ±â¾ïÇØ µÎ¾î¾ß ºÐ¼®ÇÒ ¼ö Àֱ⠶§¹®ÀÌ´Ù.
 
if (_state == 0)  // ÀÔ·ÂÆ÷Æ®¿¡ ¿¬°áµÈ ´ÜÃß°¡ ´­¸±¶§ ±îÁö ´ë±âÇÑ´Ù.  
{    
   if (buttonLevel == ButtonDown)     // ´ÜÃß°¡ ´­¸° °æ¿ì¿¡¸¸ ´ÙÀ½À» ½ÇÇà

  {
     _state = 1;    // ´ÜÃß°¡ ´­·ÈÀ¸¸é »óÅ 1·Î ¿Å±ä´Ù 
     _startTime = now;    // ÇöÀçÀÇ ½Ã°£À» ÀúÀå 
    }


óÀ½À¸·Î ´ÜÃß°¡ ´­·Á Á³À» ¶§ (state 0) ¸î ms ÀÌÈÄ¿¡´Â ´ÙÀ½ ÇÔ¼ö°¡ È£ÃâµÉ °ÍÀÌ´Ù.
´ÜÃß°¡ ´­·ÁÁ³À¸¸é ´Ù½Ã ½ÃÀÛ»óÅÂ(state 0)·Î µÇ°Å³ª, »õ·Î¿î »óÅÂ(state 1)·Î µË´Ï´Ù. 
ÀÌ °æ¿ì¿¡´Â ´ÜÃßÀÇ ´­¸²ÀÌ Ç®¸± ¶§ ±îÁö ±â´Ù¸° ´ÙÀ½ ´ÙÀ½ »óÅÂ(state 2)·Î ³Ñ¾î°¡°Ô µË´Ï´Ù.
 
Àΰ£ÀÇ ¼Õ°¡¶ôÀº ±×´ÙÁö ºü¸£Áö ¾Ê±â ¶§¹®¿¡, ´ÜÃß°¡ °è¼Ó ´­·ÁÁø »óÅ·ΠÀÖ°Ô µÇ¸é,
ÀÏÁ¤½Ã°£ ´ÜÃß°¡ ´­¸° °Í ¸¸À¸·Îµµ ´ÜÃßÀÇ ´­¸²°ËÃâ ÇÔ¼öÀ» ¿Ï¼ºÇÒ ¼ö µµ ÀÖÁö¸¸,,,
ÀÌ ÇÔ¼ö¿¡¼­´Â ¾Æ¹«·± »óÅÂÀÇ º¯È­°¡ ¾ø½À´Ï´Ù, Áï ´ÜÃß´­¸²ÀÇ °ËÃâÀº ¹ß»ýÇÏÁö ¾Ê½À´Ï´Ù.
 
Áï, ´ÜÃß°¡ °è¼Ó´­¸° »óÅÂ(state 1)´Â »õ·Î¿î tick ÀÌ ¹ß»ýÇÒ ¶§ ±îÁö ±â´Ù¸³´Ï´Ù.
´ÜÃß´­¸²ÀÌ 1ÃÊ ÀÌ»ó °è¼ÓµÇ¸é, ¿À·¡´­¸²ÀÇ °ËÃâÀÌ ¹ß»ýÇÏ°í ´Ù¸¥ »óÅÂ(state 6)·Î µË´Ï´Ù.

À̰ÍÀº ½ÇÁ¦ ´­·ÁÁø ½Ã°£°ú ´ÜÃß´­¸²ÀÌ ½ÃÀÛµÈ ½Ã°¢ ºÎÅÍ Á¤ÀÇµÈ °£°ÝÀ¸·Î ºñ±³µË´Ï´Ù.
ÀÌ °æ¿ì¿¡´Â ¿ÜºÎÀÇ ´­¸²Ã³¸® press() ÇÔ¼ö¸¦ È£ÃâÇÏ°Ô µÈ´Ù. ¾Æ·¡ÀÇ ¶óÀ̺귯¸® Äڵ带 º¸¶ó.

else if (_state == 1) // ¸¸ÀÏ »óŰ¡ 1 À̶ó¸é ´­¸²ÀÌ Ç®¸®±â¸¦ ±â´Ù¸°´Ù.
{

   if (buttonLevel == ButtonUp) _state = 2; // ´­¸²ÀÌ Ç®·ÈÀ¸¸é »óÅ 2 (state 2)·Î °£´Ù 
   else if ((buttonLevel == ButtonDown) && (now > _startTime + _pressTicks))
  {
     if (_pressFunc) _pressFunc();   // ¸¸ÀÏ ¿À·¡´­¸²ÀÌ °ËÃâµÇ¸é »óÅ 6 (state 6)À¸·Î °£´Ù.
     _state = 6; // step to state 6
   }

}  // »óÅ 2 ³ª »óÅ 6 ÀÌ ¾Æ´Ï¸é ÀÌÀü »óŸ¦ À¯ÁöÇϰí ÁÖÇÔ¼ö·Î ³ª°£´Ù. 
 
´ÜÃߴ óÀ½ ´­¸²¿¡¼­ Ç®·È´Ù(state 2). ÀÌ »óÅÂ(stat 2)´Â ´ÜÃß°¡ ÀÌ¹Ì Ç®·ÈÀ¸¹Ç·Î 2°³ÀÇ ÀÏÀÌ µÈ´Ù.
 
¸¸ÀÏ ¾î´ÀÁ¤µµ ´ÜÃß°¡ ´­¸° ´ÙÀ½ ¾ó¸¶ µ¿¾È ´­·ÁÁöÁö ¾Ê¾Ò´Ù¸é,
¿ÜºÎ click() ÇÔ¼ö°¡ ½ÇÇà-È£Ãâ(call)-µÈ´ÙÀ½ state´Â 0À¸·Î ¸®¼ÂµÈ´Ù.
 
¸¸ÀÏ ´ÜÃß°¡ ÀÌÀüºÎÅÍ °è¼Ó ´­·ÁÀÖ´Ù¸é,
2 ¹øÂ° ´ÜÃß°¡ ´­¸°°ÍÀ¸·Î °ËÃâµÇ¾î ´ÙÀ½ »óȲ (state 3)À¸·Î Àü´ÞÇÒ °ÍÀÌ´Ù. 
 
 else if (_state == 2)  // ½Ã°£Ãʰú³ª ´ÙÀ½ ´­¸²ÀÌ ÀÖÀ» ¶§ ±îÁö ±â´Ù¸°´Ù.
 { 
    if (now > _startTime + _clickTicks)
   { 
        if (_clickFunc) _clickFunc();   // ªÀº Çѹø ´­¸²À̸é, ¿ÜºÎ »ç¿ëÀÚ Ã³¸®ÇÔ¼ö¸¦ ½ÇÇàÇÑ´Ù.

        _state = 0;       // »óŸ¦ 0À¸·Î ¸®¼Â.
    }

    else if (buttonLevel == ButtonDown) _state = 3; // °è¼Ó ´­·Á ÀÖ´Ù¸é state 3À¸·Î °£´Ù. 
  }

ÀÔ·Â ÇÉÀÌ ´ÙÀ½ ½Ã°£±îÁö Ç®¸®±â¸¦ ±â´Ù¸°´Ù. 2 ¹øÂ° ´­¸²ÀÌ °ËÃâµÈ ÀÌÈÄ´Â ¸¶Áö¸· »óȲ (state 3)ÀÌ´Ù.
Á¤ÀÇµÈ ½Ã°£Æ² ¾È¿¡¼­ ´ÜÃß°¡ Ç®¸®±â¸¦ ±â´Ù¸°´Ù. À̰ÍÀº ¿ÜºÎ »ç¿ëÀÚ µÎ¹ø´­¸² ÇÔ¼ö doubleClic()À» ½ÇÇàÇÒ °ÍÀÌ´Ù.
±×¸®°í »óŠ󸮱â(state machine)´Â ¸ðµç ±â¾ïÀ» Áö¿ì°í ¸®¼ÂµÈ´Ù.  
 
else if (_state == 3)  // »óŰ¡ 3 ÀÌ¸é ´­¸²ÀÌ Ç®¸±¶§ ±îÁö ±â´Ù¸°´Ù.
{
   if (buttonLevel == ButtonUp) // ¸¸ÀÏ ´ÜÃß°¡ Ç®·ÈÀ¸¸é
   {
      if (_doubleClickFunc) _doubleClickFunc(); // ¿ÜºÎÀÇ 2¹ø ´­¸² 󸮸¦ ½ÇÇàÇÑ´Ù

      _state = 0;    // »óŸ¦ 0À¸·Î ¸®¼ÂÇÑ´Ù.
    }

}  // ¸¸ÀÏ ´ÜÃß°¡ ¾ÈÇ®¸®¸é ±×´ë·Î ÁÖÇÔ¼ö·Î ³ª°£´Ù.

´ÙÀ½¹ø¿¡ ÀÔ·ÂÇÉÀÌ Ç®¸®±â¸¦ ±â´Ù¸°´Ù.
ÀÌ »óȲ(state 6)Àº 2¹øÂ° ´­¸²°ËÃâ°ú ¸Å¿ì ºñ½ÁÇÏ´Ù
´ÜÃß°¡ Ç®¸®±â¸¦ ±â´Ù¸®¸ç »óŸ¦ À¯ÁöÇÑ´Ù.
À̶§´Â »óŠ󸮱â(state machine)°¡ ½ÃÀÛÇÒ ¶§ºÎÅÍÀÇ ¸ðµç ±â¾ïÀ» Áö¿ì°í ¸®¼ÂÇÑ´Ù. 
 
else if (_state == 6)  // ¿À·§µ¿¾È ´­¸²ÈÄ¿¡ ´ÜÃß°¡ Ç®¸± ¶§ ±îÁö ±â´Ù¸°´Ù.
{
   if (buttonLevel == ButtonUp) //¸¸ÀÏ ´ÜÃß°¡ Ç®¸®¸é
  {
     _state = 0; // »óŸ¦ 0À¸·Î ¸®¼ÂÇÑ´Ù.
   }

} // °è¼Ó ´­·ÁÀÖ´Ù¸é ÁÖÇÔ¼ö·Î ¾Æ¹«Àϵµ ÇÏÁö ¾Ê°í ÁÖÇÔ¼ö·Î µ¹¾Æ°£´Ù.

¿ä¾à :
À¯ÇÑ»óŠ󸮱â (FSM)´Â ¸¹Àº »óȲ°ú º¹ÀâÇÑ ±¸Á¶¸¦ ³·Ãß´Â µµ¿òÀ» ÁֱⰡ ¸Å¿ì ½±´Ù.
±×¸®°í ¾ÆµàÀ̳ëÀÇ ½ºÄÏÄ¡¿¡¼­ ÀÇ»ç(pseudo) º´·Äó¸®(multitasking)·Î ÀÛ¼ºµÈ ¹æ¹ýÀ¸·Î µµ¿òÀ» ÁØ´Ù.
 
OneButton ¶óÀ̺귯ÀÇ ¼³Ä¡¹æ¹ýÀº À§¿¡¼­ ¼³¸íÇßÀ¸¹Ç·Î »ý·«ÇÑ´Ù.
ÇÏÁö¸¸ ¶óÀ̺귯¸®¸¦ ¼³Ä¡ÇÏ°í ¾ÆµàÀÌ³ë ½ºÄÏÄ¡¸¦ ½ÇÇàÇØ¾ß ÀÚµ¿À¸·Î Ãß°¡µÈ library¸¦ ÀνÄÇÑ´Ù.

ÀÌ ÇÁ·Î±×·¥Àº ¹«·á ¼ÒÇÁÆ®¿þ¾î·Î, ½Åü¿Í Àç»ê »óÀÇ ¾î¶² À§Çè°ú ¼ÕÇØ¸¦ º¸»óÇÏÁö ¾Ê½À´Ï´Ù.
ÀÌ ÇÁ·Î±×·¥Àº GNU ¹«·á ¼ÒÇÁÆ®¿þ¾î ¹èÆ÷±ÔÁ¤À» µû¸¨´Ï´Ù.
Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA
AVRTOOLS¢â
   
  0
9999
À­±Û ¾ÆµàÀ̳ëÀÇ Á֯ļö Ãâ·Â ÇÔ¼ö
¾Æ·¡±Û ¾ÆµàÀÌ³ë ³í¸®¿¬»ê
    N         Á¦¸ñ    ±Û¾´ÀÌ ÀÛ¼ºÀÏ Á¶È¸ Ãßõ
ÆÇ¸Å»óǰÀÇ »ç¿ë¼³¸í¼­´Â ´Ù¸¥ ÀÚ·á½Ç¿¡,,, avrtools¢â 2011/08/30 (È­) 1736 0
24 sine wave table »ý¼º¹æ¹ý avrtools¢â 2018/02/10 (Åä) 195 0
23 LCD ¹®ÀÚÇ¥½Ã (½ÅÇü) avrtools¢â 2012/04/12 (¸ñ) 2473 0
22 ¾ÆµàÀÌ³ë ¸á·Îµð ¿¬ÁÖ avrtools¢â 2008/08/22 (±Ý) 3771 0
21 ¾ÆµàÀ̳ë 4ºñÆ® LCD (±¸Çü) avrtools¢â 2008/09/02 (È­) 4725 0
20 ¾ÆµàÀÌ³ë °¡º¯ÀúÇ× avrtools¢â 2008/08/26 (È­) 3362 0
19 Á÷·Ä µ¥ÀÌÅÍ À̵¿(shift) Ãâ·Â avrtools¢â 2012/04/10 (È­) 2002 0
18 µðÁöÅÐ ½ÅÈ£ÀÇ ÆÞ½ºÆøÀ» ÃøÁ¤ÇÏ´Â ÇÔ¼ö avrtools¢â 2012/04/10 (È­) 2272 0
17 EEPROM Àбâ, ¾²±â ÇÔ¼ö avrtools¢â 2012/04/10 (È­) 2794 0
16 º¯¼öÀÇ Å©±â avrtools¢â 2012/04/10 (È­) 1938 0
15 Ç÷¹½Ã ¸Þ¸ð¸®¿¡ »ó¼ö¸¦ ÀúÀåÇϰí Àд ÇÔ¼ö avrtools¢â 2012/04/10 (È­) 2242 0
14 ¼ÒÇÁÆ®¿þ¾î Serial ÇÔ¼ö avrtools¢â 2012/04/10 (È­) 2137 0
13 ¾ÆµàÀ̳ë ÅÍÄ¡½ºÀ§Ä¡ [3] avrtools¢â 2008/08/11 (¿ù) 4601 0
12 ¾ÆµàÀ̳ë shiftOut avrtools¢â 2008/09/10 (¼ö) 3785 0
11 ¾ÆµàÀÌ³ë ½ºÀ§Ä¡¿Í LEDÁ¡µî avrtools¢â 2008/08/13 (¼ö) 5292 0
10 ¾ÆµàÀ̳ëÀÇ Á֯ļö Ãâ·Â ÇÔ¼ö avrtools¢â 2009/10/20 (È­) 3150 0
9 One Button Switch Library avrtools¢â 2012/03/09 (±Ý) 2188 0
8 ¾ÆµàÀÌ³ë ³í¸®¿¬»ê avrtools¢â 2008/08/26 (È­) 3400 0
7 ¾ÆµàÀ̳ë PS2 Űº¸µå Àбâ avrtools¢â 2008/09/10 (¼ö) 4748 0
6 ¾ÆµàÀÌ³ë °¡·Îä±â ÇÔ¼ö avrtools¢â 2008/08/23 (Åä) 3591 0
5 ¾ÆµàÀ̳ë Àü¿ë¸í·É avrtools¢â 2008/09/16 (È­) 4224 0
4 ¾ÆµàÀ̳ë PWM Ãâ·Â°ú ŸÀ̸Ó1 Àü¿ë¸í·É avrtools¢â 2008/08/19 (È­) 3926 0
3 8ºñÆ® Æ÷Æ®ÀÇ ´ÜÀϺñÆ® Á¶ÀÛ¹æ¹ý avrtools¢â 2010/10/30 (Åä) 2820 0
2 Á÷·ÄÆ÷Æ®¿¡¼­ ¹®ÀÚ¸¦ ¹Þ¾Æ ¼ýÀÚ int·Î ÀúÀå avrtools¢â 2012/04/08 (ÀÏ) 2018 0
1 Á÷·ÄÅë½ÅÆ÷Æ®ÀÇ ÃʱâÈ­ avrtools¢â 2012/04/06 (±Ý) 1745 0
1

¹Ù±¸´Ï : 0
 º¸°üÇÔ : 0
¿À´Ãºä : 0
HOME   £ü   ȸ»ç¼Ò°³   £ü   Á¦È޾ȳ»   £ü   ȸ»çÀ§Ä¡   £ü   ¼­ºñ½ºÀÌ¿ë ¾à°ü   £ü   °³ÀÎÁ¤º¸ º¸È£Á¤Ã¥   £ü   »çÀÌÆ®¸Ê
17015 °æ±âµµ ¿ëÀνà ±âÈﱸ µ¿¹éÁß¾Ó·Î16¹ø±æ 16-25, 508È£. ÀüÈ­ : 031-282-3310
»ç¾÷ÀÚ µî·Ï¹øÈ£ : 697-47-00075 / ´ëÇ¥ : À̰ǿµ / ¾÷Å : Á¦Á¶¾÷ / Á¾¸ñ : LEDÁ¶¸í, LEDÀü¿ø, Á¦¾îÀåÄ¡.
°³ÀÎÁ¤º¸ °ü¸®Ã¥ÀÓÀÚ : ȨÆäÀÌÁö °ü¸®ÀÚ . Copyright ¨Ï2016 ¾ÆÅ©·¹Áî (ACLEDS INC.)
HOME TOP PREV ¤ý NEXT 0 0 0