Un theremin intermitente multiproceso por VIPER (5 / 6 paso)

Paso 5: Explicando el código

Por qué utilizar VIPER

Uno de los conceptos que muchas personas encuentran difíciles al comenzar a escribir código para microcontroladores es cómo gestionar múltiples tareas relacionadas con el hardware, aparentemente todos corriendo al mismo tiempo. Diseñadores, en consecuencia, se sienten frustrados por las dificultades en la aplicación de tales funcionalidades en microcontroladores.

Para dar solución a estos dolores, soportes VIPER todas las características de alto nivel más utilizadas de Python como módulos, clases, multithreading, callbacks, temporizadores y excepciones, además de algunas funciones relacionadas con el hardware personalizados como interrumpe, PWM, E/S digitales, etc..

Cada subproceso en VIPER es una especie de proceso paralelo y separado que funciona autónomamente en su tabla. Un subproceso requiere de una función a ejecutarse como insumo para la definición. La misma función puede ser instanciada por varios hilos que le da la posibilidad de escribir código muy conciso y legible. Con hilos puede diseñar su arquitectura algoritmo suponiendo el paralelismo típico de alto nivel. Más información aquí.

En el código

La secuencia es implementada usando 4 hilos que se ejecutan en paralelo. Un hilo de rosca se utiliza para adquirir y normalizar las señales analógicas adquiridas a través de un potenciómetro y un sensor de proximidad infrarrojo. Los otros tres hilos se utilizan para crear una instancia de una función genérica blink() que lleva dos LEDs en diferentes frecuencias y una función de buzz() genérico que impulsa un zumbador en la longitud de e de frecuencia diferente del sueño (para crear un efecto de "beat"), calculado sobre la base de las señales adquiridas.

Obtener el script en github. El código tiene un montón de comentarios. Sólo un par de notas.

  • Delay() vs convencionales

En Arduino y el cableado utilizando delay() tiene un efecto secundario - Arduino no hace nada durante ese tiempo. Para obtener dos o más "acciones" para funcionar independiente uno del otro, se puede utilizar delay().

En VIPER la función TIMESTAMPADD() suspende el subproceso actual para el tiempo expresado en time_units pero todos los hilos están libres continuar su ejecución.

  • Funciones integradas de VIPER

VIPER VM extiende Python con funciones integradas para manejar los pines de salida de entrada de propósito General del dispositivo integrado. Estas funciones se asemejan a los utilizados por Arduino, pero son más flexibles.

analogRead() vs adc.read()

La función analogRead() se proporciona como un integrado para facilitar el paso del Arduino y el cableado a VIPER.
Sin embargo es la forma preferida para leer un pin analógico de víbora:

# importar el controlador adc

importación de adc

x = adc.read (pin, muestras = 1)

Lee los valores analógicos del pin que debe ser una de las patillas de hacha. Si las muestras son 1 o no dado, devuelve el valor de entero de pin. Si las muestras es mayor que 1, devuelve una tupla de números enteros de las muestras de tamaño.

analogWrite() vs pwm.write()

La función analogWrite() de Arduino proporciona una interfaz simple para el hardware PWM, pero no proporciona ningún control sobre frecuencia. La función analogWrite() se proporciona como un integrado para facilitar el paso del Arduino y el cableado a VIPER. Sin embargo es la forma preferida de usar pwm en VIPER:

# importar el controlador pwm
pwm de importación

PWM.Write (pin, periodo, pulso, time_unit = MILLIS)

El estado del pin se conecta periódicamente entre baja y alta según los parámetros:
-período es la duración de una onda cuadrada del pwm

-el pulso es el tiempo de la onda cuadrada del pwm permanece en estado alto

-time_unit es la unidad de tiempo y pulso se expresan en time_unit

Artículos Relacionados

Wee intermitente led | por el transistor 2

Wee intermitente led | por el transistor 2

es muy fácil también, no es costoso solo necesitas:Componentes electrónicos:2 - pnp transistor BC 547 B2-condensador de 47 μF / 16V2-resistencia de 470 Ohm2 - resistencia 3,9 kOhm3-azul LEDLED 3 rojo1-potenciómetro 50KOhmPaso 1: Diagrama del circuito
Intermitente LED corazón DIY

Intermitente LED corazón DIY

Una serie de 10mm LED colocados en una caja de madera en forma de corazón que flash utilizando un timer 555 con velocidad ajustable intermitente alimentada por una batería de 9 voltios. Tengo esta idea, porque yo estaba pensando en un regalo para mi
Intermitentes de moto LED Bar final

Intermitentes de moto LED Bar final

