RepWrap - dispositivo de seguimiento de duración y repeticiones de ejercicios de fisioterapia (prototipo breadboarded) (1 / 2 paso)

Paso 1: El código


El código construye de documentación de Arduino como

Knight Rider 2 para el uso de matrices para configuraciones de pin
Botón era lo que andaba buscando a la derecha al principio (Nota a sí mismo: para v2 probablemente debería añadir una resistencia entre la tierra y las puntas de vuelos...)

Descargar el archivo physio.pde (o copiar el código de abajo) y cargar en el microcontrolador de Arduino de la manera habitual.

/*
RepWrap v1
Nikki pugh | De abril de 2011 | www.npugh.co.uk

Motor de la vibración atado pin 12
LED conectado al pin 13
Pernos de repetición 2-6
Duración de los pernos 7-11

*/

variables:

int repNumbers [5] = {//array guardar una selección de los valores de repetición
10,12,20,24,30};

int repPins [] = {}
2, 3, 4, 5, 6}; una matriz de números de pin para que rep botones se unen
int repPinCount = 5; el número de opciones de rep (es decir, la longitud de la matriz)

int durationLengths [5] = {//array guardar una selección de valores de duración y mantenga en segundos
10,12,15,20,30};

int durationPins [] = {}
7, 8, 9, 10, 11}; una matriz de números de pin para cuya duración se unen botones

int durationPinCount = 5; el número de opciones de duración (es decir, la longitud de la matriz)

destellos se utilizan como una indicación de que la duración de retención es casi sobre
flashOn int = 750; longitud de conteo regresivo del tiempo pasado parpadea para
Penumbras de int = 250; tiempo atrás parpadea apagado para
int flashRep = 3; Nº de destellos
tiempo de Flash int = (flashRep*(flashOn+flashOff));

int cambio = 3000; longitud de tiempo entre repeticiones, milisegundos

int repState = 0; variable para lectura del estado del selector
int durationState = 0; variable para lectura del estado del selector

int thisRepPin = 0; otras variables
int thisDurationPin = 0;
int thisRepNumber = 0;
int thisDurationLength = 0;
int repNumber = 0;
int durationLength = 0;
int repStateFound = 0;
int durationStateFound = 0;

constantes:
const int buzzPin = 12; el número del pin zumbador
const int LEDPin = 13; el número de los pines del LED

void setup() {}
inicializar los pines como salidas de un:
pinMode (LEDPin, salida);
pinMode (buzzPin, salida);

int thisRepPin;
los elementos de la matriz están numerados del 0 al (pinCount - 1).
usar un bucle inicializar cada pin como salida:
para (int thisRepPin = 0; thisRepPin < repPinCount; thisRepPin ++) {}
pinMode (repPins [thisRepPin], entrada); configurar pin de entrada
digitalWrite (repPins [thisRepPin], HIGH); activar resistencias pullup interna
pinMode (repPins [thisRepPin], salida); conjunto perno de salida
}

int thisDurationPin;
los elementos de la matriz están numerados del 0 al (pinCount - 1).
usar un bucle inicializar cada pin como salida:
para (int thisDurationPin = 0; thisDurationPin < durationPinCount; thisDurationPin ++) {}
pinMode (durationPins [thisDurationPin], entrada); configurar pin de entrada
digitalWrite (durationPins [thisDurationPin], HIGH); activar resistencias pullup interna
pinMode (durationPins [thisDurationPin], salida); conjunto perno de salida
}

Serial.Begin(9600); abrir el puerto serie a 9600 bps
} //end configurar

void loop() {}

señal de inicio
para (int i = 0; i < flashRep; i ++) {}
digitalWrite (LEDPin, LOW);
Delay(flashOff);
digitalWrite (LEDPin, alto);
Delay(flashOn);
digitalWrite (LEDPin, LOW);
}
digitalWrite (buzzPin, HIGH);
Delay(CHANGEOVER);
digitalWrite (buzzPin, bajo);

