commit 09e868155fa6cda9a2e6c9495889101fa78afaba Author: seo Date: Sun Jun 7 01:08:17 2026 +0900 Initial project import diff --git a/Project_E_MS-7C51.ino b/Project_E_MS-7C51.ino new file mode 100644 index 0000000..99755aa --- /dev/null +++ b/Project_E_MS-7C51.ino @@ -0,0 +1,116 @@ +#include + +#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(); +} diff --git a/README.md b/README.md new file mode 100644 index 0000000..9c68567 --- /dev/null +++ b/README.md @@ -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.