달력

1

« 2025/1 »

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
2016. 2. 8. 04:51

GPIO 입력(파이썬) 라즈베리파이/GPIO2016. 2. 8. 04:51

이번에는 버튼이 3.3V인지 GND신호인지 판단하게 된다.

사용자가 버튼을 누르면 화면에 텍스트를 표시하는 파이썬 스크립트를 작성하고자 한다.

 

1. 버튼을 연결한다. 24번핀을 사용해야 하며 반드시 풀다운 저항을 사용해야 한다.

 

2. 홈디렉터리에  파일을 만든다. 나는 파일명을 button.py라고 했다.

 

3. 코드입력

import RPi.GPIO as GPIO

import time

 

GPIO.setmode(GPIO.BCM)

GPIO.setup(24, GPIO.IN) //24번 핀을 입력으로 설정한다.

 

count = 0

 

while True:

    inputValue = GPIO.input(24)

    if (inputValue == True): //변수가 참인지 판단.

         count = count +1 //참이면 카운터 증가

        print("Button pressed " + str(count)) //텍스트를 터미널에 출력

     time.sleep(.01) //잠시 기다림. 

 

4. LXTerminal 실행

pi@ raspberrypi ~ $ sudo python button.py

 

5. 버튼을 누르면 Button preessed와 함께 숫자가 뜬다.

:
Posted by youjin.A

쉘 스크립트

1. LXTerminal아이콘 더블 클릭~

 

2. 커맨드라인에 sudo su 입력

pi@ raspberry ~ $ sudo su

커맨드 프롬프트가 root@ raspberrypi:/home/pi# 이렇게 바뀐다.

 

3. 25번 핀의 LED를 켜고 끄기에 앞서 사용하려는 핀번호를 내보내기 파일(export)에 쓴다.

root@ raspberrypi:/home/pi# echo 25 > /sys/class/gpio/export

export파일에 핀 번호를 쓰면 해당 핀용 제어파일이 담길 새로운 디렉터리가 /sys/class/gpio/에 만들어진다.

여기서는 /sys/class/gpio/gpio25라는 파일이 만들어진다.

 

4. cd 명령을 사용하여 그 디렉터리로 이동한다.

root@ raspberrypi:/home/pi# cd /sys/class/gpio/gpio25

l(소문자 L)s 명령을 사용하여 현재 디렉터리에 어떤 파일과 폴더들이 있는지 본다.

root@ raspberrypi:/sys/class.gpio/gpio25# ls

actuve_low direction edge power subsystem uevent value

지금부터 작업해야 할 파일은 direction과 value파일이다.

 

5. direction 파일은 해당 핀을 입력이나 출력으로 설정하는 방식이다. LED를 켤려면 출력으로 설정.

root@ raspberrypi:/sys/class.gpio/gpio25# echo out > direction

 

6. LED를 켤려면 value파일에 1을 써야한다.

root@ raspberrypi:/sys/class.gpio/gpio25# echo 1 > value

엔터를 눌리면 LED가 켜진다!

 

7. LED를 끄려면 valud파일에 0을 쓴다.

root@ raspberrypi:/sys/class.gpio/gpio25# echo 0 > value

8. 루트에서 나갈려면 exit 입력

파이썬

LED를 켜​는 것은 이번에는 파이썬을 이용해서 구현 할 수 있다.

1. File Manager(파일 관리자)를 연다. 홈 디렉터리 /home/pi/에 있는지 확인한다.

 

 

2. 마우스 왼쪽버튼을 눌러서 Create New > Blank file 을 클릭하여 파일을 만든다. (이름, 맘대로).py 라고 이름을 지정한다. .py꼭 있어야됨. 나는 blink.py라고 했다.

 

3. 파일을 더블클릭하고 코드를 넣는다.

import RPi.GPIO as GPIO //GPIO제어에 필요한 코드를 가져온다.

import time //sleep함수에 필요한 코드를 가져온다.

 

GPIO.setmode(GPIO.BCM) //칩의 신호 번호를 사용한다.

GPIO.setup(25, GPIO.OUT) //25번 핀을 출력으로 설정한다.

 

while True: //들여쓰기를 한 코드 조각으로 무한 루프를 만든다.

     GPIO.output(25, GPIO.HIGH) //LED를 켠다.

     time.sleep(1) //1초 기달

     GPIO.output(25, GPIO.LOW) //LED 끈다.

     time.sleep(1)

 

 

4. LXTerminal을 열고 홈디렉터인지 확인한 다음 파일을 실행하자

pi@ raspberrypi ~ $ sudo python blink.py

LED가 깜박일 것이다.

 

5.Ctrl + C를 누르면 스크립트 종료하고 다시 커맨드 라인으로 돌아간다.

 

 

 

파이썬 언어 참고

https://wikidocs.net/57

'라즈베리파이 > GPIO' 카테고리의 다른 글

C언어를 이용한 GPIO 출력 (wiringPi )  (0) 2016.02.08
사운드 보드(파이썬)  (0) 2016.02.08
GPIO 입력(파이썬)  (0) 2016.02.08
GPIO 설치하고 테스트하기  (0) 2016.02.08
:
Posted by youjin.A
2016. 2. 8. 04:49

GPIO 설치하고 테스트하기 라즈베리파이/GPIO2016. 2. 8. 04:49

