pca9685

package
v0.0.0-...-d6d722d Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 1, 2025 License: MIT Imports: 9 Imported by: 0

Documentation

Overview

pca9685.go

Index

Constants

View Source
const (
	// Регистр MODE1
	RegMode1     = 0x00
	Mode1Sleep   = 0x10
	Mode1AutoInc = 0x20
	Mode1Restart = 0x80
	Mode1AllCall = 0x01

	// Регистр MODE2
	RegMode2    = 0x01
	Mode2OutDrv = 0x04
	Mode2Invrt  = 0x10
	Mode2OutNe  = 0x01

	// Регистр для каналов LED
	RegLed0     = 0x06
	RegAllLed   = 0xFA
	RegPrescale = 0xFE

	// Константы
	PwmResolution = 4096
	MinFrequency  = 24
	MaxFrequency  = 1526
	OscClock      = 25000000 // 25 МГц
)

Variables

This section is empty.

Functions

This section is empty.

Types

type Channel

type Channel struct {
	// contains filtered or unexported fields
}

Channel представляет один PWM канал.

type Config

type Config struct {
	InitialFreq float64         // Начальная частота PWM (от 24 до 1526 Гц)
	InvertLogic bool            // Инвертировать выходную логику
	OpenDrain   bool            // Использовать open-drain выходы
	Context     context.Context // Контекст для отмены операций
	Logger      Logger          // Логгер. Если nil, будет использован стандартный.
	LogLevel    LogLevel        // Уровень логирования.
}

Config содержит настройки для инициализации PCA9685.

func DefaultConfig

func DefaultConfig() *Config

DefaultConfig возвращает конфигурацию по умолчанию.

type I2C

type I2C interface {
	WriteReg(reg uint8, data []byte) error
	ReadReg(reg uint8, data []byte) error
	Close() error
}

I2C – минимальный интерфейс для работы с I²C устройствами.

type I2CAdapterD2r2

type I2CAdapterD2r2 struct {
	// contains filtered or unexported fields
}

I2CAdapterD2r2 оборачивает объект *i2c.I2C из библиотеки d2r2/go-i2c.

func NewI2CAdapterD2r2

func NewI2CAdapterD2r2(dev *i2c.I2C) *I2CAdapterD2r2

NewI2CAdapterD2r2 создаёт новый адаптер для d2r2/go-i2c.

func (*I2CAdapterD2r2) Close

func (a *I2CAdapterD2r2) Close() error

func (*I2CAdapterD2r2) ReadReg

func (a *I2CAdapterD2r2) ReadReg(reg uint8, data []byte) error

func (*I2CAdapterD2r2) WriteReg

func (a *I2CAdapterD2r2) WriteReg(reg uint8, data []byte) error

type I2CAdapterPeriph

type I2CAdapterPeriph struct {
	// contains filtered or unexported fields
}

I2CAdapterPeriph реализует работу с I2C через periph.io.

func NewI2CAdapterPeriph

func NewI2CAdapterPeriph(dev *periph_i2c.Dev) *I2CAdapterPeriph

NewI2CAdapterPeriph создаёт новый адаптер для periph.io.

func (*I2CAdapterPeriph) Close

func (a *I2CAdapterPeriph) Close() error

func (*I2CAdapterPeriph) ReadReg

func (a *I2CAdapterPeriph) ReadReg(reg uint8, data []byte) error

func (*I2CAdapterPeriph) WriteReg

func (a *I2CAdapterPeriph) WriteReg(reg uint8, data []byte) error

type LogLevel

type LogLevel int
const (
	// LogLevelBasic – базовый уровень логирования (выводятся только важные сообщения)
	LogLevelBasic LogLevel = iota
	// LogLevelDetailed – подробный уровень логирования (выводятся все сообщения)
	LogLevelDetailed
)

type Logger

type Logger interface {
	Basic(msg string, args ...interface{})
	Detailed(msg string, args ...interface{})
	Error(msg string, args ...interface{})
}

Logger – минимальный интерфейс для логирования.

func NewDefaultLogger

func NewDefaultLogger(level LogLevel) Logger

NewDefaultLogger создаёт новый логгер с указанным уровнем.

type PCA9685

type PCA9685 struct {
	Freq float64
	// contains filtered or unexported fields
}

PCA9685 представляет контроллер PCA9685.

func New

func New(dev I2C, config *Config) (*PCA9685, error)

New создаёт новый экземпляр PCA9685 с указанной конфигурацией.

func (*PCA9685) Close

func (pca *PCA9685) Close() error

Close освобождает ресурсы и закрывает устройство.

func (*PCA9685) DisableChannels

func (pca *PCA9685) DisableChannels(channels ...int) error

DisableChannels выключает указанные каналы.

func (*PCA9685) DumpState

func (pca *PCA9685) DumpState() string

DumpState возвращает строку с текущим состоянием контроллера (частота и состояние каналов).

func (*PCA9685) EnableAllCall

func (pca *PCA9685) EnableAllCall() error

EnableAllCall включает режим All Call.

func (*PCA9685) EnableChannels

func (pca *PCA9685) EnableChannels(channels ...int) error

EnableChannels включает указанные каналы.

func (*PCA9685) FadeChannel

func (pca *PCA9685) FadeChannel(ctx context.Context, channel int, start, end uint16, duration time.Duration) error

FadeChannel плавно изменяет значение PWM для указанного канала от start до end за duration.

