이론





***pulse_duration * 17000 ?***

속도 공식(속도 = 거리 / 시간)에 따라, 속도(340m/s라고 함) = 거리(x) / 시간(duration/2)

duration/2 : 초음파센서의 원리가 초음파를 내보내고(1번) 돌아오기까지의(2번) 시간을 측정하는 것이므로 거리를 2번지난것과 같음

따라서 거리(x) = 속도(340) * 시간(duration/2)

duartion * (340m/s / 2) -> duration * (170m/s) -> m를 cm로 바꾸면 -> duration * 17000



[Flask(플라스크) 서버 구축]

sudo pip3 install flask  



*** index.html 코드 내용도 정상, 파일경로도 정상인데 자꾸 Internal Server Error가 뜨면, 넷빈즈에서 Webbrower로 새 프로젝트 만든후, 디폴트로 생기는 index.html에 작성해서 fileZilla로 업로드 해볼것!!! ***





실습


hc_demo.py

hcr0531_java

FXMLDocumentController.java

web_server.py

web_server2.py


'학원수업 > 파이썬' 카테고리의 다른 글

학원 50일차 복습(5/30)  (0) 2018.05.30
학원 49일차 복습(5/29)  (0) 2018.05.29
학원 48일차 복습(5/28)  (0) 2018.05.28
학원 45일차 복습(5/18)  (0) 2018.05.23
학원 44일차 복습(5/17)  (0) 2018.05.17

이론





***플로팅 상태란 ?***

디지털 신호에는 1과 0으로 표현되지만 1도 아니고 0도 아닌 애매모호한 상태가 있습니다. 이 상태를 우리는 떠있다 혹은 플롯 상태라고 정의합니다. 이 상태에서는 주변의 전기장 상태에 따라 입력 값이 불안정하게 변하기 때문에 부정전압으로 오작동이 생기게 됩니다.이러한 상태를 해결하기 위한것이 바로 풀업 저항과 풀다운 저항 회로입니다.


**풀업 / 풀다운***

풀업 저항 :

+(5V. 3.3V)쪽에 저항을 연결해주는 방법.

전류가 항상 VCC(+) 쪽으로 흐르기 때문에, 스위치를 누르지 않아도 1(HIGH)의 신호를 갖게되며, 스위치를 누를경우 0(LOW)상태가 됩니다.


풀다운 저항 :

그라운드(GND, -)쪽에 저항을 연결해주는 방법

스위치를 누르지 않으면 전류가 GND로 흐르기때문에, 0의 상태가 유지되며 스위치를 누를경우 1의 상태가 됨


PWM(Pulse Width Modulation : 펄스신호) : 부저의 소리를 줄이고 낮추는 등에 사용


https://github.com/aterrien/jQuery-Kontrol 에서 zip파일을 다운받고


[초음파 회로 그려보기]

1.http://fritzing.org/projects/hc-sr04-project 에서 HC-SR04.fzpz 파일 다운받기 

2.프리징에 드래그앤드롭해서, 초음파(HC-SR04.fzpz) Import하고 회로도 만들기




실습


btn_LedDemo0529.py


pwmDial.0530.py


pwmDialExam0530.py


'학원수업 > 파이썬' 카테고리의 다른 글

학원 51일차 복습(5/31)  (0) 2018.05.31
학원 49일차 복습(5/29)  (0) 2018.05.29
학원 48일차 복습(5/28)  (0) 2018.05.28
학원 45일차 복습(5/18)  (0) 2018.05.23
학원 44일차 복습(5/17)  (0) 2018.05.17

이론




파이참에서 setting->ProjectInterpreter-> 초록색 + 에서 필요한것 install Package 가능

Pyqt5를 인스톨하여 파이참에서도 UI창 사용가능


파이썬이 서버일때의 장점 :라즈베리가 서버가 되면, 하드웨어들의 연동이 가능해진다.





실습


Ex1_Server.java

FXMLDocumentController.java

echoSocket0529.py

echoSocketServer0529.py

EchoSocketServerLed0529.py


'학원수업 > 파이썬' 카테고리의 다른 글

학원 51일차 복습(5/31)  (0) 2018.05.31
학원 50일차 복습(5/30)  (0) 2018.05.30
학원 48일차 복습(5/28)  (0) 2018.05.28
학원 45일차 복습(5/18)  (0) 2018.05.23
학원 44일차 복습(5/17)  (0) 2018.05.17

