반응형

안녕하세요!
녹칸다입니다!

녹칸다의 산업용 아두이노(fa-duino)의 빠른 내용 전달을 위해서 코드와 작동결과만을 별도로 정리해보도록 하겠습니다~!
녹칸다의 산업용 아두이노 2편에서 13번예제를 정리해보도록 하겠습니다~!

 

이번 예제는 아래와 같은 목표가 있습니다~!

1.산업용 아두이노(faduino)의 출력핀에 아래와 같이 파일럿램프가 연결되어있음!
2.적색(38),황색(39), 녹색(40)
3.적색버튼이 인터럽트핀(2), 녹색버튼이 인터럽트핀(3)에 연결되었다!
4.3단 셀렉터의 NO가 37번, NC가 36번에 연결되었다!
5.녹색버튼을 누르면 기계가 작동한다!
6.적색버튼을 누르면 기계가 멈춘다!
7.셀렉터를 이용해서 3가지 종류의 빵을 구을 수 있다!(붕어, 잉어, 미니붕어빵)
8.만약 붕어빵을 생산중이라면 38번램프를 켜고, 잉어빵이면 39번을 켜고, 미니붕어빵이면 40번램프를 켜시오!

 

예제에 사용한 소소코드는 아래와 같습니다~~!

//적(38),황(39), 녹(40)
//적색버튼이 인터럽트핀(2), 녹색버튼이 인터럽트핀(3)에 연결되었다!
//3단 셀렉터의 NO가 37번, NC가 36번에 연결되었다!
//녹색버튼을 누르면 기계가 작동한다!
//적색버튼을 누르면 기계가 멈춘다!
//셀렉터를 이용해서 3가지 종류의 빵을 구을 수 있다!(붕어, 잉어, 미니붕어빵)
//만약 붕어빵을 생산중이라면 38번램프를 켜고, 잉어빵이면 39번을 켜고, 미니붕어빵이면 40번램프를 켜시오!

volatile bool is_run = false; //true면 기계 작동, false면 기계멈춤!

void setup() {
  Serial.begin(9600);
  pinMode(38,OUTPUT);                          
  pinMode(39,OUTPUT);
  pinMode(40,OUTPUT);
  pinMode(37,INPUT);
  pinMode(36,INPUT);
  pinMode(2,INPUT);
  pinMode(3,INPUT);
  attachInterrupt(digitalPinToInterrupt(2), Interrup1, RISING);
  attachInterrupt(digitalPinToInterrupt(3), Interrup2, RISING);
}

void loop() {
  if(is_run == true){
    bool selector_no = digitalRead(37);
    bool selector_nc = digitalRead(36);
    
    if(selector_no == LOW && selector_nc == HIGH){
      //붕어빵
      digitalWrite(38,HIGH);
      digitalWrite(39,LOW);
      digitalWrite(40,LOW);
      Serial.println("붕어빵틀에 뚜껑을 연다");
      delay(1000);
      if(is_run == false) return;
      Serial.println("붕아빵판죽을 빵틀에 붓는다");
      delay(1000);
      if(is_run == false) return;
      Serial.println("돌려가면서 붕어빵을 굽는다");
      delay(1000);
      if(is_run == false) return;
      Serial.println("붕어빵을 빵틀에서 꺼낸다");
      delay(1000);
      if(is_run == false) return;
      Serial.println("봉지에 담아서 배출한다");
      delay(1000);
    }else if(selector_no == HIGH && selector_nc == LOW){
      //미니붕어빵
      digitalWrite(38,LOW);
      digitalWrite(39,LOW);
      digitalWrite(40,HIGH);
      Serial.println("미니붕어빵틀에 뚜껑을 연다");
      delay(1000);
      if(is_run == false) return;
      Serial.println("미니붕아빵판죽을 빵틀에 붓는다");
      delay(1000);
      if(is_run == false) return;
      Serial.println("돌려가면서 미니붕어빵을 굽는다");
      delay(1000);
      if(is_run == false) return;
      Serial.println("미니붕어빵을 빵틀에서 꺼낸다");
      delay(1000);
      if(is_run == false) return;
      Serial.println("봉지에 담아서 배출한다");
      delay(1000);
    }else{
      //잉어빵
      digitalWrite(38,LOW);
      digitalWrite(39,HIGH);
      digitalWrite(40,LOW);
      Serial.println("잉어빵틀에 뚜껑을 연다");
      delay(1000);
      if(is_run == false) return;
      Serial.println("잉어빵판죽을 빵틀에 붓는다");
      delay(1000);
      if(is_run == false) return;
      Serial.println("돌려가면서 잉어빵을 굽는다");
      delay(1000);
      if(is_run == false) return;
      Serial.println("잉어빵을 빵틀에서 꺼낸다");
      delay(1000);
      if(is_run == false) return;
      Serial.println("봉지에 담아서 배출한다");
      delay(1000);
    }
  }
}
//적색버튼
void Interrup1(){
  digitalWrite(38,LOW);
  digitalWrite(39,LOW);
  digitalWrite(40,LOW);
  is_run = false;
}
void Interrup2(){
  is_run = true;
}

예제의 작동결과는 녹칸다의 라이브방송중 해당예제가 나온느 부분의 링크를 걸도록 하겠습니다~~!

https://youtu.be/Y68Il4TQfAw?t=9890 

 

반응형
Posted by 덕력킹
,