Khối lệnh là gì python


CHƯƠNG III

Python tăng cường sử dụng từ khóa tiếng Anh, hạn chế các kí hiệu và

cấu trúc cú pháp so với các ngôn ngữ khác.

Python là một ngôn ngữ phân biệt kiểu chữ HOA, chữ thường.

Như C/C++, các từ khóa của Python đều ở dạng chữ thường.

and

assert

break

class

continue

def

− Khối lệnh:

Trong các ngôn ngữ khác, khối lệnh thường được đánh dấu bằng cặp kí hiệu

hoặc từ khóa. Ví dụ, trong C/C++, cặp ngoặc nhọn { } được dùng để bao bọc một

khối lệnh. Python, trái lại, có một cách rất đặc biệt để tạo khối lệnh, đó là thụt các

câu lệnh trong khối vào sâu hơn (về bên phải) so với các câu lệnh của khối lệnh

cha chứa nó. Ta có thể sử dụng dấu tab hoặc khoảng trống để thụt các câu lệnh vào.

Ví dụ, giả sử có đoạn mã sau trong C/C++:

1.



#include



2.



//...



3.



delta = b * b – 4 * a * c;



4.



if (delta > 0)



5.



{



6.



// Khối lệnh mới bắt đầu từ kí tự { đến }



ĐỒ ÁN TỐT NGHIỆP



23



CHƯƠNG III

7.

8.



x1 = (- b + sqrt(delta)) / (2 * a);



9.

10.



x2 = (- b - sqrt(delta)) / (2 * a);



11.

12.



printf("Phuong trinh co hai nghiem phan biet:\n");



13.

14.

15.



printf("x1 = %f; x2 = %f", x1, x2);

}



16.

Đoạn mã trên có thể được viết lại bằng Python như sau:

1.



import math



2.



#...



3.



delta = b * b – 4 * a * c



4.



if delta > 0:



5.



# Khối lệnh mới, thụt vào đầu dòng



6.



x1 = (- b + math.sqrt(delta)) / (2 * a)



7.



x2 = (- b – math.sqrt(delta)) / (2 * a)



8.



print "Phuong trinh co hai nghiem phan biet:"



9.



print "x1 = ", x1, "; ", "x2 = ", x2



10.

− Khả năng mở rộng:



ĐỒ ÁN TỐT NGHIỆP



24



CHƯƠNG III

Python có thể được mở rộng: nếu ta biết sử dụng C, ta có thể dễ dàng

viết và tích hợp vào Python nhiều hàm tùy theo nhu cầu. Các hàm này sẽ trở thành

hàm xây dựng sẵn (built-in) của Python. Ta cũng có thể mở rộng chức năng của

trình thông dịch, hoặc liên kết các chương trình Python với các thư viện chỉ ở dạng

nhị phân (như các thư viện đồ họa do nhà sản xuất thiết bị cung cấp). Hơn thế nữa,

ta cũng có thể liên kết trình thông dịch của Python với các ứng dụng viết từ C và sử

dụng nó như là một mở rộng hoặc một ngôn ngữ dòng lệnh phụ trợ cho ứng dụng

đó.

− Trình thông dịch:

Python là một ngôn ngữ lập trình dạng thông dịch, do đó có ưu điểm tiết

kiệm thời gian phát triển ứng dụng vì không cần phải thực hiện biên dịch và liên

kết. Trình thông dịch có thể được sử dụng để chạy file script, hoặc cũng có thể

được sử dụng theo cách tương tác. Ở chế độ tương tác, trình thông dịch Python

tương tự shell của các hệ điều hành họ Unix, tại đó, ta có thể nhập vào từng biểu

thức rồi gõ Enter, và kết quả thực thi sẽ được hiển thị ngay lập tức. Đặc điểm này

rất hữu ích cho người mới học, giúp họ nghiên cứu tính năng của ngôn ngữ; hoặc

để các lập trình viên chạy thử mã lệnh trong suốt quá trình phát triển phần mềm.

