====== 자기유지 ======
자기 유지란 레더로직(또는 시퀀스 회로)를 공부할때, 가장 먼저 배우는 회로입니다.
{{ :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]]