Mostrando entradas con la etiqueta funciones. Mostrar todas las entradas
Mostrando entradas con la etiqueta funciones. Mostrar todas las entradas

16 de marzo de 2020

NodeMCU: 02_ ESPNOW (Comunicación punto a punto // funciones usadas )

Pretendo hacer lo siguiente:
  1.  Un módulo ESP8266 actuará como emisor y el otro como receptor
  2.  Mandaremos una estructura de datos, que puede contener variables de tipo char, int, float, String, boolean. Se podrá modificar para enviar otra estructura de datos.
  3. ESPNOW trabaja con funciones callback (de retorno) que serán llamadas cuando se produce un evento: se recibe o se envía un mensaje, o se produce un error en el envío.
  4. Respecto al emisor:
    1.  Se inicializa ESP-NOW
    2. Se creará una función callback (OnDataSent) que se ejecutará al enviar un mensaje, y así sabremos si el mensaje se ha enviado con éxito o no.
    3. Añadiremos un receptor a través de su dirección MAC.
    4. Enviaremos el mensaje a este receptor
  5. Respecto al receptor:
    1.  Se inicializa ESP-NOW
    2.  Se creará una función callback (OnDataRecv) que se ejecutará cuando se reciba un mensaje.
    3. Dentro de esa función, se almacenará una variable con el valor del mensaje, y se podrá realizar cualquier tarea con dicha información.
==============

Las funciones que usa el protocolo son:

  1. esp_now_init() --> Inicializa ESP-NOW. hay que inicializar Wi-Fi antes. Si tiene exito, retorna 0.
  2. esp_now_set_self_role(role) --> establece perfil; puede ser. ESP_NOW_ROLE_IDLE = 0,
    ESP_NOW_ROLE_CONTROLLER, ESP_NOW_ROLE_SLAVE, ESP_NOW_ROLE_COMBO, ESP_NOW_ROLE_MAX
  3. esp_now_add_peer (uint8 mac_addr, uint8 role, uint8 channel, uint8 key, uint8 key_len) --> llamar a esta función para emparejarse a otro nodeMCU
  4. esp_now_register_send_cb() --> registra una función callback que se dispara tras enviar datos, y devuelve si la entrega tuvo éxito o no.
  5. esp_now_register_rcv_cb() --> registra una función callback que se dispara tras recibir datos via ESP-NOW.

Más información en: 








12 de mayo de 2016

14. Funciones. Funciones de múltiples resultados

¿Qué es una función?

Una función, en matemáticas, es una aplicación que hace corresponder un valor de un conjunto, a un valor de otro conjunto u otros conjuntos. Por ejemplo, a cada figura geométrica hago corresponder su número de lados:
Aplicacion Matemática
En programación, una función o subrutina, es una llamada a un conjunto de instrucciones que pueden o no devolver un valor como resultado y que pueden aceptar ninguno, uno o más argumentos. En algunos entornos de programación, se distingue la subrutina de la función en que la primera simplemente ejecuta un código y la segunda ejecuta un código para devolver un valor.
El uso de funciones tiene muchas ventajas:
  • Simplifican el código de programación.
  • Hacen al programa más claro, más lógico.
  • Pueden reciclarse, usarse en otros programas.
  • Dividen los problemas en otros más sencillos.
  • Pueden ejecutarse varias veces desde el programa principal (son algoritmos secundarios).
  • Ahorran memoria y hacen los programas menos extensos.
Las funciones en PYTHON, tienen la siguiente estructura:
def miFuncion():
    orden primera
    orden segunda
    etc...
De forma parecida a otros bloques, como los IF o los FOR, empiezan por la palabra reservada def , el nombre de la función y paréntesis (abre y cierra) con dos puntos. Tabuladas, se ponen en orden las instrucciones a ejecutar.
Si acepta valores de entrada o argumentos, los nombres de los mismos van entre los paréntesis y separados por comas.
def imprimeIndiceMasaCorporal (peso, altura):
   IMC = peso / (altura ** 2)
   print IMC
Si devuelve un valor, se usa la palabra reservada return
def imprimeIndiceMasaCorporal (peso, altura):
   IMC = peso / (altura ** 2)
   return IMC
Ejemplo 1. Ejemplo de función retornando la suma de dos elementos
# *-* coding: utf-8 *-*
miNumero = int(raw_input("Dime un numero del 2 al 10: "))
miNumero2 = int(raw_input("Dime un numero del 2 al 10: "))


def suma(a, b):
    return a + b

for i in xrange(1, miNumero + 1):
    for j in xrange(1, miNumero2 + 1):
        print ("La suma de: " + str(i) + " y " + str(j) + " = " + str(suma(i, j)))
Como puedes observar simplemente se llama a la función suma a través de suma(primer número, segundo número)
===

Funciones de múltiples resultados

En el siguiente código, la función segA acepta un número entero; sin embargo, devuelve tres variables. Esta propiedad de PYTHON no se comparten en otros entornos de programación, donde sólo se puede devolver un resultado por función.
El programa realiza el cálculo, la conversión, de una cantidad de segundos a formato hora, minuto, segundos.
# *-* coding: utf-8 *-*


def segA(sec):
    # Esta función es capaz de pasar los segundos
    # a horas minutos y segundos
    hs = sec / 3600
    minu = (sec % 3600) / 60
    seg = (sec % 3600) % 60
    return (hs, minu, seg)

segundos = int(raw_input("Introduce el números de segundos que han pasado: "))

(hora, minutos, segundos) = segA(segundos)
print ("%d:%d %d\"") % (hora, minutos, segundos)