مهدی اشراقی
طراح و مهندس شبکه های کامپیوتری ، برنامه نویس
مهدی اشراقی
طراح و مهندس شبکه های کامپیوتری ، برنامه نویس

نوشته های بلاگ

نحوه استفاده از پین های رسپری پای در پایتون

نحوه استفاده از پین های رسپری پای در پایتون

سلام. در این پست قصد دارم آموزش بدم که روی raspberry Pi تحت سیستم عامل Linux Ubuntu چطوری میتونید از GPIO ها یا پایه های برد خودتون در python استفاده کنید .

در پست های قبل توضیح دادم که چطور میتونید روی Raspberry PI خودتون Ubuntu Linux نصب کنید . در این پست نصب کتابخانه رو یاد میگیریم و با چند مثال ساده یه برنامه مینویستم .اگر شما هم برنامه ای برای اولین بار نوشتید اعلام کنید تا به اسم خودتون تو سایت بزارمش .

  • این مقاله هنوز در مرحله ترجمه و ویرایش میباشد.

نصب کتایخانه :

https://sourceforge.net/p/raspberry-gpio-python/wiki/Home/

اول باید کتابخانه پایتون رو نصب کنیم .

 

کتابخانه تخصصی (برنامه نویسان ارشد ):

اگر احتیاج به کتابخانه های تخصصی هم داشتید میتونید از این دستورات استفاده کنید که اگر استقبال شد بعدا این پست رو درست میکنم.

حذف کتابخانه :

برای حذف کتابخانه ها میتونید از دستورات زیر استفاده کنید :

دستورات :

فراخانی کتابخانه :

برای استفاده از این کتابخانه باید حتما در ابتدای برنامه اون رو فراخونی کنید .

شماره پایه ها :

پایه های gpio در رسپبری پای

برای فراخونی پایه ها ۲ روش متفاوت وجود داره .

  1. ساختار شماره پایه ها مشخص شده برای برد (توضیه شده ) ،این شماره ها همون شماره های استفاده شده بر روی برد هاست که از ۱ تا ۴۰ هست و استفاده از اون خیلی راحته
  2. ساختار BCM ،در این روش که برای برنامه های سطح پایین (برعکس اسمش اصلا سطح پایین نیست D: )استفاده میشه به جای شماره پایه از شماره کانال استفاده میشه .

مثال :

To specify which you are using using (mandatory):

To detect which pin numbering system has been set (for example, by another Python module):

The mode will be GPIO.BOARD, GPIO.BCM or None

Warnings

It is possible that you have more than one script/circuit on the GPIO of your Raspberry Pi. As a result of this, if RPi.GPIO detects that a pin has been configured to something other than the default (input), you get a warning when you try to configure a script. To disable these warnings:

Setup up a channel

You need to set up every channel you are using as an input or an output. To configure a channel as an input:

(where channel is the channel number based on the numbering system you have specified (BOARD or BCM)).

More advanced information about setting up input channels can be found here.

To set up a channel as an output:

(where channel is the channel number based on the numbering system you have specified (BOARD or BCM)).

You can also specify an initial value for your output channel:

Setup more than one channel

You can set up more than one channel per call (release 0.5.8 onwards). For example:

Input

To read the value of a GPIO pin:

(where channel is the channel number based on the numbering system you have specified (BOARD or BCM)). This will return either 0 / GPIO.LOW / False or 1 / GPIO.HIGH / True.

Output

To set the output state of a GPIO pin:

(where channel is the channel number based on the numbering system you have specified (BOARD or BCM)).

State can be 0 / GPIO.LOW / False or 1 / GPIO.HIGH / True.

Output to several channels

You can output to many channels in the same call (release 0.5.8 onwards). For example:

Cleanup

At the end any program, it is good practice to clean up any resources you might have used. This is no different with RPi.GPIO. By returning all channels you have used back to inputs with no pull up/down, you can avoid accidental damage to your RPi by shorting out the pins. Note that this will only clean up GPIO channels that your script has used. Note that GPIO.cleanup() also clears the pin numbering system in use.

To clean up at the end of your script:

It is possible that don’t want to clean up every channel leaving some set up when your program exits. You can clean up individual channels, a list or a tuple of channels:

RPi Board Information and RPi.GPIO version

To discover information about your RPi:

To discover the Raspberry Pi board revision:

To discover the version of RPi.GPIO:

ورودی در GPIO

There are several ways of getting GPIO input into your program. The first and simplest way is to check the input value at a point in time. This is known as ‘polling’ and can potentially miss an input if your program reads the value at the wrong time. Polling is performed in loops and can potentially be processor intensive. The other way of responding to a GPIO input is using ‘interrupts’ (edge detection). An edge is the name of a transition from HIGH to LOW (falling edge) or LOW to HIGH (rising edge).

Pull up / Pull down resistors

If you do not have the input pin connected to anything, it will ‘float’. In other words, the value that is read in is undefined because it is not connected to anything until you press a button or switch. It will probably change value a lot as a result of receiving mains interference.

To get round this, we use a pull up or a pull down resistor. In this way, the default value of the input can be set. It is possible to have pull up/down resistors in hardware and using software. In hardware, a 10K resistor between the input channel and 3.3V (pull-up) or 0V (pull-down) is commonly used. The RPi.GPIO module allows you to configure the Broadcom SOC to do this in software:

(where channel is the channel number based on the numbering system you have specified – BOARD or BCM).

Testing inputs (polling)

You can take a snapshot of an input at a moment in time:

To wait for a button press by polling in a loop:

(this assumes that pressing the button changes the input from LOW to HIGH)

خروجی در GPIO :

۱. First set up RPi.GPIO (as described here)

۲. To set an output high:

۳. To set an output low:

۴. To output to several channels at the same time:

۵. Clean up at the end of your program

Note that you can read the current state of a channel set up as an output using the input() function. For example to toggle an output:

استفاده از PWM

برای ساخت سیگنال PWM از این دستور میتوانید استفاده کنید .

برای شروع ایجاد سیگنال PWM :

تغییر فرکانس خروجی :

برای تغییر چرخه کار ( duty cycle ) از دستور زیر استفاده کنید .

توقف سیگنال pwm :

با اجرای دستور فوق ارسال دستور PWM متوقف میشود .

مثال : چشمک LED یه مرتبه در هر ۲ ثانیه :

 

مثال :برای تغییر نور LED به وسیله سیگنال PWM :

 

 

 

 

منبع : https://sourceforge.net/p/raspberry-gpio-python/wiki/Home/

برچسب ها:
درج دیدگاه