반응형

【 레오나르도활용#4어두워 지면 PC 종료 시키기! (Leonardo

 아두이노 레오나르도(Leonardo)를 이용하여 주변이 어두워지면, PC를 자동으로 종료 시켜 보도록 하자. 원리는, 레오나르도 보드는 키보드(마우스)와 같은 장치로 인식되며, <Keyboard.h> 함수를 활용하여, 키보드 키값을 PC로 입력할 수 있다.  이에 따라 '윈도우 종료 단축키를 활용하거나, shutdown.exe 명령과 조합하면 PC를 쉽게 종료시킬 수 있다.  

본 내용에서는 윈도우 운영체제를 기준으로 하지만, 내용을 잘 참고하면, 다른 OS의 PC도 종료 가능 할 것이다. 

Let's get it~!

 

▶ 선수 학습 :

    1. [아두이노 기초#3] 포토레지스터(CDS)제어 (cds 광센서 참조)  ☜ (클릭)

    2. [레오나르도 활용#1] 레오나르도 보드 사용법(보드 스팩& 설치-연결 참조)  ☜ (클릭)

    3. [레오나르도 활용#3] 어두워지면 PC화면 잠그기 (레오나르도 보드& 단축키사용 참조)  ☜ (클릭)

      

▶ 실습 목표 :  
 1. [ 레오나르도 보드에 광센서(cds)를 연결하여 제어할 수 있다. 
 2. [ 키보드 키 값 제어 함수에 대해 이해할 수 있다. ]
 3. [ 레오나르도 보드를 이용해 PC를 제어(종료)할 수 있다. ]
 

 

▶ 실습 회로도면 :
  (이미지 클릭하면 확대 가능)

 

▶ 프로그램 코드 및 설명 1 : 

/* 어두워지면 자동 PC 종료 시전하기 */

/* 어두울 때 자동 PC 종료 시키기 */    
#include <Keyboard.h>   
const int CDS = 0; //cds 센서를 A0 포트에 연결 
const int PC_Off = 10;  
void setup ( ) {  
  Keyboard.begin(); //키보드 컨트롤 관련 함수 선언   
  Serial.begin(9600);
}
void loop ( )  {
  int Brightness = analogRead(CDS);  //조도값을 읽음 
  Serial.println(Brightness); 
  // PC_Off 값 이하가 되면 종료 배치파일(단축키) 실행 
  if(Brightness < PC_Off) {  
    Keyboard.press(KEY_LEFT_CTRL);   // '왼쪽 윈도우 키'
    Keyboard.press('x');  //소문자'x', ASCII값 (120)도 가능 
    delay(200);      // 일정시간 값이 입력 되도록 시간지연 
    Keyboard.releaseAll( );  // 키를 계속 누르지 있지 않도록 함
   delay(200);
    Keyboard.press('u');  // ‘u’ 단축키 누르기|
   delay(200);
   Keyboard.releaseAll( );
   delay(200);
    Keyboard.press('u');  // ‘u’ 단축키 한번 더 누르기|
   delay(200);
   Keyboard.releaseAll( );   delay(200);    }   
}   // ※ 단, 윈도가 업데이트 필요한 상태이면 업데이트를 완료해야 적용 됨

※ ASCII 코드 값 참고

※ Arduino 제공 레퍼런스 참조 (키보드 관련 함수 등)

https://www.arduino.cc/reference/en/language/functions/usb/keyboard/

Functions

Keyboard.begin()
Keyboard.end()
Keyboard.press()
Keyboard.print()
Keyboard.println()
Keyboard.release()
Keyboard.releaseAll()
Keyboard.write()

 

▶ 아두이노 파일다운 :
(다운받아서 압축을 풀어 사용하세요)

02_PCOff.zip
0.00MB

 

▶ 단축키 실행 바로가기 파일 만들기 ( shutdown.exe )

(바로가기 파일 만들기에 관한 내용은 영상에서도 자세히 설명되어 있음)


 ① 바탕화면에서, 마우스 우큭릭 → 새로만들기 → 바로가기 클릭

 

 ② 항목 위치 입력 란에,  다음을 입력 : ' shutdown.exe -s -f -t 60 '

 → 띄어 쓰기 주의!  옵션 : -s (윈도우 종료) ,   -f (실행중프로그램도 강제종료)

-t 60 (60초 후 종료,  1시간 후 종료는 3600, 즉시 종료는 0 입력)

 

③ 바로가기 이름 제목에 PC종료(아무 이름 입력 가능) 

 

④ 바로 가기 키 부분에 마우스 커서를 클릭 해놓고 Ctrl +Alt 키를 누르면서 'x' 키를 누르면 자동으로 단축키가 입력됨

 

⑤ 바로가기 단축키는 Shift 도 가능하고, x 아닌 다른 문자 등의 조합, 2키 조합, 모두 가능, 단 윈도우 응용프로그램 등에서 사용하는 단축키와 겹칠 수 있기에 사용하지 않는 단축키로 지정하면 되고, 'x' 와 같은 알파벳은 소문자를 입력해도 자동으로 대문자로 입력이 된다.   하지만 아두이노 프로그램에서는 반드시 소문자로 입력해야 함.

⑥ 만들어진 "PC 종료" 바로가기 아이콘

이제 'Ctrl+Alt+x' 키를 실행해도, 또는 이 파일을 직접실행 더블 클릭 실행하여도 PC가 종료 될 것이며, 
아두이노와 CDS 센서를 이용하여 어두워지면 자동으로 PC를 종료시켜볼 수 있다. 

 

★ 바로가기( shutdown.exe ) 파일 활용의 장점 :

 바로가기 파일 없이, 윈도우 단축키 만으로도 종료가 가능하나, 운영체제 별로 단축키가 다르기 때문에 불편하고, shutdown.exe 바로가기를 만들면 단축키를 원하는대로 지정 고정 시킬 수 있어서 좋다.  

 

▶ 영상강좌 :  

(유튜브로 보기)

https://youtu.be/ngFxsdT-qB4

 

 

(전체화면 보기로 보세요)

 

반응형
반응형

【 레오나르도활용#3어두워 지면 PC화면 잠그기 (Leonardo

 아두이노 레오나르도(Leonardo)를 이용하여 밝기에 따라 PC화면을 잠금 모드로 전환 시켜보자 !

원리는, 레오나르도 보드는 키보드(마우스)와 같은 장치로 인식되며, <Keyboard.h> 함수를 활용하여, 키보드 키값을 PC로 입력할 수 있다.  이에 따라 '윈도우 화면 잠금' 단축키 ( '윈도우키' + 'L') 를 입력시켜 화면 잠금을 제어할 수 있는데, 광도전셀(cds) 소자를 이용해 어두울 때 화면 잠금이 되도록 구현 할 수 있다. 

  Let's get it~!

▶ 선수 학습 :
      1. [레오나르도 활용#1] 레오나르도 보드 사용법(보드 스팩& 설치-연결 참조)  ☜ (클릭)
      2. [아두이노 기초#3] 포토레지스터(CDS)제어 (cds 광센서 참조)  ☜ (클릭)

      

▶ 실습 목표 :  
 1. [ 레오나르도 보드에 광센서(cds)를 연결하여 제어할 수 있다.
 2. [ 키보드 키 값 제어 함수에 대해 이해할 수 있다. ]
 3. [ 레오나르도 보드를 이용해 PC를 제어할 수 있다. ]
 

 

▶ 실습 회로도면 :
  (이미지 클릭하면 확대 가능)

▶ 프로그램 코드 및 설명 1 : 
/* 어두울 때 자동 PC 잠금모드 시키기 */

#include <Keyboard.h>   
const int CDS = 0; //cds 센서를 A0 포트에 연결
const int PC_Hold = 30;  
void setup ( ) {  
  Keyboard.begin(); //키보드 컨트롤 관련 함수 선언  
  Serial.begin(9600);
}

void loop ( )  {
  int Brightness = analogRead(CDS);  //조도값을 읽음
  Serial.println(Brightness);
  // PC_Hold 값 이하가 되면 잠금모드 키 실행
  if(Brightness < PC_Hold) { 
    Keyboard.press(KEY_LEFT_GUI);   // '왼쪽 윈도우 키'
    Keyboard.press('l');  //소문자'l', ASCII값 (108)도 가능
    delay(100);      // 일정시간 값이 입력 되도록 시간지연 
    Keyboard.releaseAll();  // 키를 계속 누르지 있지 않도록 함
  }
}

 

※ ASCII 코드 값 참고

※ Arduino 제공 레퍼런스 참조 (키보드 관련 함수 등)

https://www.arduino.cc/reference/en/language/functions/usb/keyboard/

Functions

Keyboard.begin()
Keyboard.end()
Keyboard.press()
Keyboard.print()
Keyboard.println()
Keyboard.release()
Keyboard.releaseAll()
Keyboard.write()

 

▶ 아두이노 파일다운 :
(다운받아서 압축을 풀어 사용하세요)

01_PCLockScreen.zip
0.00MB

▶ 영상강좌 :  
(아래는 유튜브로 시청하기)

https://youtu.be/CrjuJH4Bx3M

 

(전체화면 보기로 보세요)

 

반응형
반응형

【 레오나르도활용#2】 온도밝기 값 PC로 수집하기 팁 #2(Leonardo

 아두이노 레오나르도(Leonardo)가 있으면 온도 센서와 광센서(CDS)등의 데이터를 실시간으로 PC로 수집할 수 있다. 이렇게 수집된 데이터는 엑셀로 차트를 만들어 볼 수 있고, 프로세싱(Processing) IDE를 통해 비주얼 하게 그래픽 처리해서 볼 수 있다.  그리고 파이썬으로 데이터를 정리하고 다듬어 준다면 활용할 수 있는 영역은 매우 많다.  한 번 해보면 어렵지 않으니 재미있게 즐겨보자~!    Let's go~!

▶ 선수 학습 :
      1. [레오나르도 활용#1] 레오나르도 보드 사용법(보드 스펙& 설치-연결 참조)  ☜ (클릭)
      2. [아두이노 센서#3] TMP36 온도 센서 (온도센서 참조)  ☜ (클릭)
      3. [아두이노 기초#3] 포토레지스터(CDS) 제어 (cds 광센서 참조)  ☜ (클릭)

▶ 실습 목표 :  
 1. [ 레오나르도 보드에 온도센서(Tmp36)와 광센서(cds) 회로를 연결하고 동작시킬 수 있다.
 2. [ 온도센서와 광센서로 부터의 데이터 값을 PC메모장을 통해 전송시킬 수 있다.]
 3. [ 전송된 데이터를 엑셀 등을 이용해서 활용해 본다 ]
 

▶ 실습 회로도면 :
  (이미지 클릭하면 확대 가능)



▶ 프로그램 코드 및 설명 1 : 
/* Leonardo 보드로 온도 & 밝기 데이터 수집하기 */

#include <Keyboard.h>   
const int TEMP = 0;    // A0 포트
const int CDS = 1;    // A1 포트 
const int LED = 12;
const int BUTTON = 11;
boolean lastBtn = LOW;
boolean currentBtn = LOW;
boolean running = false;
int counter = 1;

void setup ( ) {  
  pinMode(LED, OUTPUT);
  Keyboard.begin();
}

void loop ( )  {
  currentBtn = debounce (lastBtn);
  if (lastBtn == LOW && currentBtn == HIGH) //버튼 누름
  {
     running = !running;   // 상태 값 반대로 변경
   }
  lastBtn = currentBtn; // 버튼 상태값 업뎃
  if (running) // 데이터 기록 중
  {
     digitalWrite(LED, HIGH);
     // millis() 함수는 데이터를 ms 단위로 반환해 줌, 백그라운드 동작
     // delay() 함수를 사용할 수 없을 때 사용
   if (millis()%1000 == 0) // 1초마다 if문을 실행
   {
      int temperature = analogRead(TEMP);
      int  brightness = analogRead(CDS);
      float mVoltage = temperature*5000.0/1024.0; //섭씨온도 값 변환
      float TempDotC = (mVoltage - 500) / 10.0;   //섭씨온도값 변환
      Keyboard.print(counter);  // 데이터 앞줄마다 번호 매김
      Keyboard.print(",");
      Keyboard.print(TempDotC);  // 온도 데이터
      Keyboard.print(",");
      Keyboard.print(brightness);   // 밝기 데이터
      Keyboard.print("\n");
      counter++;
    }    
  }
  else
  {
    digitalWrite(LED, LOW);
  }
}

//버튼의 체터링 현상 방지를 위한 서브 함수 생성
boolean debounce (boolean last)
{
  boolean current = digitalRead (BUTTON);
  if(last != current)
  {
    delay(5);
    current = digitalRead(BUTTON);
  }
  return current;    
}

▶ 아두이노 파일다운 :
(다운로드하여서 압축을 풀어 사용하세요)

Leo_2_TMP36_CDS_LED_LIGHT.zip
0.00MB


▶ 영상강좌 :  
(전체 화면 보기로 보세요)

(아래는 유튜브로 시청하기)
https://youtu.be/ViP64mGwv-I

 

 

반응형