Ngoài ra, cũng có thể tận dụng đặc điểm này để thực hiện các phép tính như

với máy tính bỏ túi.

− Lệnh và cấu trúc điều khiển:

Mỗi câu lệnh trong Python nằm trên một dòng mã nguồn. Ta không cần

phải kết thúc câu lệnh bằng bất kì kí tự gì. Cũng như các ngôn ngữ khác, Python

cũng có các cấu trúc điều khiển. Chúng bao gồm:

Cấu trúc rẽ nhánh: cấu trúc if (có thể sử dụng thêm elif hoặc else ), dùng để

thực thi có điều kiện một khối mã cụ thể.



ĐỒ ÁN TỐT NGHIỆP



25



CHƯƠNG III

Cấu trúc lặp, bao gồm: Lệnh while: chạy một khối mã cụ thể cho đến khi điều

kiện lặp có giá trị false. Vòng lặp for: lặp qua từng phần tử của một dãy, mỗi

phần tử sẽ được đưa vào biến cục bộ để sử dụng với khối mã trong vòng lặp.

Lớp, đối tượng: Python cũng có từ khóa class dùng để khai báo lớp (sử dụng

trong lập trình hướng đối tượng) và lệnh def dùng để định nghĩa hàm.

− Hệ thống kiểu dữ liệu:

Python sử dụng hệ thống kiểu duck typing, còn gọi là latent typing (tự

động xác định kiểu). Có nghĩa là, Python không kiểm tra các ràng buộc về kiểu dữ

liệu tại thời điểm dịch, mà là tại thời điểm thực thi. Khi thực thi, nếu một thao tác

trên một đối tượng bị thất bại, thì có nghĩa là đối tượng đó không sử dụng một kiểu

thích hợp. Python cũng là một ngôn ngữ định kiểu mạnh. Nó cấm mọi thao tác

không hợp lệ, ví dụ cộng một con số vào chuỗi kí tự.

Sử dụng Python, ta không cần phải khai báo biến. Biến được xem là đã

khai báo nếu nó được gán một giá trị lần đầu tiên. Căn cứ vào mỗi lần gán, Python

sẽ tự động xác định kiểu dữ liệu của biến. Python có một số kiểu dữ liệu thông

dụng sau:

Int, long: số nguyên (trong phiên bản 3.x long được nhập vào trong kiểu int).

Độ dài của kiểu số nguyên là tùy ý, chỉ bị giới hạn bởi bộ nhớ máy tính.

Float: số thực

complex: số phức, chẳng hạn 5+4j

list: dãy trong đó các phần tử của nó có thể được thay đổi, chẳng hạn [8, 2, 'b',

-1.5]. Kiểu dãy khác với kiểu mảng (array) thường gặp trong các ngôn ngữ lập

trình ở chỗ các phần tử của dãy không nhất thiết có kiểu giống nhau. Ngoài ra

phần tử của dãy còn có thể là một dãy khác.

tuple: dãy trong đó các phần tử của nó không thể thay đổi.



ĐỒ ÁN TỐT NGHIỆP



26



CHƯƠNG III

str: chuỗi kí tự. Từng kí tự trong chuỗi không thể thay đổi. Chuỗi kí tự được đặt

trong dấu nháy đơn, hoặc nháy kép.

dict: từ điển, còn gọi là "hashtable": là một cặp các dữ liệu được gắn theo kiểu

{từ khóa: giá trị}, trong đó các từ khóa trong một từ điển nhất thiết phải khác

nhau. Chẳng hạn {1: "Python", 2: "Pascal"}

set: một tập không xếp theo thứ tự, ở đó, mỗi phần tử chỉ xuất hiện một lần.

Ngoài ra, Python còn có nhiều kiểu dữ liệu khác.

− Module:

Python cho phép chia chương trình thành các module để có thể sử dụng

lại trong các chương trình khác. Nó cũng cung cấp sẵn một tập hợp các modules

chuẩn mà lập trình viên có thể sử dụng lại trong chương trình của họ. Các

