M5Unit-HUB 0.2.1 git rev:9518267
Loading...
Searching...
No Matches
m5::unit::UnitPbHub Class Reference

PbHub unit. More...

#include <unit_PbHub.hpp>

Inheritance diagram for m5::unit::UnitPbHub:

Public Member Functions

 UnitPbHub (const uint8_t addr=DEFAULT_ADDRESS)
 
virtual bool begin () override
 
uint8_t firmwareVersion () const
 Get the firmware version.
 
bool readFirmwareVersion (uint8_t &ver)
 Read the firmware version.
 
bool changeI2CAddress (const uint8_t addr)
 Change device I2C address.
 
Digital R/W
bool writeDigital0 (const uint8_t ch, const bool high)
 Write digital 0 to a specific channel.
 
bool writeDigital1 (const uint8_t ch, const bool high)
 Write digital 1 to a specific channel.
 
bool readDigital0 (bool &high, const uint8_t ch)
 Read digital 0 from a specific channel.
 
bool readDigital1 (bool &high, const uint8_t ch)
 Read digital 0 from a specific channel.
 
Analog write
Warning
Function in PbHub
bool writeAnalog0 (const uint8_t ch, const uint8_t val)
 Write analog 0 to a specific channel.
 
bool writeAnalog1 (const uint8_t ch, const uint8_t val)
 Write analog 1 to a specific channel.
 
Analog read
bool readAnalog0 (uint16_t &val, const uint8_t ch)
 Read analog 0 from a specific channel.
 
PWM
Warning
Function in v1.1 or later
bool writePWM0 (const uint8_t ch, const uint8_t pwm)
 Write PWN 0 to a specific channel.
 
bool writePWM1 (const uint8_t ch, const uint8_t pwm)
 Write PWN 1 to a specific channel.
 
bool readPWM0 (uint8_t &pwm, const uint8_t ch)
 Read PWN 0 from a specific channel.
 
bool readPWM1 (uint8_t &pwm, const uint8_t ch)
 Read PWN 0 from a specific channel.
 
LED
Warning
Function in v1.1 or later
bool writeLEDCount (const uint8_t ch, const uint16_t num)
 Write the number of the LED to a specific channel.
 
bool writeLEDColor (const uint8_t ch, const uint16_t index, const uint32_t rgb888)
 Write the LED color to a specific channel.
 
bool fillLEDColor (const uint8_t ch, const uint32_t rgb888, const uint16_t first=0, const uint16_t count=0)
 Fill the LED color to a specific channel.
 
bool writeLEDBrightness (const uint8_t ch, const uint8_t value)
 Write the LED brightness to a specific channel.
 
bool writeLEDMode (const pbhub::LEDMode m)
 Write the LED control mode.
 
bool readLEDMode (pbhub::LEDMode &m)
 Read the LED control mode.
 
Servo
Warning
Function in v1.1 or later
Note
angle valid range between 0 and 180
pulse valid range between 500 and 2500
bool writeServo0Angle (const uint8_t ch, const uint8_t angle)
 Write servo 0 angle to a specific channel.
 
bool writeServo1Angle (const uint8_t ch, const uint8_t angle)
 Write servo 1 angle to a specific channel.
 
bool writeServo0Pulse (const uint8_t ch, const uint16_t pulse)
 Write servo 0 pulse to a specific channel.
 
bool writeServo1Pulse (const uint8_t ch, const uint16_t pulse)
 Write servo 1 pulse to a specific channel.
 
bool readServo0Angle (uint8_t &angle, const uint8_t ch)
 Read servo 0 angle from a specific channel.
 
bool readServo1Angle (uint8_t &angle, const uint8_t ch)
 Read servo 1 angle from a specific channel.
 
bool readServo0Pulse (uint16_t &pulse, const uint8_t ch)
 Read servo 0 pulse from a specific channel.
 
bool readServo1Pulse (uint16_t &pulse, const uint8_t ch)
 Read servo 1 pulse from a specific channel.
 

Static Public Attributes

static constexpr uint8_t MAX_CHANNEL {6}
 
static constexpr uint8_t MAX_LED_COUNT {74}
 

Protected Member Functions

virtual std::shared_ptr< Adapter > ensure_adapter (const uint8_t ch) override
 
bool write_digital (const uint8_t ch, const uint8_t index, const bool high)
 
bool read_digital (const uint8_t ch, const uint8_t index, bool &high)
 
bool write_analog (const uint8_t ch, const uint8_t index, const uint8_t val)
 