leer los pines de Rep, cuando encuentres uno que sea bajo, que es la que ha sido seleccionado
thisRepPin = 0;
repStateFound = 0;
{while(repStateFound==0)}
repState=digitalRead(repPins[thisRepPin]);
Si (repState == LOW) {//has sido conectado a tierra
repStateFound = 1;
Serial.Print(thisRepPin);
Serial.println ("repStateFound = 1");
}
Si (repState == HIGH) {}
repStateFound = 0;
Serial.Print(thisRepPin);
Serial.println ("repStateFound = 0");
thisRepPin ++;
}

}

thisRepNumber = thisRepPin;
Serial.Print ("thisRepNumber:");
repNumber = repNumbers [thisRepNumber];
Serial.println(repNumbers[thisRepNumber]);

leer los pines de duración, cuando encuentres uno que sea bajo, que es la que ha sido seleccionado
thisDurationPin = 0;
durationStateFound = 0;
{while(durationStateFound==0)}
durationState=digitalRead(durationPins[thisDurationPin]);
Si (durationState == LOW) {}
durationStateFound = 1;
Serial.Print(thisDurationPin);
Serial.println ("durationStateFound = 1");

}
Si (durationState == HIGH) {}
durationStateFound = 0;
Serial.Print(thisDurationPin);
Serial.println ("durationStateFound = 0");
thisDurationPin ++;
}

}

thisDurationLength = thisDurationPin;
Serial.Print ("thisDurationLength:");
durationLength = durationLengths [thisDurationLength];
Serial.println(durationLength);
durationLength = durationLength * 1000;

thisDurationPin = 0;

desconectar pins para ahorrar energía
para (int thisRepPin = 0; thisRepPin < repPinCount; thisRepPin ++) {}
digitalWrite (repPins [thisRepPin], LOW); Apague todos los rep
}
Serial.println ("rep pernos apagados");
para (int thisDurationPin = 0; thisDurationPin < durationPinCount; thisDurationPin ++) {}
digitalWrite (durationPins [thisRepPin], LOW); Apague todos los pines de duración
}
Serial.println ("duración pernos apagados");

Ahora sigamos con los ejercicios

para (int cuenta = 0; cuenta < repNumber; cuenta ++) {//repeat este ciclo tantas veces como existen repeticiones
Delay(durationLength-flashTime); Espere a que la longitud de duración menos la duración de los destellos countown

para (int i = 0; i < flashRep; i ++) {//do la cuenta regresiva parpadea
digitalWrite (LEDPin, LOW);
Delay(flashOff);
digitalWrite (LEDPin, alto);
Delay(flashOn);
digitalWrite (LEDPin, LOW);
que rep ya está terminado

}
Serial.println(count+1); ¿Cuántas repeticiones hemos hecho?
zumbido del motor para un cambio
digitalWrite (buzzPin, HIGH);
Delay(CHANGEOVER);
digitalWrite (buzzPin, bajo);

} //end de conjunto

mucho buzz para señalar el final de la serie
digitalWrite (buzzPin, HIGH);
Delay(7000);
digitalWrite (buzzPin, bajo);

Flash el LED tan señalar el final del juego - cuando es necesario apagar o iniciar otra ves
mientras que (verdad) {}
digitalWrite (LEDPin, alto);
Delay(500);
digitalWrite (LEDPin, LOW);
Delay(1000);
}

} //end lazo

Artículos Relacionados

Dispositivo de seguimiento solar mediante msp430

Dispositivo de seguimiento solar mediante msp430

Hola everyone.here estoy mostrando mi proyecto de seguimiento solar para el panel solar. Las dos LDRs están conectados a ambos bordes de la panel.so solar puede seguir dirección de sol de sol de este lado a hasta la puesta de sol de lado oeste. Este
Dispositivo de rastreo

Dispositivo de rastreo

En estos dos vídeos que a ver cómo hacer que un celular activado dispositivo de seguimiento que puedes añadir una simple batería LIPO y hacer un dispositivo de rastreo móvil de estilo de james bond.Paso 1: Seguimiento de dispositivo - configuración d
Unidad de seguimiento de Panel Solar con una cuerda reloj de sol portátil

Unidad de seguimiento de Panel Solar con una cuerda reloj de sol portátil

