mirror of
https://github.com/CopterExpress/clover.git
synced 2026-05-26 21:19:35 +00:00
docs: add article on GPIO
This commit is contained in:
@@ -47,6 +47,7 @@
|
||||
* [Камера \(компьютерное зрение\)](camera.md)
|
||||
* [Светодиодная лента](leds.md)
|
||||
* [Визуализация с помощью rviz](rviz.md)
|
||||
* [Работа с GPIO](gpio.md)
|
||||
* [Ультразвуковой дальномер](sonar.md)
|
||||
* [Лазерный дальномер](laser.md)
|
||||
* [Работа с SITL](sitl.md)
|
||||
|
||||
94
docs/ru/gpio.md
Normal file
94
docs/ru/gpio.md
Normal file
@@ -0,0 +1,94 @@
|
||||
# Работа с GPIO
|
||||
|
||||
GPIO (General-Purpose Input/Output) – это тип пинов на Raspberry Pi, напряжение на которых можно программно подавать и измерять. Также на этих пинах реализован аппаратный <abbr title="Широтно-импульсная модуляция">ШИМ</abbr> (<abbr title="Pulse-width modulation">PWM</abbr>).
|
||||
|
||||
> **Info** Используйте [распиновку](https://pinout.xyz), чтобы понять, какие из пинов на Raspberry Pi поддерживают GPIO.
|
||||
|
||||
Для работы с GPIO на [образе для RPi](microsd_images.md) предустановлена библиотека [`pigpio`](http://abyz.me.uk/rpi/pigpio/). Чтобы взаимодействовать с этой библиотекой запустите соответствующий демон:
|
||||
|
||||
```bash
|
||||
sudo systemctl start pigpiod.service
|
||||
```
|
||||
|
||||
Для включение автозапуска демона `pigpiod` используйте команду:
|
||||
|
||||
```bash
|
||||
sudo systemctl enable pigpiod.service
|
||||
```
|
||||
|
||||
Пример работы с библиотекой:
|
||||
|
||||
```python
|
||||
import time
|
||||
import pigpio
|
||||
|
||||
# инициализируем подключение к pigpiod
|
||||
pi = pigpio.pi()
|
||||
|
||||
# устанавливаем режим 11 пина на вывод
|
||||
pi.set_mode(11, pigpio.OUTPUT)
|
||||
|
||||
# включаем сигнал на 11 пине
|
||||
pi.write(11, 1)
|
||||
|
||||
time.sleep(2)
|
||||
|
||||
# отключаем сигнал на 11 пине
|
||||
pi.write(11, 0)
|
||||
|
||||
# ...
|
||||
|
||||
# устанавливаем режим 12 пина на ввод
|
||||
pi.set_mode(12, pigpio.INPUT)
|
||||
|
||||
# считываем состояние 12 пина
|
||||
level = pi.read(12)
|
||||
```
|
||||
|
||||
Для определения номера пина используйте [распиновку Raspberry Pi](https://pinout.xyz).
|
||||
|
||||
## Подключение сервоприводов
|
||||
|
||||
Большинство сервоприводов управляются с помощью ШИМ сигнала, причем крайним положениям привода соответствуют сигналы шириной приблизительно 1000 и 2000 мкс. Значения для конкретного сервопривода могут быть выяснены экспериментально.
|
||||
|
||||
Подключите сигнальный провод сервопривода к одному из GPIO-пинов Raspberry. Для управления сервоприводом, подключенного к 13 пину, используйте такой код:
|
||||
|
||||
```python
|
||||
import time
|
||||
import pigpio
|
||||
|
||||
# устанавливаем режим 13 пина на вывод
|
||||
pi.set_mode(13, pigpio.OUTPUT)
|
||||
|
||||
# устанавливаем на 13 пине ШИМ сигнал в 1000 мкс
|
||||
pi.set_servo_pulsewidth(13, 1000)
|
||||
|
||||
time.sleep(2)
|
||||
|
||||
# устанавливаем на 13 пине ШИМ сигнал в 2000 мкс
|
||||
pi.set_servo_pulsewidth(13, 2000)
|
||||
```
|
||||
|
||||
## Подключение электромагнита
|
||||
|
||||
<!-- TODO схема -->
|
||||
|
||||
Для подключения электромагнита используйте MOSFET-транзистор. Подключите транзистор к одному из GPIO-пинов Raspberry Pi. Для управления магнитом, подключенным к 15 пину, используйте такой код:
|
||||
|
||||
```python
|
||||
import time
|
||||
import pigpio
|
||||
|
||||
pi = pigpio.pi()
|
||||
|
||||
# устанавливаем режим 15 пина на вывод
|
||||
pi.set_mode(15, pigpio.OUTPUT)
|
||||
|
||||
# включаем электромагнит
|
||||
pi.write(15, 1)
|
||||
|
||||
time.sleep(2)
|
||||
|
||||
# отключаем электромагнит
|
||||
pi.write(15, 0)
|
||||
```
|
||||
Reference in New Issue
Block a user