이론




mkdir pythonDevice

sudo apt-get update

sudo apt-get install –y python-dev python-setuptools

git clone git://git.drogon.net/wiringPi

cd wiringPi/

 ./build

git clone https://github.com/Gadgetoid/WiringPi2-Python.git

cd WiringPi2-Python

sudo python3 setup.py install


LED확인을 위해 c코드로 확인

gcc led_test.c -o led_test -lwiringPi

./led_test 로 실행


gpio readall 입력시



ui파일 py파일로 변환하기

pyuic5 -x holjak.ui -o holjak.py -> pyuic5 [.ui위치].ui [저장위치].py



*** $(this) : 어떤 버튼을 클릭하든, 그 버튼의 주소값을 받아온다 ***

attr()요소는 선택한 선택자 : onBtn,offBtn의 value인 속성의 값을 가져옴


GPIO관련 메서드들


실습


led_test.c

ledtest.py

holjack.py

holjackGpio.py

respData.jsp

ledResp.jsp

StateNumber.java


'학원수업 > 파이썬' 카테고리의 다른 글

학원 50일차 복습(5/30)  (0) 2018.05.30
학원 49일차 복습(5/29)  (0) 2018.05.29
학원 45일차 복습(5/18)  (0) 2018.05.23
학원 44일차 복습(5/17)  (0) 2018.05.17
학원 43일차 복습(5/16)  (0) 2018.05.16

이론


thread 두가지 종류: kernel thread, user thread

kernal Thread : 임의의 메서드를 지정, 호환성 문제때문에 잘 안쓰임. _thread

user_Thread : threading 모듈을 상속, run 함수


python3 thread 지원 모듈 _thread, threading

_thread는 권장사항은 아니나 이전 모듈과의 호환성을 위해서 유지

_thread.start_new_thread(function,args[,kwargs])


사용사례 PyQt에서 정의하는 클래스가 이미 class Form(QtWidgets.QDialog): 처럼 다른 클래스를 상속 받았다면, 스레드를 상속받지 않고 바로 사용할 수 있는 형태

자바에서 Runnable 인터페이스를 구현한 클래스로 인자로 전달하여 스레드를 생성해서 사용하는 것과 같음!


target지정하면 내부적으로 run()메서드가 호출되어서 target메서드를 호출!



실습


ex1_thread.py

ex1_threading.py

ex2_threading_target.py

ex2_urlopen.py

exam_thread.py

exam_threadClass.py

exam_urlGet_Thread.py


'학원수업 > 파이썬' 카테고리의 다른 글

학원 49일차 복습(5/29)  (0) 2018.05.29
학원 48일차 복습(5/28)  (0) 2018.05.28
학원 44일차 복습(5/17)  (0) 2018.05.17
학원 43일차 복습(5/16)  (0) 2018.05.16
학원 42일차 복습(5/15)  (0) 2018.05.15

이론




__name__은 파이썬에서 제공하는 변수

python3 calModule.py : 스스로 독립적으로 실행

__main__ 출력


다른 영역에서 import되었을 때는 모듈이름을 출력한다

python3

>>>import calModule

calModule 출력


calModClass의 CalClass() 생성은

if __name__ == "__main__": 때문에 실행이 안되기때문에

대화형 인터프리터나 다른 파일에서 이모듈을 불러서 사용할 때는

__name__ == "__main__"이 거짓이 되어 if문 다음 문장들이 수행되지 않는다.


case1 : import calModule

case2 : from calModule import cal_upper

case3 : from calModule import *

가장좋은 방식은 case1

import calModule as cal



[PyQt] https://sourceforge.net/projects/pyqt/files/PyQt5/PyQt-5.6/

두번째 항목 다운로드 후 설치


다른패키지 모듈불러오기

sys.path.append(모듈을 저장한 디렉터리) 사용하기



객체의 이벤트에서 connect함수를 호출하고 인자값으로 호출될 함수를 작성한다.




실습


ex3_private.py

Inheritance.py

calModule.py

calUse.py

calModClass.py

calClassUse.py

importDemo.py

calExtendsUseDemo.py

install.sh

ex0_firstPyQT.py

ex0_firstClassPyQT.py

exam1_btn_changeColor.py

ex1_helloUI.py

changeWidgetColor.py


'학원수업 > 파이썬' 카테고리의 다른 글

