소스코드 ▼
더보기
| 마이크로 컨트롤러 - Arduino Mega128 |
| const int stepsPerRevolution = 450; const int stepsPerRevolution2 = 900; const int dirPin = 2; const int stepPin = 3; const int ENABLEB = 11; const int POT = A5; int sw1 = 4; int sw2 = 5; int sw3 = 6; #include <LiquidCrystal_I2C.h> LiquidCrystal_I2C lcd(0x27, 16, 2); int sw4 = 7; int sw = 8; int IN1 = 9; int IN2 = 10; int IN3 = 13; int IN4 = 12; int mode; int v; void setup() { pinMode(stepPin, OUTPUT); pinMode(dirPin, OUTPUT); pinMode(sw, INPUT_PULLUP); pinMode(sw1, INPUT); pinMode(sw2, INPUT); pinMode(sw3, INPUT); pinMode(sw4, INPUT); pinMode(IN1, OUTPUT); pinMode(IN2, OUTPUT); pinMode(IN3, OUTPUT); pinMode(IN4, OUTPUT); Serial.begin(9600); lcd.init(); lcd.backlight(); delay(2000);} void loop() { int pot_position = analogRead(POT); int a = analogRead(A0); int y = analogRead(A1); int sw1 = digitalRead(4); int sw2 = digitalRead(5); int sw3 = digitalRead(6); int sw4 = digitalRead(7); Serial.print("a="); Serial.print(a); Serial.print(" "); Serial.print("y="); Serial.print(y); Serial.print(" "); Serial.print("SW= "); Serial.print(z); Serial.print(" "); Serial.print(sw1); Serial.print(" "); Serial.print(sw2); Serial.print(" "); Serial.print(sw3); Serial.print(" "); Serial.println(sw4); int v = 0; int ff = 0; int rr = 0; int vv = 0; if (a > 512) v |= 1; if (a < 490) v |= 2; if (sw = 0) v |= 4; if (sw1 > 0) v |= 8; if (sw2 > 0) v |= 16; if (sw3 > 0) v |= 32; if (sw4 > 0) v |= 64; switch (v) { case 0: break; //통과 case 1: ff = 0; rr = 0; vv = 1; break; //레일 위 이동 case 2: ff = 0; rr = 1; vv = 0; break; //레알 아래 이동 case 4: ff = 1; rr = 0; vv = 0; break; // 레일 상하 운동 case 8: ff = 1; rr = 0; vv = 1; break; // PR 분사 case 16: ff = 1; rr = 1; vv = 0; break; // 회전 정지 case 32: ff = 0; rr = 1; vv = 1; break; // 회전 일반속도 case 64: ff = 1; rr = 1; vv = 1; break; // 회전 빠른속도} //레일 위 이동 if (!ff && !rr && vv) { if (mode != 1) { mode = 1; digitalWrite(dirPin, LOW); lcd.setCursor(2, 0); lcd.print("[SPIN COATER]"); lcd.setCursor(2, 1); lcd.print("GATE DOWN"); for (int x = 0; x < stepsPerRevolution; x++) { digitalWrite(stepPin, HIGH); delayMicroseconds(800); digitalWrite(stepPin, LOW); delayMicroseconds(800); } delay(100);}} //레알 아래 이동 if (!ff && rr && !vv) { if (mode != 2) { mode = 2; lcd.setCursor(2, 0); lcd.print("[SPIN COATER]"); lcd.setCursor(2, 1); lcd.print("GATE UPUP"); digitalWrite(dirPin, HIGH); for (int x = 0; x < stepsPerRevolution; x++) { digitalWrite(stepPin, HIGH); delayMicroseconds(800); digitalWrite(stepPin, LOW); delayMicroseconds(800); } delay(100);}} // 레일 상하 운동 if (ff && !rr && !vv) { if (mode != 3) { mode = 3; lcd.setCursor(2, 0); lcd.print("[SPIN COATER]"); lcd.setCursor(2, 1); lcd.print("TEMP: "); digitalWrite(dirPin, HIGH); for (int x = 0; x < stepsPerRevolution; x++) { digitalWrite(IN1, HIGH); digitalWrite(IN2, LOW); digitalWrite(IN3, HIGH); digitalWrite(IN4, LOW); } delay(100);}} // PR 분사 if (ff && !rr && vv) { if (mode != 4) { mode = 4; lcd.setCursor(2, 0); lcd.print("[SPIN COATER]"); lcd.setCursor(2, 1); lcd.print("PR INJECT"); digitalWrite(dirPin, HIGH); digitalWrite(IN1, HIGH); digitalWrite(IN2, LOW); delay(100); digitalWrite(IN1, LOW); digitalWrite(IN2, LOW); delay(1000);}} // 회전 정지 if (ff && rr && !vv) { if (mode != 5) { mode = 5; lcd.setCursor(2, 0); lcd.print("[SPIN COATER]"); lcd.setCursor(2, 1); lcd.print("SPIN STOP"); digitalWrite(dirPin, HIGH); for (int x = 0; x < stepsPerRevolution; x++) { digitalWrite(IN3, LOW); digitalWrite(IN4, LOW); } delay(1000);}} // 회전 일반속도 if (!ff && rr && vv) { if (mode != 6) { mode = 6; lcd.setCursor(2, 0); lcd.print("[SPIN COATER]"); lcd.setCursor(2, 1); lcd.print("SPIN REGU"); digitalWrite(dirPin, HIGH); digitalWrite(IN3, HIGH); digitalWrite(IN4, LOW); analogWrite(11, 60); delay(1000);}} // 회전 빠른속도 if (ff && rr && vv) { if (mode != 7) { mode = 7; lcd.setCursor(2, 0); lcd.print("[SPIN COATER]"); lcd.setCursor(2, 1); lcd.print("SPIN FAST"); digitalWrite(IN3, HIGH); digitalWrite(IN4, LOW); analogWrite(11, 80); delay(1000);}} // 그외경우의수 lcd.setCursor(2, 0); lcd.print("[SPIN COATER]"); lcd.setCursor(2, 1); lcd.print("WATING....");} |
'① 개발 작품 > 교육용 반도체 포토공정 장비' 카테고리의 다른 글
| 교육용 포토공정 장비 - ⑤ 로봇팔 (0) | 2023.02.11 |
|---|---|
| 교육용 포토공정 장비 - ④ UV EXPOSURE (0) | 2023.02.04 |
| 교육용 포토공정 장비 - ③ HARD/SOFT BAKE (0) | 2023.02.04 |
| 교육용 포토 공정 장비 - ① 작동 영상 (0) | 2023.02.04 |
댓글