====== 자기유지 ====== 자기 유지란 레더로직(또는 시퀀스 회로)를 공부할때, 가장 먼저 배우는 회로입니다. {{ :faduino:modularfaduino:examplecode3:motorstartstop.png?nolink |}} START 스위치를 누르면 모터가 돌아가고, STOP스위치를 누르면 모터가 정지하는 상황입니다. 이를 위한 레더 프로그램은 다음과 같습니다. {{ :faduino:modularfaduino:examplecode3:ldself.png?nolink |}} X00, X01은 PUSH 스위치를 연결하세요. Y00에는 모터를 연결하세요. 동작 타이밍 차트입니다. {{ :faduino:modularfaduino:examplecode3:an34005t.png?nolink |}} X00 푸쉬스위치를 누르면 Y00에 연결된 모터가 ON됩니다. 그리고 이 상태는 유지됩니다. 그래서 "자기유지"라고 부릅니다. 멈추려면 X01 푸쉬스위치를 누르세요. C언어로 코딩하면 다음과 같습니다. #include "cfManagedBase.h" void user_setup() { } void loop() { } void logic_proc() { Y00 = (X00 | Y00) & !X01; } 접점상태를 시리얼 모니터에서 함께 보려면 이렇게 코딩하세요. #include "cfManagedBase.h" void user_setup() { Serial.begin(115200); } void loop() { debug ("X00",X00); debug ("X01",X01); debug ("Y00",Y00); debugcr; delay(100); } void logic_proc() { Y00 = (X00 | Y00) & !X01; } ====== 점멸 (1초마다 On/Off 반복) ====== 1초마다 On / Off 반복하는 프로그램입니다. 앞서 언급했다시피 logic_proc 는 매 20mS마다 실행됩니다. 50번 반복하면 1초가 됩니다. 전역변수 time_var를 하나 선언하고, logic_proc가 매번 실행될 때마다 1씩 증가한뒤, 이 변수가 50이 되었는지 체크해서 출력 Y00를 반전시켜주는 프로그램입니다. #include "cfManagedBase.h" int time_var=0; void user_setup() { } void loop() { } void logic_proc() { time_var++; // increse every 20mS if (time_var == 50) { Y00 = !Y00; time_var = 0; } } 만약 1초마다 한번씩 실행시키고 싶은 로직처리가 있다면 이렇게 코딩하세요. #include "cfManagedBase.h" int time_var=0; void user_setup() { } void loop() { } void onesec_proc() { // logic process every 1 sec. } void logic_proc() { time_var++; // increse every 20mS if (time_var == 50) { time_var = 0; onesec_proc(); } } [[..:index|Modular FADUINO]]