Paso 23: Desarrollo de Software de Arduino
Mientras que el guión de Arduino necesarios para implementar la generación de forma de onda de ECG no es difícil, es un poco más involucrado que los ejemplos introductorios "parpadeará un LED", uno puede encontrar. Aquí están algunas de las cuestiones que uno debe pensar antes de entrar en la primera línea de código.Forma de onda como una matriz en lenguaje C
Este proyecto tiene dos criterios importantes sobre la forma de onda. La frecuencia de muestreo será 1000 veces por segundo (1 milisegundo por ejemplo); Esto fue elegido para fidelidad de buena onda. La escala para esta forma de onda debe ser 0 a 4095 (para hacer uso a gran escala de 12-bit convertidor D/A unipolar).
La forma de onda debe residir en EPROM, fácilmente satisfecho usando una const C-matriz con un inicializador de la siguiente forma:
const y_data corto [] = {}
939, 940, 941, 942, 944, 945, 946, 947, 951, 956,
962 967, 973, 978, 983, 989, 994, 1000, 1005, 1015
};
Al declarar la matriz de forma de onda como una const matriz, está montado en el 32 k EPROM en vez de las más preciosas 2k de RAM que se necesitarán para variables, etc..
Forma de onda actualizado como una interrupción del Timer2
La forma de onda se dará salida a un ritmo de actualización de 1000 muestras por segundo. Para ello, se utilizará Timer2 para contar un un plazo de milisegundos y luego provocar una interrupción del Timer2. Dentro de la rutina de interrupción, la siguiente muestra se movió desde la matriz de forma de onda almacenada y enviada al convertidor D/A través de la interfaz SPI. El Timer2 se reinicia y esto sigue ad-infinitum (para siempre).
La frecuencia cardíaca aparece cada 50 milisegundos
Cada entrada 50 para el Timer2 interrumpir la rutina, la frecuencia cardiaca seleccionada por el usuario a través del potenciómetro se enviará a la pantalla numérica de 4 dígitos (otra vez mediante la interfaz SPI). D/A y la pantalla de 4 dígitos se actualizan dentro de la rutina de interrupción Timer2. Puesto que son serializado (uno después del otro), no habrá ninguna contención en el bus de interfaz SPI.
Ritmo cardíaco Pot lee en el circuito de fondo
El Arduino lazo del fondo es donde la tensión analógica (0 a 5 voltios) por el bote se lee utilizando una entrada analógica. Este valor se utilizará para especificar el número de muestras durante el"reposo" de la onda, específicamente ese período de la línea plana después de la onda T que sigue al comienzo del siguiente complejo PQRS. Este valor de "período de reposo" se escribirá a una variable que será leída por la rutina de interrupción Timer2.