bool write_pwm (const uint8_t ch, const uint8_t index, const uint8_t val)
 
bool read_pwm (const uint8_t ch, const uint8_t index, uint8_t &val)
 
bool write_servo_angle (const uint8_t ch, const uint8_t index, const uint8_t angle)
 
bool read_servo_angle (const uint8_t ch, const uint8_t index, uint8_t &angle)
 
bool write_servo_pulse (const uint8_t ch, const uint8_t index, const uint16_t angle)
 
bool read_servo_pulse (const uint8_t ch, const uint8_t index, uint16_t &angle)
 
bool is_firmware_2_or_later () const
 
bool is_pbhub () const
 
bool is_pbhub_v11 () const
 

Detailed Description

PbHub unit.

Note
Automatic identification of PbHub and PbHub v1.1
Warning
Not all Units with a black interface (PortB) support expansion through PbHUB.
PbHUB can only be applied to basic single-bus communication, through the I2C protocol
to achieve basic digital read and write, analog Read and write.
But for units such as Weight (built-in HX711) that not only need to read analog,
but also depend on the timing of the Unit, PbHUB cannot be expanded.

Member Function Documentation

◆ changeI2CAddress()

bool m5::unit::UnitPbHub::changeI2CAddress ( const uint8_t addr)

Change device I2C address.

Parameters
addrI2C address
Returns
True if successful
Warning
Handling warning
Function in v1.1 or later

◆ fillLEDColor()

bool m5::unit::UnitPbHub::fillLEDColor ( const uint8_t ch,
const uint32_t rgb888,
const uint16_t first = 0,
const uint16_t count = 0 )

Fill the LED color to a specific channel.

Parameters
chChannel
rgb88800000000RRRRRRRRGGGGGGGGBBBBBBBB 24bits color
firstFirst position of the LEDs
countNumber of pixels to fill (To the end if zero)
Returns
True if successful

◆ firmwareVersion()

uint8_t m5::unit::UnitPbHub::firmwareVersion ( ) const
inline

Get the firmware version.

Return values
==0 No firmware version (means PbHub)
==0xFF Not determined because begin() has not been called.
!=0&& !=0xFF Firmware version (means PbHub v1.1)

◆ readAnalog0()

bool m5::unit::UnitPbHub::readAnalog0 ( uint16_t & val,
const uint8_t ch )

Read analog 0 from a specific channel.

Parameters
[out]val0-1023(PbHub) 0-4095(PbHub v1.1)
chChannel
Returns
True if successful

◆ readDigital0()

bool m5::unit::UnitPbHub::readDigital0 ( bool & high,
const uint8_t ch )
inline

Read digital 0 from a specific channel.

Parameters
[out]highHIGH if true, LOW if false
chChannel
Returns
True if successful

◆ readDigital1()

bool m5::unit::UnitPbHub::readDigital1 ( bool & high,
const uint8_t ch )
inline

Read digital 0 from a specific channel.

Parameters
[out]highHIGH if true, LOW if false
chChannel
Returns
True if successful

◆ readFirmwareVersion()

bool m5::unit::UnitPbHub::readFirmwareVersion ( uint8_t & ver)

Read the firmware version.

Parameters
[out]ver
Returns
True if successful
Warning
Function in v1.1 or later

◆ readLEDMode()

bool m5::unit::UnitPbHub::readLEDMode ( pbhub::LEDMode & m)

Read the LED control mode.

Parameters
[out]mLEDMode
Returns
True if successful
Warning
Function in PbHub v1.1 firmware version 2 or later

◆ readPWM0()

bool m5::unit::UnitPbHub::readPWM0 ( uint8_t & pwm,
const uint8_t ch )
inline

Read PWN 0 from a specific channel.

Parameters
[out]pwmPWM value
chChannel
Returns
True if successful

◆ readPWM1()

bool m5::unit::UnitPbHub::readPWM1 ( uint8_t & pwm,
const uint8_t ch )
inline

Read PWN 0 from a specific channel.

Parameters
[out]pwmPWM value
chChannel
Returns
True if successful

◆ readServo0Angle()

bool m5::unit::UnitPbHub::readServo0Angle ( uint8_t & angle,
const uint8_t ch )
inline

Read servo 0 angle from a specific channel.

Parameters
[out]angleAngle value
chChannel
Returns
True if successful

◆ readServo0Pulse()

bool m5::unit::UnitPbHub::readServo0Pulse ( uint16_t & pulse,
const uint8_t ch )
inline

Read servo 0 pulse from a specific channel.

Parameters
[out]pulsePulse value
chChannel
Returns
True if successful

◆ readServo1Angle()

bool m5::unit::UnitPbHub::readServo1Angle ( uint8_t & angle,
const uint8_t ch )
inline

Read servo 1 angle from a specific channel.

Parameters
[out]angleAngle value
chChannel
Returns
True if successful

◆ readServo1Pulse()

bool m5::unit::UnitPbHub::readServo1Pulse ( uint16_t & pulse,
const uint8_t ch )
inline

Read servo 1 pulse from a specific channel.

Parameters
[out]pulsePulse value
chChannel
Returns
True if successful

◆ writeAnalog0()

bool m5::unit::UnitPbHub::writeAnalog0 ( const uint8_t ch,
const uint8_t val )
inline

Write analog 0 to a specific channel.

Parameters
chChannel
valValue
Returns
True if successful

◆ writeAnalog1()

bool m5::unit::UnitPbHub::writeAnalog1 ( const uint8_t ch,
const uint8_t val )
inline

Write analog 1 to a specific channel.

Parameters
chChannel
valValue
Returns
True if successful

◆ writeDigital0()

bool m5::unit::UnitPbHub::writeDigital0 ( const uint8_t ch,
const bool high )
inline

Write digital 0 to a specific channel.

Parameters
chChannel
highHIGH if true, LOW if false
Returns
True if successful

◆ writeDigital1()

bool m5::unit::UnitPbHub::writeDigital1 ( const uint8_t ch,
const bool high )
inline

Write digital 1 to a specific channel.

Parameters
chChannel
highHIGH if true, LOW if false
Returns
True if successful

◆ writeLEDBrightness()

bool m5::unit::UnitPbHub::writeLEDBrightness ( const uint8_t ch,
const uint8_t value )

Write the LED brightness to a specific channel.

Parameters
chChannel
value0-255
Returns
True if successful

◆ writeLEDColor()

bool m5::unit::UnitPbHub::writeLEDColor ( const uint8_t ch,
const uint16_t index,
const uint32_t rgb888 )

Write the LED color to a specific channel.

Parameters
chChannel
indexLED index
rgb88800000000RRRRRRRRGGGGGGGGBBBBBBBB 24bits color
Returns
True if successful

◆ writeLEDCount()

bool m5::unit::UnitPbHub::writeLEDCount ( const uint8_t ch,
const uint16_t num )

Write the number of the LED to a specific channel.

Parameters
chChannel
numNumber of th LED
Returns
True if successful
Warning
Maximum LED is 74 for each channel

◆ writeLEDMode()

bool m5::unit::UnitPbHub::writeLEDMode ( const pbhub::LEDMode m)

Write the LED control mode.

Parameters
mLEDMode
Returns
True if successful
Warning
Settings common to all channels
Function in PbHub v1.1 firmware version 2 or later

◆ writePWM0()

bool m5::unit::UnitPbHub::writePWM0 ( const uint8_t ch,
const uint8_t pwm )
inline

Write PWN 0 to a specific channel.

Parameters
chChannel
pwmPWM value
Returns
True if successful

◆ writePWM1()

bool m5::unit::UnitPbHub::writePWM1 ( const uint8_t ch,
const uint8_t pwm )
inline

Write PWN 1 to a specific channel.

Parameters
chChannel
pwmPWM value
Returns
True if successful

◆ writeServo0Angle()

bool m5::unit::UnitPbHub::writeServo0Angle ( const uint8_t ch,
const uint8_t angle )
inline

Write servo 0 angle to a specific channel.

Parameters
chChannel
angleAngle value
Returns
True if successful

◆ writeServo0Pulse()

bool m5::unit::UnitPbHub::writeServo0Pulse ( const uint8_t ch,
const uint16_t pulse )
inline

Write servo 0 pulse to a specific channel.

Parameters
chChannel
pulsePulse value
Returns
True if successful

◆ writeServo1Angle()

bool m5::unit::UnitPbHub::writeServo1Angle ( const uint8_t ch,
const uint8_t angle )
inline

Write servo 1 angle to a specific channel.

Parameters
chChannel
angleAngle value
Returns
True if successful

◆ writeServo1Pulse()

bool m5::unit::UnitPbHub::writeServo1Pulse ( const uint8_t ch,
const uint16_t pulse )
inline

Write servo 1 pulse to a specific channel.

Parameters
chChannel
pulsePulse value
Returns
True if successful