[faduino2-9] 산업용 아두이노로 초보용 신호등 예제를 구동하고 인터럽트를 수동모드와 자동모드로 전환하는 예제 만들어보기!(녹칸다의 산업용 아두이노)
프로그래밍/산업용아두이노(fa-duino) 2023. 6. 17. 22:25반응형
안녕하세요!
녹칸다입니다!
녹칸다의 산업용 아두이노(fa-duino)의 빠른 내용 전달을 위해서 코드와 작동결과만을 별도로 정리해보도록 하겠습니다~!
녹칸다의 산업용 아두이노 2편에서 9번예제를 정리해보도록 하겠습니다~!
이번 예제는 아래와 같은 목표가 있습니다~~!
1.파일럿램프 연결 : 적(38),황(39), 녹(40)
2.적색 누름 버튼이 2번, 녹색 누름 버튼이 3번에 연결되어있다(입력)
3.녹색버튼을 누르면 녹-황-적 순으로 신호등이 작동한다!(자동)
4.적색버튼을 누르면 녹-황-적 순으로 임의로 변경하기!(수동)
5.여기서 자동 모드란 녹색램프, 황색램프, 적색램프가 일정 간격으로 순차적으로 켜지고(신호등처럼) 수동모드란 버튼을 누를때 녹색램프, 황색램프, 적색램프가 순서대로 변환되는 것을 말함!
예제에 사용한 소스코드는 아래와 같습니다!
//적(38),황(39), 녹(40)
//적색버튼이 2번, 녹색버튼이 3번에 연결되어있다(입력)
//녹색버튼을 누르면 녹-황-적 순으로 신호등이 작동한다!(자동)
//적색버튼을 누르면 녹-황-적 순으로 임의로 변경하기!(수동)
unsigned long t = 0;
volatile bool sw = true; //false면 수동, true면 자동!
volatile int manual = 0; //0이면 off, 1이면 적, 2면 황, 3이면 녹색!
void setup() {
Serial.begin(9600);
//입력과 출력은 pinMode함수로 방향을 결정해주어야한다!
pinMode(38,OUTPUT);
pinMode(39,OUTPUT);
pinMode(40,OUTPUT);
pinMode(2,INPUT);
pinMode(3,INPUT);
attachInterrupt(digitalPinToInterrupt(2), Interrup1, RISING);
attachInterrupt(digitalPinToInterrupt(3), Interrup2, RISING);
}
void loop() {
//sw가 true일때만 붕어빵을 굽겠다!
if(sw == true){
digitalWrite(38,LOW);
digitalWrite(39,LOW);
digitalWrite(40,HIGH);
delay(1000);
if(sw == false) return;
digitalWrite(38,LOW);
digitalWrite(39,HIGH);
digitalWrite(40,LOW);
delay(1000);
if(sw == false) return;
digitalWrite(38,HIGH);
digitalWrite(39,LOW);
digitalWrite(40,LOW);
delay(1000);
}else{
if(manual == 0){
digitalWrite(38,LOW);
digitalWrite(39,LOW);
digitalWrite(40,LOW);
}else if(manual == 1){
digitalWrite(38,HIGH);
digitalWrite(39,LOW);
digitalWrite(40,LOW);
}else if(manual == 2){
digitalWrite(38,LOW);
digitalWrite(39,HIGH);
digitalWrite(40,LOW);
}else if(manual == 3){
digitalWrite(38,LOW);
digitalWrite(39,LOW);
digitalWrite(40,HIGH);
}
}
}
void Interrup1(){
//아래 코드는 다음에 해석하는걸로~
if(millis() - t > 200){
t = millis();
Serial.println("수동");
sw = false;
manual++;
if(manual > 3) manual = 0;
}
}
void Interrup2(){
Serial.println("자동");
sw = true;
}
예제의 작동결과는 녹칸다의 라이브방송에서 해당부분의 위치를 아래와 같이 링크로 남겨두도록 합니다!
https://youtu.be/Y68Il4TQfAw?t=6254
반응형