solo he diseñado y construido un seguidor solar casero que puede fácilmente fijar para alinear con precisión a la altura del sol (como todos los días, cambia con las estaciones del año) y también fiel seguimiento del sol, desde el amanecer hasta el a
Dispositivo de localización de crudo de un GPS y Radios de dos vías

Dispositivo de localización de crudo de un GPS y Radios de dos vías

por lo tanto, quería conseguir un dispositivo de rastreo. En cuanto miré en el mercado, me di cuenta de los precios de una de esas cosas comienza en un brazo y sube a una pierna o más! La locura debe ser detenida! Sin duda los principios de saber que
Dispositivo usando arduino de medición del ritmo cardíaco

Dispositivo usando arduino de medición del ritmo cardíaco

Este proyecto le muestra cómo diseñar y construir un dispositivo para medir el ritmo cardíaco mediante nuestro Arduino encantador!Paso 1: Información básica sobre este proyecto Un monitor de ritmo cardíaco es un dispositivo de seguimiento personal qu
Dispositivos de Internet para la automatización del hogar

Dispositivos de Internet para la automatización del hogar

Este instructivo muestra los principios involucrados en la fabricación de dispositivos para el control domótico por internet. Estamos va a construir un dispositivo (o varios de ellos), habla uno al otro por internet para controlar luces, motores para
Introducción a MaxMSP

Introducción a MaxMSP

MaxMSP es un lenguaje de programación visual que ayuda a crear programas interactivos complejos sin ninguna experiencia previa escribiendo código.  MaxMSP es especialmente útil para el edificio de audio, MIDI, vídeo y aplicaciones de gráficos donde s
Intel Edison vivo temperatura pantalla

Intel Edison vivo temperatura pantalla

Hola allí todo el mundo!Hace ya mucho tiempo publiqué nada por aqui, y pensé que la nueva versión de Intel Internet sería una gran idea para crear un instructable.¿- Qué es Internet?IoT está parado para "Internet de las cosas" que es un desarrol
Estación de energía Solar portátil

Estación de energía Solar portátil

Estación de energía solar portable o de emergencia. Estadísticas: 120W (95? max hasta ahora), 12V 80Ah AGM batería solar, MPPT controlador de carga solar, inversor de 400W (utiliza 0.8 A cuando en), 3 ventiladores de refrigeración (en/hacia fuera del
Pulsera contra el ritmo

Pulsera contra el ritmo

Nota: yo estoy entrando en este instructable en el concurso de Remix 2.0. Por lo tanto, si te gustó esto, por favor voten por mí. ¡ Gracias! Ahora que esta pequeña pieza de autopromoción shamless está fuera del camino, procedamos...Este proyecto está
Cohete supersónico - Mach mi día!

Cohete supersónico - Mach mi día!

¿Quiere romper la barrera del sonido, pero no tiene un avión de $ 100 millones para jugar con?¿La fuerza aérea no quiere o no desea que la fuerza aérea?¡No hay problema! También puede jugar Tirada Yeager en un presupuesto mucho más bajo, incluso si n
Cambio casa modelo (conexión Wifi esperanzador) de color

Cambio casa modelo (conexión Wifi esperanzador) de color

Misión: En 24 horas, desarrollan un color con Wi-cambio de lámpara que interactúa con varios sitios web para buscar palabras clave establecidos y cambiar el color de la lámpara en consecuencia.Paso 1: Reunir los materialeschipKIT WF32 Digilent microc
Forma libre curvas muebles sin moldes / parte 1

Forma libre curvas muebles sin moldes / parte 1

¿Has oído hablar de Zipshape? Es una técnica desarrollada por Schindler Salmeron que permite dibujar un perfil de forma libre curva para (digamos) un pedazo de muebles y luego corta una serie de dientes en dos hojas de material grueso como MDF. Esos
Desplazamiento visualizador interactivo

Desplazamiento visualizador interactivo

Este proyecto es un visualizador interactivo de deslizamiento. Es una herramienta que puede utilizar para desplazarse por el tiempo o el espacio.Demostración en Video:Utiliza para visualizar un conjunto de imagen de 3 dimensiones cadáver y figurativa