module này cung cấp nhiều chức năng hữu ích, như các hàm truy xuất tập tin,

các lời gọi hệ thống, trợ giúp lập trình mạng (socket),…

− Đa năng:

Python là một ngôn ngữ lập trình đơn giản nhưng rất hiệu quả.

So với Unix shell, Python hỗ trợ các chương trình lớn hơn và cung cấp nhiều

cấu trúc hơn.

So với C, Python cung cấp nhiều cơ chế kiểm tra lỗi hơn. Nó cũng có sẵn

nhiều kiểu dữ liệu cấp cao, ví dụ như các mảng (array) linh hoạt và từ

điển (dictionary) mà ta sẽ phải mất nhiều thời gian nếu viết bằng C.

Python là một ngôn ngữ lập trình cấp cao có thể đáp ứng phần lớn yêu cầu của

lập trình viên:

Python thích hợp với các chương trình lớn hơn cả AWK và Perl.

Python được sử dụng để lập trình Web. Nó có thể được sử dụng như

một ngôn ngữ kịch bản.



ĐỒ ÁN TỐT NGHIỆP



27



CHƯƠNG III

Python được thiết kế để có thể nhúng và phục vụ như một ngôn ngữ kịch

bản để tuỳ biến và mở rộng các ứng dụng lớn hơn.

Python được tích hợp sẵn nhiều công cụ và có một thư viện chuẩn phong

phú, Python cho phép người dùng dễ dàng tạo ra các dịch vụ Web, sử dụng các

thành



phần COM hay CORBA,



hỗ



trợ



các



loại định



dạng dữ



liệu Internet như email, HTML, XML và các ngôn ngữ đánh dấu khác. Python

cũng được cung cấp các thư viện xử lý các giao thức Internet thông dụng

như HTTP,FTP,…

Python có khả năng giao tiếp đến hầu hết các loại cơ sở dữ liệu, có khả

năng xử lí văn bản, tài liệu hiệu quả, và có thể làm việc tốt với các công nghệ

Web khác.

Python đặc biệt hiệu quả trong lập trình tính toán khoa học nhờ các công

cụ Python Imaging Library, pyVTK, MayaVi 3D Visualization Toolkits,

Numeric Python, ScientificPython,…

Python có thể được sử dụng để phát triển các ứng dụng Desktop. Lập

trình viên có thể dùng wxPython, PyQt, PyGtk để phát triển các ứng dụng giao

diện đồ họa (GUI) chất lượng cao.

Python cũng có sẵn một unit testing framework để tạo ra các các bộ test

(test suites).



ĐỒ ÁN TỐT NGHIỆP



28



CHƯƠNG IV



CHƯƠNG IV

CẢM BIẾN SRF04 - MOTOR

SERVO - USB WIFI - SMAST CAR

L298 - PIN LIPO

4.1. Cảm biến SRF04:

4.1.1. Giới thiệu SRF04:

Cảm biến siêu âm Devantech SRF04 được sử dụng để thu các thông tin về

khoảng cách một cách chính xác trong dải từ 3cm đến 4m. Sensor này gồm bộ thu phát

siêu âm tách biệt, sensor có 4 chân nối trong đó hai chân cho nguồn nuôi, hai chân còn

lại một cho xung tín hiệu vào (Trigger Pulse Input), một cho tín hiệu ra (Echo Pulse

Output).



Hình 0.5 Mặt trước và sau của srf04.

SRF04 hoạt động thông qua việc truyền một xung âm thanh có tần số nằm

ngoài dải tần số nghe của con người. Xung này truyền ở tốc độ âm thanh khoảng

340m/giây, dưới dạng một chùm hình nón, âm thanh phản xạ trở lại tới đầu thu từ vật

thể bất kì trên đường đi của sóng siêu âm. Tín hiệu điện tại đầu thu có dạng các xung

với độ kéo dài xung phụ thuộc vào khoảng cách phản xạ kể từ vị trí vật tới đầu thu. Để

việc thu phát làm việc hiệu quả, bộ phát tạm ngừng phát sóng trong khoảng thời gian