학원 48일차 복습(5/28)  (0) 2018.05.28
학원 45일차 복습(5/18)  (0) 2018.05.23
학원 43일차 복습(5/16)  (0) 2018.05.16
학원 42일차 복습(5/15)  (0) 2018.05.15
학원 41일차 복습(5/14)  (0) 2018.05.14

이론




파일 객체 = open(파일 이름, 파일 열기 모드)

r   읽기모드 - 파일을 읽기만 할 때 사용

w   쓰기모드 - 파일에 내용을 쓸 때 사용

a   추가모드 - 파일의 마지막에 새로운 내용을 추가 시킬 때 사용



def 함수명(매개변수):

    <수행할 문장1>

    <수행할 문장2>

    ...


try:

    ...

except [발생 오류[as 오류 메시지 변수]]:

    ...


바이너리를 복사하기 위해서는 반드시 버퍼가 필요 **


***인스턴스와 객체의 차이***

a = Cookie()

인스턴스라는 말은 특정 객체(a)가 어떤 클래스(Cookie)의 객체인지를 관계 위주로 설명할 때 사용된다.

즉, "a는 인스턴스" 보다는 "a는 객체"라는 표현이 어울리며, "a는 Cookie의 객체" 보다는 "a는 Cookie의 인스턴스"라는 표현이 훨씬 잘 어울린다.


***self란?***

간단히 말하면, 이 함수를 부르는 객체가 해당 클래스의 인스턴스인지 확인해주기 위한 장치이다.

하지만 단순히 확인하는 것에서 나아가 self를 이용하여 객체 내의 정보를 저장하거나 불러올수 있다.


__init__은 생성자

클래스변수 static

_ 언더바 하나는 protected 변수라고 함.

__ 언더바 두개는 private 변수.



실습


ex6_while.py

ex7_input.py

ex8_input.py

ex9_math_random.py

exam1_py

exam2_Holjak.py

exam3_gugu.py

ex1_def01.py

ex3_try_catch.py

exam1_def.py

exam_Def_Holjak.py

ex1_file.py

ex2_file.py

ex3_file.py

ex1.filecopy.py

ex1_def_filecopy.py

ex2_rename.py

ex2_rename_getsize.py

ex3_TestClass.py

ex3_class2.py

ex3_class3.py


'학원수업 > 파이썬' 카테고리의 다른 글

학원 48일차 복습(5/28)  (0) 2018.05.28
학원 45일차 복습(5/18)  (0) 2018.05.23
학원 44일차 복습(5/17)  (0) 2018.05.17
학원 42일차 복습(5/15)  (0) 2018.05.15
학원 41일차 복습(5/14)  (0) 2018.05.14

이론



문자열을 만드는 총 4가지 방법

1. "문자열"

2. '문자열'

3. """문자열"""

4. '''문자열'''


문자열과 튜플은 불변적인 요소이기 때문에 변경이 불가능하다.

문자열인 경우는 슬라이싱을 이용해서 변경이 가능하다.


문자열 포맷코드

문자열 포매팅 예제에서는 대입시켜 넣는 자료형으로 정수와 문자열을 사용했으나

이외에도 다양한 것들을 대입시킬수 있다. 문자열 포맷코드로는 다음과 같은 것들이 있다.

코드 설명

%s  문자열(String)

%c  문자 1개(Character)

%d  정수(Integer)

%f  부동소수(Floating-point)

%o  8진수

%x  16진수

%%  Literal % (문자 % 자체)



자료형은 모두 객체이다.***


리스트: 값의 생성,삭제,수정이 가능

튜플: 값을 바꿀 수 없음

불(bool) 자료형이란 참(Ture)과 거짓(False)을 나타내는 자료형이다

문자열 ""->False

리스트 /튜플 []() ->False

딕셔너리 {} ->False

숫자형 0,None ->False


nano 편집기에서

alt+p : 스페이스 view

ctrl + 6 : 블록지정

alt + 6 :복사

ctrl + u :붙여넣기


실습


ex1_string.py

ex2_string.py

ex3_string.py

ex4_string.py

ex1_tuple.py

ex2_dic.py

ex3_set.py

ex4_if.py

ex5_time.py

exam_ifwhile.py


'학원수업 > 파이썬' 카테고리의 다른 글

