Initial project import
This commit is contained in:
@@ -0,0 +1,116 @@
|
|||||||
|
#include <avr/wdt.h>
|
||||||
|
|
||||||
|
#define hddledsensor 4 // HDD 상태 체크 (보라)
|
||||||
|
#define psensor 5 // 전원 상태 체크 (검정)
|
||||||
|
#define pled 6 // 전원 상태 led (green) (초록)
|
||||||
|
#define msw 7 // 다기능 버튼 감지 (노랑)
|
||||||
|
#define psw 8 // 전원 버튼 감지 (흰색)
|
||||||
|
#define powersupplyrelay 9 // 파워서플라이 온 릴레이 (검정(흰색 쌍))
|
||||||
|
#define statusled 10 // 입력 상태 led (red) (초록)
|
||||||
|
#define fanrelay 11 // 케이스 팬 릴레이 (보라(초록 쌍))
|
||||||
|
#define powerinput 12 // 전원 쇼트 릴레이 (회색)
|
||||||
|
|
||||||
|
int buttonflag, buttonflag_old, shutdownflag, powerflag;
|
||||||
|
boolean coolingflag, backlightflag, serialflag = 0;
|
||||||
|
|
||||||
|
void setup() {
|
||||||
|
Serial.begin(9600);
|
||||||
|
pinMode(LED_BUILTIN, OUTPUT);
|
||||||
|
digitalWrite(LED_BUILTIN, 0);
|
||||||
|
pinMode(psensor, INPUT_PULLUP);
|
||||||
|
pinMode(hddledsensor, INPUT_PULLUP);
|
||||||
|
pinMode(powerinput, OUTPUT);
|
||||||
|
pinMode(powersupplyrelay, OUTPUT);
|
||||||
|
pinMode(psw, OUTPUT);
|
||||||
|
pinMode(msw, OUTPUT);
|
||||||
|
pinMode(pled, OUTPUT);
|
||||||
|
pinMode(statusled, OUTPUT);
|
||||||
|
pinMode(fanrelay, OUTPUT);
|
||||||
|
wdt_enable(WDTO_8S);
|
||||||
|
}
|
||||||
|
|
||||||
|
void loop() {
|
||||||
|
wdt_reset();
|
||||||
|
button();
|
||||||
|
powercontrol();
|
||||||
|
}
|
||||||
|
|
||||||
|
void powercontrol() {
|
||||||
|
if (powerflag == 0) { // 전원 켜짐 플래그가 0 일때
|
||||||
|
if (buttonflag >= 1) { // 버튼 플래그가 1 이상 때
|
||||||
|
buttonflag = 0;
|
||||||
|
powerflag = 1;
|
||||||
|
poweron();
|
||||||
|
}
|
||||||
|
} else if (powerflag == 1) {
|
||||||
|
if (buttonflag >= 1 && buttonflag <= 2) { // 오작동 값 청소
|
||||||
|
buttonflag = 0;
|
||||||
|
} else if (buttonflag >= 3 && buttonflag <= 5) { // 문제 있는 부팅
|
||||||
|
buttonflag = 0;
|
||||||
|
powerrestart();
|
||||||
|
} else if (buttonflag >= 6 && buttonflag <= 10) { // 강제종료
|
||||||
|
buttonflag = 0;
|
||||||
|
powerflag = 0;
|
||||||
|
focus_poweroff();
|
||||||
|
} else if (buttonflag >= 11) { // 오작동 값 청소
|
||||||
|
buttonflag = 0;
|
||||||
|
}
|
||||||
|
if (digitalRead(psensor) == 0) { // 시스템이 종료 상태로 감지 되었을때
|
||||||
|
shutdownflag = 0;
|
||||||
|
powerflag = 0;
|
||||||
|
poweroff();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void button() {
|
||||||
|
while (digitalRead(msw) == 0 && digitalRead(psw) == 1) { // 전원 버튼 감지 시
|
||||||
|
buttonflag++;
|
||||||
|
delay(200);
|
||||||
|
if (buttonflag != buttonflag_old) {
|
||||||
|
buttonflag_old = buttonflag;
|
||||||
|
digitalWrite(statusled, 1);
|
||||||
|
delay(50);
|
||||||
|
digitalWrite(statusled, 0);
|
||||||
|
delay(750);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void poweron() {
|
||||||
|
digitalWrite(powersupplyrelay, 1);
|
||||||
|
while (digitalRead(psensor) == 0) {
|
||||||
|
digitalWrite(powerinput, 1);
|
||||||
|
delay(100);
|
||||||
|
digitalWrite(powerinput, 0);
|
||||||
|
delay(400);
|
||||||
|
}
|
||||||
|
digitalWrite(powerinput, 0);
|
||||||
|
digitalWrite(fanrelay, 1);
|
||||||
|
digitalWrite(pled, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
void poweroff() {
|
||||||
|
digitalWrite(powersupplyrelay, 0);
|
||||||
|
digitalWrite(fanrelay, 0);
|
||||||
|
digitalWrite(pled, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
void focus_poweroff() {
|
||||||
|
while (digitalRead(psensor) == 0) {
|
||||||
|
digitalWrite(powerinput, 1);
|
||||||
|
delay(300);
|
||||||
|
digitalWrite(powerinput, 0);
|
||||||
|
delay(700);
|
||||||
|
}
|
||||||
|
digitalWrite(powerinput, 0);
|
||||||
|
digitalWrite(powersupplyrelay, 0);
|
||||||
|
digitalWrite(fanrelay, 0);
|
||||||
|
digitalWrite(pled, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
void powerrestart() {
|
||||||
|
focus_poweroff();
|
||||||
|
delay(500);
|
||||||
|
poweron();
|
||||||
|
}
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
# Project_E_MS-7C51
|
||||||
|
|
||||||
|
## Overview
|
||||||
|
|
||||||
|
- Type: Arduino project
|
||||||
|
- Source directory: `Project_E_MS-7C51`
|
||||||
|
- Files: 1
|
||||||
|
- Related classification: standalone project folder; no exact duplicate top-level project was found.
|
||||||
|
|
||||||
|
## Arduino Sketches
|
||||||
|
|
||||||
|
- `Project_E_MS-7C51.ino`
|
||||||
|
|
||||||
|
## Root Files
|
||||||
|
|
||||||
|
- `Project_E_MS-7C51.ino`
|
||||||
|
|
||||||
|
## Notes
|
||||||
|
|
||||||
|
- This repository is intended to be stored as a private project repository on `git.chaegeon.com`.
|
||||||
|
- Sensitive configuration may exist in source files and is kept private by repository visibility.
|
||||||
|
- Exact duplicate top-level project folders were checked before repository preparation.
|
||||||
Reference in New Issue
Block a user