본문 바로가기
인공지능 기초

아두이노 컨베이너벨트 코드

by SwMaker_Jun 2024. 10. 25.
728x90
반응형
#include <Servo.h>

Servo servo1;
Servo servo2;
Servo servo3;
Servo servo4;

byte state = 0;
byte prestate = 0;
byte once = 0;

const int sw1 = 2;
const int en = 7;       // 스테퍼모터 온/오프 핀. HIGI일 때 작동
const int val = A5;     //가변 저항 값
const int c_out = A4;
const int c_s3 = A3;
const int c_s2 = A2;
const int c_s1 = A1;
const int c_s0 = A0;

int sww = 1;
int sww2 = 1;
int vall = 0;

void Change(){
  if(state==0){
    State1();
  }else{
    State0();
  }
}
void State0() {
  delay(200);
  digitalWrite(en, LOW);
  Serial.print("STOP");
  once = 0;
  state = 0;
}

void State1() {
  delay(200);
  digitalWrite(en, HIGH);
  Serial.print("START");
  state = 1;
}

void setup() {
  // put your setup code here, to run once:

  Serial.begin(9600);
  pinMode(en, OUTPUT);
  digitalWrite(en, LOW);

  pinMode(sw1, INPUT);
//  pinMode(sw2, INPUT);
  attachInterrupt(digitalPinToInterrupt(sw1), Change, FALLING);

  // pinMode(to_sub, OUTPUT);
  // digitalWrite(to_sub, LOW);

  // pinMode(r, OUTPUT);
  // digitalWrite(r, LOW);
  // pinMode(g, OUTPUT);
  // digitalWrite(g, LOW);
  // pinMode(b, OUTPUT);
  // digitalWrite(b, LOW);

  // pinMode(ts, INPUT);

  servo1.attach(9);
  servo2.attach(10);
  servo3.attach(11);
  servo4.attach(12);
  servo1.write(90);
  servo2.write(90);
  servo3.write(90);
  servo4.write(90);

  pinMode(val, INPUT);
  pinMode(c_out, INPUT);
  pinMode(c_s3, INPUT);
  pinMode(c_s2, INPUT);
  pinMode(c_s1, INPUT);
  pinMode(c_s0, INPUT);
  Serial.println("Device's ready");
  delay(1000);
}

void loop() {

  once = 0;
  while (state == 0) {
    if (once == 0) {
      servo1.write(90);
      delay(15);
      servo2.write(90);
      delay(15);
      servo3.write(90);
      delay(15);
      servo4.write(90);
      delay(15);
      once = 1;
    }
    // Serial.println(digitalRead(ts));
    Serial.println(analogRead(val));
  }
   while (state == 1) {
    while (Serial.available() > 0) {
    char data = Serial.read();
    if (data == '1') {
      servo1.write(30);
      delay(1000);
      servo1.write(90);
      delay(2000);
      if(state==0){
       break;
    }
    }
    else if (data == '2') {
      servo2.write(150);
      delay(1000);
      servo2.write(90);
      delay(2000);
      if(state==0){
       break;
    }
    }
    else if (data == '3') {
      servo3.write(30);
      delay(1000);
      servo3.write(90);
      delay(2000);
    if(state==0){
      break;
    }
  }
  else if (data == '4') {
      servo4.write(150);
    delay(1000);
    servo4.write(90);
    delay(2000);
    if(state==0){
      break;
    }
  }
  }
  }
}
728x90
반응형