siêu âm được truyền sau đó đợi tín hiệu phản xạ.



ĐỒ ÁN TỐT NGHIỆP



29



CHƯƠNG IV

Xung ở đầu ra của sensor được đưa tới chân GPIO của Pi. Việc xác định thời

gian kéo dài xung sẽ giúp cho chúng ta xác định được khoảng cách.

4.1.2. Thông số kỹ thuật:

















Điện áp sử dụng: 5VDC.

Dòng tiêu thụ: cực đại là: 50mA, thường là 30mA.

Vùng làm việc của sensor: phát hiện khoảng cách từ 3cm tới 4m.

Tần số sử dụng 40Khz.

Xung kích phát 10us mức cao tương thích TTL.

Xung phản xạ mức cao có độ rộng xung tỉ lệ với khoảng cách.

Góc mở của bộ phát : 300.



4.1.3. Nguyên lý hoạt động:

Tín hiệu xung kích phát siêu âm được giữ ở mức thấp (logic 0) và sau đó đưa

lên mức cao (logic 1) trong 10us để khởi phát xung siêu âm. Xung siêu âm được tạo ra

thông qua sườn xuống của tín hiệu lối vào. Sau khi được kích phát, sóng siêu âm sẽ

được phát ra trong 8 chu kì burst. Bộ nhận sẽ giữ khoảng trống trong khoảng thời gian

chừng 100us để tránh nhiễu, ồn từ các âm sắc nhọn của sự khởi phát và sau đó cho

phép nghe âm thanh phản xạ. Đường tín hiệu dội âm ở mức thấp cho đến khi cho phép

nhận âm thanh. Khi quá trình nhận được cho phép, bộ thu sẽ phát hiện sườn xuống của

tín hiệu dội âm (nếu có vật) hoặc timeout (vượt quá thời gian cho phép). Việc đo thời

gian được tiến hành từ sườn xuống của tín hiệu lối vào và kết thúc khi sườn xuống của

tín hiệu dội âm. Nếu không có vật được phát hiện xung phản xạ sẽ vượt quá thời gian

cỡ 36ms.

Độ chính xác của cảm biến siêu âm phụ thuộc lớn vào quá trình chúng ta lập

trình thu phát tín hiệu.

Nếu đo được chính xác khoảng thời gian và không có nhiễu thì mạch cảm biến

trả về giá trị cực kỳ chính xác.điều này phụ thuộc vào cách viết chương trình không sử

dụng các hàm delay.

Sóng siêu âm chỉ dội lại khi gặp một số vật cản nếu phát sóng vào các vật như

chăn, gối nệm thì sẽ không thu về được.



ĐỒ ÁN TỐT NGHIỆP



30



CHƯƠNG IV

Nếu phát sóng siêu âm vào những vật có khả năng phản xạ với sóng siêu âm

hoặc bề mặt bị nghiên thì sẽ dội về dữ liệu thời gian sai dẫn đến quá trình đo khoảng

cách và tính toán sai.

Vận tốc của sóng siêu âm là 340m/s.

4.2. Động cơ servo mini TowerPro SG90:



Hình 0.6 Động cơ servo mini TowerPro SG90.

Các TowerPro SG90 nhỏ servo có trọng lượng nhẹ, chất lượng cao và nhanh

như chớp. Servo được thiết kế để làm việc với hầu hết các hệ thống điều khiển vô

tuyến. Đó là với hiệu suất tuyệt vời sẽ đưa bạn đến một chân trời của các chuyến

bay. Các SG90 nhỏ servo với các phụ kiện hoàn hảo cho máy bay trực thăng R/C, máy

bay, xe hơi, thuyền và xe tải sử dụng.

4.2.1 Thông số kỹ thuật của động cơ servo SG90 9G:

Mô-men xoắn: 1.5kg/cm 4.8V.

Tốc độ chạy không tải: 0.3sec/60° 4.8V.

Dòng tiêu thụ: 200-500mA.

Kích thước: 23*12.2*29mm(dài*rộng*cao).