학원 48일차 복습(5/28)  (0) 2018.05.28
학원 45일차 복습(5/18)  (0) 2018.05.23
학원 44일차 복습(5/17)  (0) 2018.05.17
학원 43일차 복습(5/16)  (0) 2018.05.16
학원 41일차 복습(5/14)  (0) 2018.05.14

이론



[소프트웨어]

1.키트에 들어있는 SD카드를, USB 포트에 꽂고

2. https://www.sdcard.org/downloads/formatter_4/eula_windows/index.html 에 들어가서 SD Card Formatter 설치

3.라즈비안 다운 https://www.raspberrypi.org/downloads/raspbian/ 로 이동

4. https://sourceforge.net/projects/win32diskimager/?source=directory 다운

5. https://etcher.io/ 로 이동해서 다운(포맷+IMAGE설치 한번에 해줌)


[하드웨어]

전력(5V)과 접지(GND) 연결



전력 : 전원연결. (+)와 같다.

접지(GND) : (-)와 같다. 0V


충전기 연결

PC케이블 연결




라즈베리모양->Raspberry Pi Configuration클릭 후 Interface 설정




라즈베리에서 터미널 실행

sudo systemctl start ssh ->ssh을 실행하라

비밀번호 설정

터미널에서 ifconfig로 자신의 inet알아낸 후 putty로 접속

sudo apt-get -y install vsftpd

sudo vi /etc/vsftpd.conf 들어가서

:ser number로 행번호 띄운후,

31행 주석제거 (write_enable=YES)

122,123,125행 주석 제거(chroot_locar_user=YES, chroot_list_enable=YES, chroot_list_file=/etc/vsftpd.chroot_list)

sudo vi /etc/vsftpd.chroot_list 에서 내 아이디 추가해준후 :wq(아이디 한줄만 넣어주면 됨)

sudo systemctl restart vsftpd 

**vim에서 백스페이스, 방향키가 이상하면  sudo apt-get install vim로 vim 새롭게 인스톨 할것**

FileZilla(ftp)로 연결!


putty를 이용해 라즈베리파이에 파이썬 작업폴더 생성

mkdir mystudy

cd mystudy/

mkdir pythonBasic

cd pythonBasic/

mkdir day01

cd day01/





1.POWER

-전원. 라즈베리를 구동시킨다. +극과 같음.


2.GND

-접지. 0V 전위를 가지고, 감전 보호에 사용됨. -극과 같음.


3. GPIO?

- 입출력포트

- General Purpose Input/Output

- 일반적인 입출력을 위한 포트

- 라즈베리 파이나 아두이노 같은 보드(임베디드 시스템)에서 외부 하드웨어 연결을 위해 사용


4.UART 통신(비동기식 시리얼 통신)

시리얼 통신을 담당하는 회로

비동기는 1:1통신만 가능


5.SPI 통신(동기식 시리얼 통신)

장점

클럭(CLK) 라인을 이용해 데이터 라인을 동기화 하므로, 하드웨어 구조가 간단하고 1:N 통신이 가능하다

송신용 핀 / 수신용 핀이 분리되어 있음(동시 송수신) 연결을 이용해 10만 비트의 전송 속도를 지원하기도 함

단점

통신에 필요한 핀이 많아지는 단점이 있음.(하나의 장치를 연결하는데 4개의 라인(CLK,MOSI,MISO,SS)가 필요하고, 추가로 장치를 더할 떄마다 라인이 하나씩 추가됨.

N:N 통신은 불가


6.I2C 통신(동기식 시리얼 통신)

SPI통신의 단점을 보완가능.

UART통신처럼 단 2라인만 사용하고, 1008개의 슬레이브 장치를 지원

N:N 통신 가능(단 마스터 장치끼리 통신은 불가)

하드웨어 요구사항 SPI < I2C < UART , 통신속도 SPI와 UART의 중간쯤 됨


[파이썬 환경설정]

파이참 Community https://www.jetbrains.com/pycharm/download/

#인덱싱:: 원하는 부분의 글자를 출력!

#슬라이싱(숫자로 지정한 부분앞까지 출력)


실습


ex2_string.py


'학원수업 > 파이썬' 카테고리의 다른 글

학원 48일차 복습(5/28)  (0) 2018.05.28
학원 45일차 복습(5/18)  (0) 2018.05.23
학원 44일차 복습(5/17)  (0) 2018.05.17
학원 43일차 복습(5/16)  (0) 2018.05.16
학원 42일차 복습(5/15)  (0) 2018.05.15

+ Recent posts