BASIC4MCU | 질문게시판 | 답변 : 8체널 릴레이 delay 타임에 대한 질문입니다
페이지 정보
작성자 master 작성일2025-06-06 21:25 조회358회 댓글4건본문
const int relay1=2,relay2=3,relay3=4,relay4=5,relay5=6,relay6=7;
const int button1=8,button2=9,button3=10,button4=11,button5=12,button6=13;
//
unsigned long t,t1,t2,t3,t4,t5,t6;
//
void setup(){
pinMode(relay1,OUTPUT); pinMode(relay2,OUTPUT); pinMode(relay3,OUTPUT);
pinMode(relay4,OUTPUT); pinMode(relay5,OUTPUT); pinMode(relay6,OUTPUT);
pinMode(button1,INPUT_PULLUP); pinMode(button2,INPUT_PULLUP); pinMode(button3,INPUT_PULLUP);
pinMode(button4,INPUT_PULLUP); pinMode(button5,INPUT_PULLUP); pinMode(button6,INPUT_PULLUP);
}
//
void loop(){
t=millis();
//
if(t-t1>=4000)digitalWrite(relay1,0); else{ if(digitalRead(button1)){ digitalWrite(relay1,1); t1=t; } }
if(t-t2>=4000)digitalWrite(relay2,0); else{ if(digitalRead(button2)){ digitalWrite(relay2,1); t2=t; } }
if(t-t3>=4000)digitalWrite(relay3,0); else{ if(digitalRead(button3)){ digitalWrite(relay3,1); t3=t; } }
if(t-t4>=4000)digitalWrite(relay4,0); else{ if(digitalRead(button4)){ digitalWrite(relay4,1); t4=t; } }
if(t-t5>=4000)digitalWrite(relay5,0); else{ if(digitalRead(button5)){ digitalWrite(relay5,1); t5=t; } }
if(t-t6>=4000)digitalWrite(relay6,0); else{ if(digitalRead(button6)){ digitalWrite(relay6,1); t6=t; } }
}
댓글 4
조회수 358왕왕초a님의 댓글
왕왕초a 작성일
귀중한 답변 감사드립니다
스타트를 해보니 딜레이 타임은 규칙적으로 잘돌아갑니다
헌데 보턴스위치가 ON상태에서는 잘되니는데 보튼스위치가 OFF된상테에서는 릴레이가 꺼지질않네요
릴레이가 계속작동합니다
보턴스위치가 OFF된상테에서는 꺼져야하는데요
다시 부탁드립니다
master님의 댓글
master
모든 가능한 경우의 수를 작성하셔야지 정확한 코딩이 가능합니다.
4초 딜레이는 채터링 스파크를 제거하기 위함이죠?
0.5초 채터링 딜레이를 넣어서 작성해드리죠
master님의 댓글
master
릴레이 접점 변경시간은 수ms이상 걸립니다.
스위치 채터링 시간은 텍트스위치는 50ms 이상보면 되지만
구형 스위치는 이보다 더 긴 최대 200ms 이상 봐야 하며
접점에 녹이 쓸거나 하면 더 길어질 수도 있습니다.
500ms면 충분하다고 생각되지만
느려서 답답하다고 생각되면 문제되지 않는 범위에서 시간을 줄여보세요
왕왕초a님의 댓글
왕왕초a 작성일
확인이 늦어서 죄송합니다
잘 돌아가구요
잘 활용 하겟습니다
정말 감사합니다