Trọng lượng: 9g.



ĐỒ ÁN TỐT NGHIỆP



31



CHƯƠNG IV

Loại bánh răng, vỏ: nhựa.

Tương thích với JR & Futaba.

Điện áp hoạt động: 4.2-6V.

Góc quay: 180°.

Chiều dài dây cáp Servo: 250mm.

Phạm vi ứng dụng: Máy bay trực, robot nhỏ, cánh tay robot và thuyền.

Chức năng của dây:

Nâu cáp: âm. Đỏ cáp: dương. Cam cáp: tín wire.

4.2.2 Nguyên lý hoạt động:

Động cơ servo mini TowerPro SG90 hoạt động bằng cách cấp xung vào chân

(dây mầu cam ). Tùy theo độ rộng cạnh lên của xung mà quyết định quay phải (180 0)

quay giữa ( 900) quay trái (00).



00



900



Xung cạnh lên: 0.5ms



1.5ms



1800

2.5ms



Hình 0.7 Các xung và các hướng xoay tương ứng của motor servo.

Chu kỳ xung: 20ms.

Khi động cơ quay với độ rộng xung tương ứng thì Động cơ servo mini

TowerPro SG90 quay đế vị trí tương ứng với độ rộng của xung cạnh lên thì sẽ không

quay nữa cho dù ta vẫn còn cấp xung cho nó.

4.3 USB WIFI TPLINK TLWM 727N:

( 150Mbps Wireless N USB Adapter TL-WN727N )



ĐỒ ÁN TỐT NGHIỆP



32



CHƯƠNG IV



Hình 0.8 Hình ảnh thực tế của 150Mbps Wireless N USB Adapter TL-WN727N

Wireless N USB Adapter TL-WN727N cho phép bạn kết nối một máy tính để

bàn hoặc máy tính xách tay với một mạng không dây và truy cập kết nối Internet tốc

độ cao. Tuân theo chuẩn IEEE 802.11n, họ cung cấp không dây tốc độ lên đến

150Mbps, đó là có lợi cho chơi game trực tuyến hay thậm chí cả video streaming. Trên

cơ sở công nghệ IEEE 802.11n, TL-WN727N cho thấy khả năng tuyệt vời hơn của

việc giảm thiểu mất mát dữ liệu trên một khoảng cách dài và qua những trở ngại trong

một văn phòng nhỏ hoặc một căn hộ lớn, thậm chí trong một tòa nhà thép và bê tông.

Trên tất cả, bạn có thể dễ dàng nhận mạng không dây kết nối trong thời gian dài

mà các sản phẩm di sản 11g có thể không. Kênh Đánh giá Clear (CCA) tự động tránh

xung đột kênh bằng cách sử dụng tính năng lựa chọn kênh rõ ràng và đầy đủ nhận ra

những lợi thế của kênh liên kết, tăng cường rất nhiều hiệu suất không dây. Tốc độ

không dây N lên đến 150Mbps làm cho nó lý tưởng cho video, chơi game trực tuyến

và các cuộc gọi internet. Dễ dàng thiết lập một liên kết không dây bảo mật cao tại một

ấn nút QSS.

Wireless N USB Adapter TL-WN727N



hỗ trợ 64/128 WEP, WPA/



WPA2/WPA-PSK/WPA2-PSK (TKIP / AES), hỗ trợ chuẩn IEEE 802.1X. Hỗ trợ

Windows 8 32/64bits, Windows 7 32/64bits, 32/64bits Vista, Windows XP 32/64bits.

Hỗ trợ ad-hoc và chế độ cơ sở hạ tầng. Hỗ trợ Sony PSP X-Link để chơi game trực

tuyến vui vẻ cho Windows XP. Tiện ích đi kèm cung cấp nhanh chóng và rắc rối miễn

phí cài đặt. Liền mạch tương thích với các sản phẩm 802.11n/b/g. Sử dụng chuẩn kết

nối USB 2.0.



ĐỒ ÁN TỐT NGHIỆP



33