Siempre me ha preocupado en la motocicleta en la noche visibilidad desde el lado, particularmente cuando paró. También es difícil ver luces intermitentes cuando un finalmente está justo al lado de usted. Una buena linterna y los indicadores son grand
Arduino - Theremin con pantalla de 7 segmentos LED

Arduino - Theremin con pantalla de 7 segmentos LED

en este instructable, le mostraré cómo hacer un juguete simple que combinación de LED y Theremin. Vamos a usar algunos electrónica básica construida encima de un Arduino. La idea básica de 7 segmento LED pantalla fue de disfrutar de la electrónica. E
Arduino para principiantes y básicos electrónica Kit cartilla

Arduino para principiantes y básicos electrónica Kit cartilla

aprendí que una de mis sobrinas tuvo un interés en la programación.  Ella estaba trabajando con la robótica en el colegio y tiene una pasantía de verano donde tuvieron Arduinos.  Creo que ella fue capaz de pedir prestado un Arduino para experimentar
Luces de bicicleta de seguridad de la inducción magnética. Batería y el diseño casi invisible, barato, resistente al agua gratis!

Luces de bicicleta de seguridad de la inducción magnética. Batería y el diseño casi invisible, barato, resistente al agua gratis!

Este sistema de luz de seguridad parpadea como ahora la rueda gira: más rápido gira, ritmo más rápido que los leds parpadeen. Es sin contacto, así que aquí no está absolutamente ninguna fricción. Utiliza la inducción magnética de batería y mantenimie
Control remoto de múltiples funciones DSLR

Control remoto de múltiples funciones DSLR

Muchas cámaras DSLR pueden ser controladas remotamente usando un transmisor de infrarrojos.Generalmente son del tamaño de un llavero, cuestan entre US$ 8 (para una copia China barata) a US$ 25 (original) y permitir una prensa solo botón que activa el
IoT impresora de notas: Las notas de Smartphone en papel

IoT impresora de notas: Las notas de Smartphone en papel

La "Impresora de notas de IoT de víbora" trata de crear un medio handable para la comunicación cotidiana.Gracias a la aplicación de víbora puede escribir mensajes de texto y enviarlos a una impresora térmica pequeña programado con VIPER y conect
Deshidratador Solar de clima húmedo

Deshidratador Solar de clima húmedo

este deshidratador es mi versión de un diseño superior del medio oeste. Adaptado (como se recomienda) para adaptarse a las ventanas tenían en mano, que también utilizo para mis cuadros de frío. Estas ventanas eran aproximadamente 32" por 32", qu
Beam Symet

Beam Symet

Este rayo Symet fue construido a diferencia de la mayoría, este rayo Symet no es solar powered. El circuito utilizado es una versión modificada del "Circuito intermitente Led" por steven123654. Los cerebros de la Symet es un chip 555 temporizado
CÓMO INSTALAR SIN LLAVE + ENTRADA SIN CONTACTO EN DODGE RAM | KEETEC CZ 100 MANDO A DISTANCIA INTELIGENTE | CÓDIGOS de cables para recoger

CÓMO INSTALAR SIN LLAVE + ENTRADA SIN CONTACTO EN DODGE RAM | KEETEC CZ 100 MANDO A DISTANCIA INTELIGENTE | CÓDIGOS de cables para recoger

Hola a todos esto es geRAMicc85. Por favor ver el video para seguir las instrucciones.Este es mi 96 Dodge Ram 1500 y hoy va a instalar un nuevo sistema de entrada sin llave a control remoto. Y va a instalar este sistema de entrada sin contacto. Es de
Inteligente de calabaza de Halloween lámpara

Inteligente de calabaza de Halloween lámpara

Halloween se acerca pronto y probablemente necesita algo para impresionar a tus amigos.Este es el proyecto para usted: un Halloween 3D impreso calabaza lámpara que cambia de color y tararea una canción de halloween cuando oye un ruido alrededor.El di
LED auriculares de sincronización de música

LED auriculares de sincronización de música

en este instructable va a explicar cómo hacer un auricular de LED intermitente. Por supuesto los LEDs será syncronizated con la música.Este proyecto está especialmente enfocado a corredores de la noche. Sin embargo nadie se ve bien con ellos.En la pa
Cobre chapado vacaciones ornamentos - laboratorio de química

Cobre chapado vacaciones ornamentos - laboratorio de química

cada año, tengo mis estudiantes de química hacen adornos de Navidad por medios químicos.  Cuando se hacen, pueden llevar a casa y colgar sus adornos cobre plateados en su "árbol de Chemis".Objetivo:En la realización de este laboratorio, los estu