1. GPIO 모듈 가져오기

LXTerminal에 다음과 같이 친다

pi@ raspberrypi ~ $ sudo python

>>> import RPi.GPIO as GPIO

오류가 발생하지 않으면 준비끝!

 

 

2. 핀 모드 설정

다음 과 같이 친다

>>> GPIO.setmode(GPIO.BCM)

위 코드는 그림과 같은 방식으로 #이 붙은 해당 핀을 사용한다는 설정이다.
\

 

 

3. LED 테스트

25번 핀에 LED를 연결하여 출력을 테스트 해보자

참고로 라즈베리 파이의 디지털 입출력 신호는 반드시 3.3V 또는 접지여야 한다. 3.3V보다 높은 전압에 입력 핀을 연결하면 라즈베리 파이 고장남;;;

25번 핀을 출력으로 설정

>>> GPIO.setup(25, GPIO.OUT)

LED를 켠다

>>> GPIO.output(25, GPIO.HIGH)

LED를 끈다

>>> GPIO.output(25, GPIO.LOW)

파이썬의 대화형 인터프리터 종료

>>> exit()

'라즈베리파이 > GPIO' 카테고리의 다른 글

C언어를 이용한 GPIO 출력 (wiringPi )  (0) 2016.02.08
사운드 보드(파이썬)  (0) 2016.02.08
GPIO 입력(파이썬)  (0) 2016.02.08
GPIO 출력(쉘 스크립트, 파이썬 이용)  (0) 2016.02.08
:
Posted by youjin.A
2016. 2. 8. 04:43

전자공학실험1 전자공학이론/회로이론2016. 2. 8. 04:43

:
Posted by youjin.A

소자들의 라플라스 변환:

Time-영역의 인덕터와 커패시터를 S-영역으로 변환하면 미분과 적분 수식이 없어지기 때문에 계산을 단순 저항처럼 할 수 있다.

  

-저항

 


-인덕터
 


-커패시터
 




라플라스 변환 적용 단계:

회로에 라플라스 변환을 적용하는 단계는 다음과 같다.

1. 회로를 time domain에서 s-domain으로 변환한다.

2. 구할 값을 정한 다음에 마디/망로 해석, 중첩성, 테브난/노턴 등가회로를 이용하여 문제를 푼다.

3. 구한 값을 s-domain에서 time domain으로 역변환한다.



라플라스 변환 회로 문제.hwp


:
Posted by youjin.A

교류회로에서는 그 순간의 상태를 멈춰있는 상태로 보고 복소좌표에 올리는 phosor방법을 이용할 수 있다.

이것을 이용하면 교류회로의 문제를 직류로 바꿔서 똑같이 풀 수 있다.

그래서 직류회로에서 소자에 걸리는 전압과 전류를 푸는 5가지 방법을 그대로 적용할 수 있는 것이다.

그 다섯가지 방법은 다음과 같다.

1. Mesh

전원들의 주파수가 같을 경우 페이저에 키로히호프 법칙이 적용되기 때문에 페이저만으로 마디해석과 망로해석을 하면된다.

2. Nodal

3. Superposition

전원들의 주파수가 다를 경우에는 주파수에 따라 소자들의 임피던스가 달라지기 때문에 전원 별로 구분하여 결과치를 구한다.

주파수별 결과치를 더할 때는 페이저가 아닌 Time domain 형태로 더해야 한다.

그 이유는 전류, 전압의 페이저 정의에 의해서 주파수가 다르면 페이저를 더할 수 없기 때문이다.

4. Nort

5. Thev

임피던스는 저항과 같이 다룰수 있기 때문에 전원 변환과 테브난/노턴 등가회로를 ac에서도 만들 수 있다. 





:
Posted by youjin.A

1) 전류, 전압의 페이저



2) 페이저의 키로히호프 법칙 적용



3) 임피던스 

1) 소자들의 전류 - 전압 관계

 


2) 임피던스

여기서 페이저 전압과 페이저 전류의 비를 임피던스 Z라 한다.

그리고 임피던스의 역수를 어드미턴스 Y라 한다.


3) 직병렬 변환

-직렬


-병렬


-Y 델타 변환

:
Posted by youjin.A








정리:

L이나 C가 하나 포함되어 있는 직류 1차 회로에서는 전류i와 전압v가 다음과 같이 나타난다.


:
Posted by youjin.A

최대 전력 전달 정리:

RL에 따라서 소비되는 전력을 구하고 그 값이 최대일 때의 RL을 구하면,

따라서 R(L) = R(th) 일 때 부하저항에서 소비되는 전력은 최대이다.

"내부저항과 부하저하항의 수치가 같을 때에 최대의 파워가 나온다." 

:
Posted by youjin.A

① Mesh, Nodal

미지수의 갯수를 줄인다.


② 비례성

전원 값이 올라가면 결과값도 비례해서 올라감


③ 중첩성

독립 전원이 여러개 -> 전원 하나의 효과

                           -> 전원 하나의 효과

                           -> 전원 하나의 효과 

I(S1)에 의한 전류와 I(S2)에 의한 전류가 중첩된다.

V(S1)에 의한 전압과 V(S2)에 의한 전압이 중첩된다.​ 


④ 테브난, 노턴



⑤ 합성저항


:
Posted by youjin.A