{"id":813,"date":"2016-09-05T22:24:42","date_gmt":"2016-09-05T13:24:42","guid":{"rendered":"http:\/\/now0930.iptime.org\/wordpress\/?p=813"},"modified":"2016-09-08T23:32:41","modified_gmt":"2016-09-08T14:32:41","slug":"hsm%ec%9d%84-%ed%99%9c%ec%9a%a9%ed%95%9c-%eb%a0%88%ea%b3%a0-%ec%9e%a5%eb%82%9c%ea%b0%90-%eb%a7%8c%eb%93%a4%ea%b8%b0","status":"publish","type":"post","link":"https:\/\/now0930.pe.kr\/wordpress\/hsm%ec%9d%84-%ed%99%9c%ec%9a%a9%ed%95%9c-%eb%a0%88%ea%b3%a0-%ec%9e%a5%eb%82%9c%ea%b0%90-%eb%a7%8c%eb%93%a4%ea%b8%b0\/","title":{"rendered":"HSM\uc744 \ud65c\uc6a9\ud55c \ub808\uace0 \uc7a5\ub09c\uac10 \ub9cc\ub4e4\uae30"},"content":{"rendered":"<p>\uae30\uc5b5\ud558\uae30 \uc704\ud574\uc11c \uae30\ub85d\ud574 \ub193\uc74c..<\/p>\n<p>\ucc98\uc74c \ub2e4\uc774\uc5b4\uadf8\ub7a8\uc778\ub370..\uc218\uc815.<br \/>\n<img loading=\"lazy\" decoding=\"async\" class=\"alignleft size-large wp-image-814\" src=\"http:\/\/now0930.iptime.org\/wordpress\/wp-content\/uploads\/2016\/09\/12113378_1289445931071053_7620380557359358782_o-1024x576.jpg\" alt=\"12113378_1289445931071053_7620380557359358782_o\" width=\"474\" height=\"267\" srcset=\"https:\/\/now0930.pe.kr\/wordpress\/wp-content\/uploads\/2016\/09\/12113378_1289445931071053_7620380557359358782_o-1024x576.jpg 1024w, https:\/\/now0930.pe.kr\/wordpress\/wp-content\/uploads\/2016\/09\/12113378_1289445931071053_7620380557359358782_o-300x169.jpg 300w, https:\/\/now0930.pe.kr\/wordpress\/wp-content\/uploads\/2016\/09\/12113378_1289445931071053_7620380557359358782_o-768x432.jpg 768w, https:\/\/now0930.pe.kr\/wordpress\/wp-content\/uploads\/2016\/09\/12113378_1289445931071053_7620380557359358782_o.jpg 2048w\" sizes=\"auto, (max-width: 474px) 100vw, 474px\" \/><\/p>\n<p>\uc218\uc815 \ub2e4\uc774\uc5b4\uadf8\ub7a8\uc740 \uc544\ub798\uc640 \uac19\ub2e4.<br \/>\n<img loading=\"lazy\" decoding=\"async\" class=\"alignleft size-large wp-image-824\" src=\"http:\/\/now0930.iptime.org\/wordpress\/wp-content\/uploads\/2016\/09\/20160908_225320-e1473343425736-1024x696.jpg\" alt=\"20160908_225320\" width=\"474\" height=\"322\" srcset=\"https:\/\/now0930.pe.kr\/wordpress\/wp-content\/uploads\/2016\/09\/20160908_225320-e1473343425736-1024x696.jpg 1024w, https:\/\/now0930.pe.kr\/wordpress\/wp-content\/uploads\/2016\/09\/20160908_225320-e1473343425736-300x204.jpg 300w, https:\/\/now0930.pe.kr\/wordpress\/wp-content\/uploads\/2016\/09\/20160908_225320-e1473343425736-768x522.jpg 768w\" sizes=\"auto, (max-width: 474px) 100vw, 474px\" \/><\/p>\n<p>\uae30\uc874 \ub300\ube44 S11\uc744 \uc9c0\uc6cc \ubc84\ub838\ub2e4. S10\uc5d0\uc11c S11\ub85c transiton\uc774 \ubc1c\uc0dd\ud560 \ub54c, \ubaa8\ud130 \ub3d9\uc791\uc774 \ub05d\ub098\uae30 \ub54c\ubb38\uc5d0 \uad73\uc774 S11\uc744 \ub9cc\ub4e4 \ud544\uc694\uac00 \uc5c6\ub2e4. self transition\uc73c\ub85c \ucc98\ub9ac\ud588\ub2e4. state machine\uc744 \ub0b4\uac00 \uc81c\ub300\ub85c \uc774\ud574\ud558\uace0 \uc788\ub294\uc9c0 \ubaa8\ub974\uaca0\uc73c\ub098..<\/p>\n<p>S13\uc5d0\uc11c\ub3c4 self transition\uc744 \ucd94\uac00 \ud588\ub294\ub370, \ud68c\uc804 \ub3d9\uc791\uc2dc \uc7a5\uc560\ubb3c\uc744 \uc644\uc804\ud558\uac8c \ud53c\ud588\ub294\uc9c0\ub97c \ud655\uc778\ud558\uae30 \uc704\ud574\uc11c\uc774\ub2e4. S13\uc5d0\uc11c \uc774\ubca4\ud2b8\ub97c \ub2e4\uc2dc \ud55c\ubc88 \ud655\uc778\ud558\uace0, \uc7a5\uc560\ubb3c\uc5d0 \uac78\ub9ac\uba74 \uc804\uc9c4\ub3d9\uc791 \uc5c6\uc774 \ud68c\ud53c \ub3d9\uc791\uc744 \ud558\ub3c4\ub85d \ud588\ub2e4.<\/p>\n<p>\uac00\uc7a5 \uace0\ubbfc\ud588\ub358 \ubd80\ubd84\uc740 S0\uc740 event driven program\uc774\uace0 S1\uc740 data driven program \ubc29\uc2dd\uc73c\ub85c \uc811\uadfc\ud574\uc57c \ud560 \uac83 \uac19\uc740\ub370, \ubaa8\ub4e0 ir\uc13c\uc11c\ub85c \uc77d\uc5b4 \ub4e4\uc774\ub294 \ubaa8\ub4e0 \ub370\uc774\ud130\ub97c event\ub85c \ubd84\ub958\ud558\uae30\uac00 \ud798\ub4e4\uc5c8\ub2e4. \uc774\ubca4\ud2b8\ub85c \uc124\uc815\ud558\ub824\uba74 \ubc30\ud0c0\uc801 \uad00\uacc4\ub3c4 \ud655\uc778\ud574 \ubd10\uc57c \ud558\ub294\ub370, \ubc84\ud2bc \ub20c\ub9bc\uc5ec\ubd80 * \ubc84\ud37c\uc758 \uc218\uce58\ubcc4 \uc774\ubca4\ud2b8\ub97c \ud55c\uac1c\uc758 event\ub85c \ucc98\ub9ac\ud558\ub824\uba74 \uacbd\uc6b0\uc758 \uc218\uac00 \ub108\ubb34 \ub9ce\uc558\ub2e4. \ucfe8\ud558\uac8c evnet\ub294 \uc544\ub798\uc640 \uac19\uc774 \uba87\uac00\uc9c0 \uacbd\uc6b0\ub9cc \uc7a1\uc558\ub2e4. \ub098\uba38\uc9c0\ub294 S1\uc5d0 \ub4e4\uc5b4\uac14\uc73c\ubbc0\ub85c \ub300\ub7b5 \ubb34\uc2dc\ud558\uae30\ub85c \ud588\ub2e4.<\/p>\n<pre class=\"lang:java decode:true \" title=\"event\" >package hsm;\r\n\r\nimport lejos.hardware.Button;\r\n\r\npublic class Event {\r\n\t  \r\n\t  public enum mEvent {EnterPressed,DownPressed,GapIsWide,GapIsNarrow,Nothing};\r\n\t  \r\n\t  \/\/Ir\uc13c\uc11c\ub97c \uc77d\uae30 \uc704\ud55c \ubd80\ubd84..\r\n\t  private float irValue;\r\n\t  \r\n\t  public Event(float tmp){\r\n\t\t  this.irValue = tmp;\r\n\t  }\r\n\t \/* \r\n\t  public void setEventBuffer(float value){\r\n\t\t  this.irValue = value;\r\n\t  }\r\n\t  *\/\r\n\t  \r\n\t  public mEvent getID(){\r\n\t\t  \r\n\t\t  mEvent thisEvent = mEvent.Nothing;\r\n\t\t  \r\n\t\t  \/\/\ubc84\ud37c\uc5d0\uc11c \ub370\uc774\ud130\ub97c \uc77d\uc5b4 \ub4e4\uc784 \r\n\r\n\t\t  if(Button.ENTER.isDown() == true)\r\n\t\t\t  return mEvent.EnterPressed;\r\n\r\n\t\t  if(Button.DOWN.isDown() == true)\r\n\t\t\t  return mEvent.DownPressed;\r\n\t\t  \r\n\t\t  if(irValue &gt; 10)\r\n\t\t  \treturn mEvent.GapIsWide;\r\n\t\t  \r\n\t\t  if(irValue &lt;= 10)\r\n\t\t\t  return mEvent.GapIsNarrow;\r\n\t\t \t\t  \r\n\t\t  return thisEvent;\r\n\t  }\r\n\t  \r\n\t  \r\n\r\n\r\n}<\/pre>\n<p>\uc77c\ub2e8 S1\uc5d0 \ub4e4\uc5b4\uac00\uba74, irRead -> ir \ubc84\ud37c \uac00\uacf5 -> \ubaa8\ud130 \ub3d9\uc791\uc758 \ubc29\uc2dd\uc73c\ub85c \ucc98\ub9ac\ud588\ub294\ub370, \uc774 \ubc29\ubc95\ub3c4 \uc88b\uc9c0 \uc54a\uc558\ub2e4. \uac01 state\ubcc4 process\uac00 \ub2e4\ub978\ub370, thread\ub85c \ub3cc\ub9ac\uba74 \uc774\ub97c \uad6c\ubd84\ud560 \uc218 \uc5c6\uac8c \ub41c\ub2e4. \ub530\ub77c\uc11c \uc544\ub798\uc640 \uac19\uc774 \uc218\uc815\ud588\ub2e4.<\/p>\n<p>S10,S13\uc5d0\uc11c\ub9cc irRead \ub3d9\uc791, S10,S12,S13\uc5d0\uc11c\ub294 \ubaa8\ud130 \ub3d9\uc791, \uac01 transition\uc5d0 \ub530\ub978 \ubc84\ud37c\uac12 \uc218\uc815..<\/p>\n<p>S0\uc5d0\uc11c\ub294 \ubc84\ud2bc\uc774 \ub20c\ub9bc\ub9cc \uac10\uc2dc\ud558\uae30 \ub54c\ubb38\uc5d0 event driven programming\uc73c\ub85c \uc811\uadfc\ud588\ub2e4.<\/p>\n<p>hsm\uc758 c++ -&gt; java \uc774\uc2dd\uc740 \uc778\ud130\ub137\uc758 \ucf54\ub4dc\ub97c \uadf8\ub300\ub85c \uc0ac\uc6a9\ud588\ub2e4.<br \/>\nhsm\uc758 \uad6c\uc870\ub294 \ub300\ub7b5 \uc544\ub798\uc640 \uac19\ub2e4.<\/p>\n<pre class=\"lang:java decode:true\">package hsm;\r\n\r\nimport mypackage.IrBufferv2;\r\nimport mypackage.MotorData;\r\n\r\npublic class myHsmForLego extends Hsm{\r\n\tprivate MotorData mMotorData;\r\n\t\r\n\tRunnable myIrRun;\r\n\tRunnable myMotorRun;\r\n\tRunnable myProcessRun;\r\n\r\n\t\r\n\r\n\r\n\tpublic myHsmForLego(MotorData motor,Runnable irTh, Runnable motorTh, Runnable ProcessTh){\r\n\t\tthis.mMotorData = motor;\r\n\t\t\r\n\t\t\/\/thread\ub97c \uc804\ub2ec\ud558\uae30 \uc704\ud55c \ubd80\ubd84\r\n\t\tthis.myIrRun = irTh; \r\n\t\tthis.myMotorRun = motorTh;\r\n\t\tthis.myProcessRun = ProcessTh;\r\n\r\n\t}\r\n\t\r\n\t@Override\r\n\tpublic void init() {\r\n\t\t\/\/ TODO Auto-generated method stub\r\n\t\tSystem.out.print(\"Top-INIT;\" );\r\n\t    \r\n\t    \/\/\ucd08\uae30\ud654\uc2dc \ubaa8\ud130 \ubaa9\ud45c\ub97c 0\uc73c\ub85c \uc124\uc815\r\n\t\tsuper.init();\r\n\t}\r\n\r\n\t@Override\r\n\tpublic State fireInit() {\r\n\t\t\/\/ TODO Auto-generated method stub\r\n\t    System.out.print(\"INIT&gt;&gt;s;\" );\r\n\t\treturn s0;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic void enter() {\r\n\t\t\/\/ TODO Auto-generated method stub\r\n\t    System.out.print(\"ENTRY&gt;&gt;s;\" );\r\n\r\n\t}\r\n\t\r\n\t@Override\r\n\tpublic State fireEvent(Event e) {\r\n\t\t\/\/ TODO Auto-generated method stub\r\n\t\treturn getParent();\r\n\t}\/\/fireEvent\r\n\r\n\t@Override\r\n\tpublic void exit() {\r\n\t\t\/\/ TODO Auto-generated method stub\r\n\t    System.out.print(\"EXIT&lt;&lt;s;\" );\r\n\t    System.out.print(\"\\n\");\r\n\r\n\r\n\t}\r\n\t\r\n\tHsm s = this;                 \/\/ This is just alias of current instance\r\n\r\n\t\r\n\t\r\n\tState s0 = new State(s){\r\n\t\t@Override\r\n\t\tpublic State fireEvent(Event e) {\r\n\t\t\t\/\/ TODO Auto-generated method stub\r\n\t\t\tswitch(e.getID())\r\n\t\t\t{\r\n\t\t\t\tcase EnterPressed :\r\n\t\t\t\t\ttransition(s1);\r\n\t\t\t\t\treturn null;\r\n\r\n\t\t\t\tdefault :\r\n\t\t\t\t\t  break;\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\treturn getParent();\r\n\t\t}\/\/fireEvent\r\n\t\t\r\n\t\t@Override\r\n\t\tpublic State fireInit() {\r\n\t\t\t\/\/ TODO Auto-generated method stub\r\n\t\t    System.out.print(\"INIT&gt;&gt;s0;\" );\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic void enter() {\r\n\t\t\t\/\/ TODO Auto-generated method stub\r\n\t\t    System.out.print(\"ENTRY&gt;&gt;s0;\" );\r\n\t\t\t\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic void exit() {\r\n\t\t\t\/\/ TODO Auto-generated method stub\r\n\t\t    System.out.print(\"EXIT&lt;&lt;s0;\" );\r\n\t\t    System.out.print(\"\\n\");\r\n\t\t\r\n\t\t}\r\n\t\t\r\n\t};\/\/sate s0\r\n\t\r\n\tState s1 = new State(s){\r\n\r\n\t\t@Override\r\n\t\tpublic State fireInit() {\r\n\t\t\t\/\/ TODO Auto-generated method stub\r\n\t\t    System.out.print(\"INIT&gt;&gt;s1;\" );\r\n\t\t\treturn s10;\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic void enter() {\r\n\t\t\t\/\/ TODO Auto-generated method stub\r\n\t\t    System.out.print(\"ENTRY&gt;&gt;s1;\" );\r\n\t\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic State fireEvent(Event e) {\r\n\t\t\t\/\/ TODO Auto-generated method stub\r\n\t\t\tswitch(e.getID())\r\n\t\t\t\t{\r\n\t\t\t\t\tcase DownPressed :\r\n\t\t\t\t\t\ttransition(s0);\r\n\t\t\t\t\t\treturn null;\r\n\r\n\t\t\t\t\tdefault :\r\n\t\t\t\t\t\t  break;\r\n\t\t\t\t}\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic void exit() {\r\n\t\t\t\/\/ TODO Auto-generated method stub\r\n\t\t    System.out.print(\"EXIT&lt;&lt;s1;\" );\r\n\t\t    System.out.print(\"\\n\");\r\n\t\t\t\t\r\n\t\t}\r\n\t\t\r\n\t};\/\/state s1;\r\n\t\r\n\t\r\n\r\n\tState s10 = new State(s1){\r\n\r\n\t\t@Override\r\n\t\tpublic State fireInit() {\r\n\t\t\t\/\/ TODO Auto-generated method stub\r\n\t\t    System.out.print(\"INIT&gt;&gt;s10;\" );\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic void enter() {\r\n\t\t\t\/\/ TODO Auto-generated method stub\r\n\t\t\t\/\/ IR \uc13c\uc11c\uac12\uc744 \ubc84\ud37c\uc5d0 \uc800\uc7a5..\r\n\t\t\t\/\/ \uc774\ubca4\ud2b8\ub97c \ud310\ub2e8\ud560 \uc218 \uc788\uac8c\ub428..\r\n\t\t\tmyIrRun.run();\r\n\t\t    System.out.print(\"ENTRY&gt;&gt;s10;\" );\r\n\t\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic State fireEvent(Event e) {\r\n\t\t\r\n\t\t\t\/\/ TODO Auto-generated method stub\r\n\t\t\tswitch(e.getID())\r\n\t\t\t{\r\n\t\t\tcase GapIsWide :\r\n\t\t\t\t\/\/\ubaa8\ud130 \uc774\ub3d9\ubd80\ubd84 \ucd94\uac00.\r\n\t\t\t\t\/\/ \uc544\ub798 process run\uc740 \uc0ad\uc81c\ud544\uc694..\r\n\t\t\t\t\/\/ thread\ub97c \uc778\uc218\ub85c \uc904\uc218 \uc5c6\uc74c..\r\n\t\t\t\t\/\/myProcessRun.run();\r\n\t\t\t\tmMotorData.storeTargetDistance(10, 10);\r\n\t\t\t\tmyMotorRun.run();\r\n\t\t\t\t\r\n\t\t\t\t\/\/seft transition\r\n\t\t\t\ttransition(s10);\r\n\t\t\t\treturn null;\r\n\r\n\t\t\tcase GapIsNarrow :\r\n\t\t\t\tmMotorData.storeTargetDistance(-50, -50);\r\n\t\t\t\tmyMotorRun.run();\r\n\r\n\t\t\t\ttransition(s12);\r\n\t\t\t\treturn null;\r\n\r\n\t\t\tdefault :\r\n\t\t\t\tbreak;\r\n\t\t\t\r\n\t\t\t}\r\n\t\t\treturn getParent();\r\n\t\t}\/\/fireEvent\r\n\r\n\t\t\r\n\t\t@Override\r\n\t\tpublic void exit() {\r\n\t\t\t\/\/ TODO Auto-generated method stub\r\n\t\t    System.out.print(\"EXIT&lt;&lt;s10;\" );\r\n\t\t\tSystem.out.print(\"\\n\");\r\n\r\n\t\t}\r\n\t\t\t\r\n\t};\/\/state s10\r\n\r\n\t\r\n\t\/* \uc544\ub798 \ubd80\ubd84\uc740 \uc0ad\uc81c..2016.09.08\r\n\tState s11 = new State(s1){\r\n\r\n\t\t@Override\r\n\t\tpublic State fireInit() {\r\n\t\t\t\/\/ TODO Auto-generated method stub\r\n\t\t    System.out.print(\"INIT&gt;&gt;s11;\" );\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic void enter() {\r\n\t\t\t\/\/ TODO Auto-generated method stub\r\n\t\t    System.out.print(\"ENTRY&gt;&gt;s11;\" );\r\n\t\t\t\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic State fireEvent(Event e) {\r\n\t\t\t\/\/ TODO Auto-generated method stub\r\n\t\t\tswitch(e.getID())\r\n\t\t\t{\r\n\t\t\tcase GapIsWide:\r\n\t\t\t\t\/\/seft transition\r\n\t\t\t\t\/\/\ubaa8\ud130 \uc774\ub3d9\ubd80\ubd84 \ucd94\uac00.\r\n\t\t\t\tmyIrRun.run();\r\n\t\t\t\tmyProcessRun.run();\r\n\t\t\t\tmyMotorRun.run();\r\n\t\t\t\ttransition(s11);\r\n\t\t\t\t\/\/\ubaa8\ud130 \uc774\ub3d9\ubd80\ubd84 \ucd94\uac00.\r\n\t\t\t\treturn null;\r\n\r\n\t\t\tcase GapIsNarrow:\r\n\t\t\t\t\/\/\ubaa8\ud130 \uc774\ub3d9\ubd80\ubd84 \ucd94\uac00.\r\n\t\t\t\tmMotorData.storeTargetDistance(-10, -10);\r\n\t\t\t\tmyMotorRun.run();\r\n\r\n\t\t\t\ttransition(s12);\r\n\t\t\t\treturn null;\r\n\r\n\t\t\tdefault :\r\n\t\t\t\tbreak;\r\n\t\t\t\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\treturn getParent();\r\n\t\t}\/\/fireEvent\r\n\r\n\t\t@Override\r\n\t\tpublic void exit() {\r\n\t\t\t\/\/ TODO Auto-generated method stub\r\n\t\t\tSystem.out.print(\"EXIT&lt;&lt;s11;\" );\r\n\t\t\tSystem.out.print(\"\\n\");\r\n\t\t}\r\n\t\t\t\r\n\t};\/\/State s11\r\n\t*\/\r\n\t\r\n\tState s12 = new State(s1){\r\n\r\n\t\t@Override\r\n\t\tpublic State fireInit() {\r\n\t\t\t\/\/ TODO Auto-generated method stub\r\n\t\t    System.out.print(\"INIT&gt;&gt;s12;\" );\r\n\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic void enter() {\r\n\t\t\t\/\/ TODO Auto-generated method stub\r\n\t\t    System.out.print(\"ENTRY&gt;&gt;s12;\" );\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic State fireEvent(Event e) {\r\n\t\t\t\/\/ TODO Auto-generated method stub\r\n\t\t\t\/\/\ubaa8\ud130 \uc774\ub3d9\ubd80\ubd84 \ucd94\uac00.\r\n\t\t\tmMotorData.storeTargetDistance(50, -50);\r\n\t\t\tmyMotorRun.run();\r\n\r\n\t\t\ttransition(s13);\r\n\t\t\treturn getParent();\r\n\r\n\t\t}\/\/fireEvent\r\n\r\n\t\t@Override\r\n\t\tpublic void exit() {\r\n\t\t\t\/\/ TODO Auto-generated method stub\r\n\t\t\tSystem.out.print(\"EXIT&lt;&lt;s12;\" );\r\n\t\t\tSystem.out.print(\"\\n\");\r\n\r\n\t\t}\r\n\t\t\r\n\t\t\r\n\t};\/\/State s12\r\n\r\n\tState s13 = new State(s1){\r\n\r\n\t\t@Override\r\n\t\tpublic State fireInit() {\r\n\t\t\t\/\/ TODO Auto-generated method stub\r\n\t\t\tSystem.out.print(\"INIT&gt;&gt;s13;\" );\r\n\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic void enter() {\r\n\t\t\t\/\/ TODO Auto-generated method stub\r\n\t\t\t\/\/ \ucda9\ubd84\ud558\uac8c \ub3cc\uc558\ub294\uc9c0 \ud655\uc778.\r\n\t\t\tmyIrRun.run();\r\n\t\t\tSystem.out.print(\"ENTRY&gt;&gt;s13;\" );\r\n\r\n\t\t\t\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic State fireEvent(Event e) {\r\n\t\t\t\/\/ TODO Auto-generated method stub\r\n\t\t\tswitch(e.getID())\r\n\t\t\t\t{\r\n\t\t\t\t\tcase GapIsWide :\r\n\t\t\t\t\t\t\/\/\ubaa8\ud130 \uc774\ub3d9\ubd80\ubd84 \ucd94\uac00.\r\n\t\t\t\t\t\t\/\/ \uc544\ub798 process run\uc740 \uc0ad\uc81c\ud544\uc694..\r\n\t\t\t\t\t\t\/\/ thread\ub97c \uc778\uc218\ub85c \uc904\uc218 \uc5c6\uc74c..\r\n\t\t\t\t\t\t\/\/myProcessRun.run();\r\n\t\t\t\t\t\ttransition(s10);\r\n\t\t\t\t\t\treturn null;\r\n\r\n\t\t\t\t\tcase GapIsNarrow :\r\n\t\t\t\t\t\t\/\/\ucda9\ubd84\ud558\uac8c \ub3cc\uc9c0 \ubabb\ud574\ub354 \ub354 \ub3cc\uc544\uc57c \ub41c\ub2e8\uace0 \ud310\ub2e8.\r\n\t\t\t\t\t\tmMotorData.storeTargetDistance(50, -50);\r\n\t\t\t\t\t\tmyMotorRun.run();\r\n\t\t\t\t\t\ttransition(s10);\r\n\t\t\t\t\t\treturn null;\r\n\r\n\t\t\t\t\tdefault :\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t}\r\n\t\t\treturn getParent();\r\n\t\t}\/\/fireEvent\r\n\r\n\t\t@Override\r\n\t\tpublic void exit() {\r\n\t\t\t\/\/ TODO Auto-generated method stub\r\n\t\t\tSystem.out.print(\"EXIT&lt;&lt;s13;\" );\r\n\t\t\tSystem.out.print(\"\\n\");\r\n\r\n\t\t\t\r\n\t\t}\r\n\r\n\t\t\r\n\t};\/\/State 13\r\n\r\n\r\n\t\t\r\n}\/\/myHsmForLego\r\n<\/pre>\n<p>\ub2e4\uc74c\uc5d0\ub294 iR\uc13c\uc11c\uc5d0 \ubaa8\ud130\ub97c \ub2ec\uc544\uc11c \ud55c\ubc14\ud034 \ub3cc\ub824\ubcf4\uace0 \uba87\ub3c4\ub85c \uc6c0\uc9c1\uc5ec\uc57c \ud310\ub2e8\uae4c\uc9c0 \ud558\uace0 \uc2f6\uc73c\ub098, \uac08\uae38\uc774 \uba40\uc5b4 \ubcf4\uc778\ub2e4. \uc77c\ub2e8 \uc774\uac78 \ub2e4 \ub72f\uc744 \uc0dd\uac01\uc744 \ud558\ub2c8 \uba38\ub9ac\uac00 \uc544\ud504\ub2e4..\ud55c\ubc88 \ub72f\uc73c\uba74 \ub2e4\uc2dc \uc870\ub9bd \ubabb\ud560 \uac83 \uac19\ub2e4..<br \/>\n<img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/now0930.iptime.org\/wordpress\/wp-content\/uploads\/2016\/09\/20160908_232920-1024x576.jpg\" alt=\"20160908_232920\" width=\"474\" height=\"267\" class=\"alignleft size-large wp-image-827\" srcset=\"https:\/\/now0930.pe.kr\/wordpress\/wp-content\/uploads\/2016\/09\/20160908_232920-1024x576.jpg 1024w, https:\/\/now0930.pe.kr\/wordpress\/wp-content\/uploads\/2016\/09\/20160908_232920-300x169.jpg 300w, https:\/\/now0930.pe.kr\/wordpress\/wp-content\/uploads\/2016\/09\/20160908_232920-768x432.jpg 768w\" sizes=\"auto, (max-width: 474px) 100vw, 474px\" \/><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\uae30\uc5b5\ud558\uae30 \uc704\ud574\uc11c \uae30\ub85d\ud574 \ub193\uc74c.. \ucc98\uc74c \ub2e4\uc774\uc5b4\uadf8\ub7a8\uc778\ub370..\uc218\uc815. \uc218\uc815 \ub2e4\uc774\uc5b4\uadf8\ub7a8\uc740 \uc544\ub798\uc640 \uac19\ub2e4. \uae30\uc874 \ub300\ube44 S11\uc744 \uc9c0\uc6cc \ubc84\ub838\ub2e4. S10\uc5d0\uc11c S11\ub85c transiton\uc774 \ubc1c\uc0dd\ud560 \ub54c, [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":826,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[48,12],"tags":[82,83,81],"class_list":["post-813","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-lego","category-12","tag-ev3","tag-fsm","tag-lego"],"jetpack_featured_media_url":"https:\/\/now0930.pe.kr\/wordpress\/wp-content\/uploads\/2016\/09\/20160908_232950.jpg","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/now0930.pe.kr\/wordpress\/wp-json\/wp\/v2\/posts\/813","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/now0930.pe.kr\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/now0930.pe.kr\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/now0930.pe.kr\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/now0930.pe.kr\/wordpress\/wp-json\/wp\/v2\/comments?post=813"}],"version-history":[{"count":7,"href":"https:\/\/now0930.pe.kr\/wordpress\/wp-json\/wp\/v2\/posts\/813\/revisions"}],"predecessor-version":[{"id":828,"href":"https:\/\/now0930.pe.kr\/wordpress\/wp-json\/wp\/v2\/posts\/813\/revisions\/828"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/now0930.pe.kr\/wordpress\/wp-json\/wp\/v2\/media\/826"}],"wp:attachment":[{"href":"https:\/\/now0930.pe.kr\/wordpress\/wp-json\/wp\/v2\/media?parent=813"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/now0930.pe.kr\/wordpress\/wp-json\/wp\/v2\/categories?post=813"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/now0930.pe.kr\/wordpress\/wp-json\/wp\/v2\/tags?post=813"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}