func (*PCA9685) GetChannelState

func (pca *PCA9685) GetChannelState(channel int) (enabled bool, on, off uint16, err error)

GetChannelState возвращает состояние канала: включён ли, и текущие значения on/off.

func (*PCA9685) Reset

func (pca *PCA9685) Reset() error

Reset инициализирует устройство с настройками по умолчанию.

func (*PCA9685) SetAllPWM

func (pca *PCA9685) SetAllPWM(ctx context.Context, on, off uint16) error

SetAllPWM устанавливает одинаковые значения PWM для всех каналов.

func (*PCA9685) SetMultiPWM

func (pca *PCA9685) SetMultiPWM(ctx context.Context, settings map[int]struct{ On, Off uint16 }) error

SetMultiPWM устанавливает значения PWM для нескольких каналов.

func (*PCA9685) SetPWM

func (pca *PCA9685) SetPWM(ctx context.Context, channel int, on, off uint16) error

SetPWM устанавливает значения PWM для указанного канала.

func (*PCA9685) SetPWMFreq

func (pca *PCA9685) SetPWMFreq(freq float64) error

SetPWMFreq устанавливает частоту PWM в герцах (от 24 до 1526 Гц).

type Pump

type Pump struct {
	MinSpeed uint16
	MaxSpeed uint16
	// contains filtered or unexported fields
}

Pump представляет управление насосом.

func NewPump

func NewPump(pca *PCA9685, channel int, opts ...PumpOption) (*Pump, error)

NewPump создает новый контроллер насоса. При создании насоса проверяется корректность номера канала и опционально применяются опции (например, установка ограничений скорости).

func (*Pump) GetCurrentSpeed

func (p *Pump) GetCurrentSpeed() (float64, error)

GetCurrentSpeed возвращает текущую скорость насоса в процентах.

func (*Pump) SetSpeed

func (p *Pump) SetSpeed(ctx context.Context, percent float64) error

SetSpeed устанавливает скорость насоса в процентах (0–100%).

func (*Pump) SetSpeedLimits

func (p *Pump) SetSpeedLimits(min, max uint16) error

SetSpeedLimits устанавливает новые ограничения скорости.

func (*Pump) Stop

func (p *Pump) Stop(ctx context.Context) error

Stop останавливает насос, устанавливая скорость 0%.

type PumpOption

type PumpOption func(*Pump)

PumpOption определяет опцию конфигурации насоса.

func WithSpeedLimits

func WithSpeedLimits(min, max uint16) PumpOption

WithSpeedLimits устанавливает минимальную и максимальную скорости насоса.

type RGBCalibration

type RGBCalibration struct {
	RedMin, RedMax     uint16
	GreenMin, GreenMax uint16
	BlueMin, BlueMax   uint16
}

RGBCalibration содержит калибровочные данные для RGB светодиода.

func DefaultRGBCalibration

func DefaultRGBCalibration() RGBCalibration

DefaultRGBCalibration возвращает калибровку по умолчанию.

type RGBLed

type RGBLed struct {
	// contains filtered or unexported fields
}

RGBLed представляет RGB светодиод, управляемый через контроллер PCA9685.

func NewRGBLed

func NewRGBLed(pca *PCA9685, red, green, blue int) (*RGBLed, error)

NewRGBLed создает новый RGB светодиод на указанных каналах (от 0 до 15).

func (*RGBLed) GetBrightness

func (l *RGBLed) GetBrightness() float64

GetBrightness возвращает текущую яркость.

func (*RGBLed) GetCalibration

func (l *RGBLed) GetCalibration() RGBCalibration

GetCalibration возвращает текущие калибровочные данные.

func (*RGBLed) Off

func (l *RGBLed) Off(ctx context.Context) error

Off выключает все каналы светодиода.

func (*RGBLed) On

func (l *RGBLed) On(ctx context.Context) error

On включает все каналы светодиода.

func (*RGBLed) SetBrightness

func (l *RGBLed) SetBrightness(brightness float64) error

SetBrightness устанавливает яркость (от 0.0 до 1.0).

func (*RGBLed) SetCalibration

func (l *RGBLed) SetCalibration(cal RGBCalibration)

SetCalibration устанавливает калибровочные данные для светодиода.

func (*RGBLed) SetColor

func (l *RGBLed) SetColor(ctx context.Context, r, g, b uint8) error

SetColor устанавливает цвет светодиода (значения RGB от 0 до 255).

func (*RGBLed) SetColorStdlib

func (l *RGBLed) SetColorStdlib(ctx context.Context, c color.Color) error

SetColorStdlib устанавливает цвет с использованием стандартного пакета color.

type TestI2C

type TestI2C struct {
	// contains filtered or unexported fields
}

TestI2C представляет адаптер-эмулятор I2C для MacOS/Windows или тестового устройства.

func NewTestI2C

func NewTestI2C() *TestI2C

NewTestI2C создаёт новый адаптер-эмулятор I2C.

func (*TestI2C) Close

func (t *TestI2C) Close() error

Close эмулирует закрытие устройства (ничего не делает).

func (*TestI2C) ReadReg

func (t *TestI2C) ReadReg(reg uint8, data []byte) error

ReadReg эмулирует чтение из регистра. Если значение не найдено, возвращает нули.

func (*TestI2C) WriteReg

func (t *TestI2C) WriteReg(reg uint8, data []byte) error

WriteReg эмулирует запись в регистр, сохраняя данные в памяти.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL