Source code for nextion.nextion_gpio

#!/usr/bin/env python3
# -*- coding: UTF-8 -*-

"""
NexGpio

Functions to interact with Nextion GPIOs
"""

# system packages
from time import sleep

# custom packages
from .common import Common


[docs]class NexGpioError(Exception): """Base class for exceptions in this module.""" pass
[docs]class NexGpio(Common): """docstring for NexGpio""" INPUT_PULL_UP = 0 # set pin as pull up input OUTPUT = 2 # set pin as push pull output INPUT_BINDING = 1 # bind Nextion element to falling edge of signal PWM = 3 # set pin as PWM output (only GPIO4 and GPIO7) def __init__(self, nh) -> None: """ Init GPIO :param nh: The Nextion hardware interface object :type nh: NexHardware """ super().__init__(nh, pid=-1, cid=-1, name="gpio")
[docs] def pin_mode(self, port: int, mode: int, control_id: int = 0) -> bool: """ Set GPIO mode :param port: The GPIO port number :type port: int :param mode: The GPIO port mode 0 - Pull on the input 1 - the control input binding 2 - Push-pull output 3 - pwm output 4 - open mode leakage :type mode: int :param control_id: The bound CID of other nextion element :type control_id: int :returns: True on success, false otherwise :rtype: bool """ cmd = "cfgpio {},{},{}".format(port, mode, control_id) self._nh.sendCommand(cmd) return self._nh.recvRetCommandFinished()
[docs] def digital_write(self, port: int, value: int) -> bool: """ Write a HIGH or LOW value to a digital pin :param port: The GPIO port number :type port: int :param value: The value (0 or 1) :type value: int :returns: True on success, false otherwise :rtype: bool """ cmd = "pio{}={}".format(port, value) self._nh.sendCommand(cmd) return self._nh.recvRetCommandFinished()
[docs] def digital_read(self, port: int) -> int: """ Read a HIGH or a LOW value of a digital pin :param port: The GPIO port number :type port: int :returns: Value of specified digital pin, either 1 or 0 :rtype: int """ cmd = "get pio{}".format(port) self._nh.sendCommand(cmd) sleep(0.1) # necessary, data might not be available otherwise return self._nh.recvRetNumber()
[docs] def analog_write(self, port: int, value: int) -> bool: """ Set analog value (PWM wave) to a pin :param port: The GPIO port number :type port: int :param value: The duty cycle value (0-100) :type value: int :returns: True on success, false otherwise :rtype: bool """ cmd = "pwm{}={}".format(port, value) self._nh.sendCommand(cmd) return self._nh.recvRetCommandFinished()
[docs] def set_pwmfreq(self, value: int) -> bool: """ Set the PWM output frequency for all pins :param value: The PWM frequency (1-65535) :type value: int :returns: True on success, false otherwise :rtype: bool """ cmd = "pwmf={}".format(value) self._nh.sendCommand(cmd) return self._nh.recvRetCommandFinished()
[docs] def get_pwmfreq(self) -> int: """ Get the PWM output frequency :returns: The PWM frequency. :rtype: int """ cmd = "get pwmf" self._nh.sendCommand(cmd) sleep(0.1) # necessary, data might not be available otherwise return self._nh.recvRetNumber()