RepWrap - appareil à garder une trace de durée et répétitions pour les exercices de physiothérapie (prototype breadboarded) (1 / 2 étapes)

Etape 1: Le code


Le code génère arrêt Arduino documentation tels que

Knight Rider 2 pour l’utilisation de tableaux pour montages de broche
Bouton est ce que je cherchais à droite au début (note pour plus tard : v2, devrait probablement ajouter une résistance entre GND et les fils volants...)

Télécharger le fichier physio.pde (ou copiez le code d’en bas) et publiez votre microcontrôleur Arduino de la manière habituelle.

/*
RepWrap v1
Nikki pugh | Avril 2011 | www.npugh.co.uk

Moteur de vibration attaché à l’axe de 12
LED, attaché à la broche 13
Épingles à répétition 2-6
Broches de durée 7-11

*/

variables :

int repNumbers [5] = {//array stocker une sélection de valeurs de répétition
10,12,20,24,30} ;

int repPins [] = {}
2, 3, 4, 5, 6} ; un tableau de codes pin à laquelle rep boutons sont fixés
int repPinCount = 5 ; le nombre d’options de rep (c'est-à-dire la longueur du tableau)

int durationLengths [5] = {//array stocker une sélection de valeurs de durée et maintien en secondes
10,12,15,20,30} ;

int durationPins [] = {}
7, 8, 9, 10, 11} ; un tableau de codes pin pour quelle durée les boutons sont fixés

int durationPinCount = 5 ; le nombre d’options de durée (c'est-à-dire la longueur du tableau)

bouffées de chaleur sont utilisées comme une indication que la durée d’attente est presque terminée
flashOn int = 750 ; durée du compte à rebours clignote modifié pour
int flashOff = 250 ; durée du compte à rebours clignote au large pour
int flashRep = 3 ; pas de clignotements
flashTime int = (flashRep*(flashOn+flashOff)) ;

passage int = 3000 ; laps de temps entre les répétitions, millisecondes

int repState = 0 ; variable pour la lecture de l’état de sélecteur
int durationState = 0 ; variable pour la lecture de l’état de sélecteur

int thisRepPin = 0 ; autres 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 ; le nombre de l’axe de l’avertisseur sonore
const int LEDPin = 13 ; le nombre de l’axe de la LED

void setup() {}
Initialise les épingles en une sorties :
pinMode (LEDPin, sortie) ;
pinMode (buzzPin, sortie) ;

int thisRepPin ;
les éléments du tableau sont numérotées de 0 à (pinCount - 1).
Utilisez une boucle for pour initialiser chaque broche en tant que sortie :
pour (int thisRepPin = 0; thisRepPin < repPinCount ; thisRepPin ++) {}
pinMode (repPins [thisRepPin], entrée) ; broches à l’entrée de la valeur
digitalWrite (repPins [thisRepPin], HIGH) ; Allumez les résistances pullup interne
pinMode (repPins [thisRepPin], sortie) ; mettre la broche de sortie
}

int thisDurationPin ;
les éléments du tableau sont numérotées de 0 à (pinCount - 1).
Utilisez une boucle for pour initialiser chaque broche en tant que sortie :
pour (int thisDurationPin = 0; thisDurationPin < durationPinCount ; thisDurationPin ++) {}
pinMode (durationPins [thisDurationPin], entrée) ; broches à l’entrée de la valeur
digitalWrite (durationPins [thisDurationPin], HIGH) ; Allumez les résistances pullup interne
pinMode (durationPins [thisDurationPin], sortie) ; mettre la broche de sortie
}

Serial.Begin(9600) ; ouvrir le port série à 9600 bps
} //end mis en place

void loop() {}

démarrer le signal
pour (int i = 0; i < flashRep; i ++) {}
digitalWrite (LEDPin, basse) ;
Delay(flashOff) ;
digitalWrite (LEDPin, élevé) ;
Delay(flashOn) ;
digitalWrite (LEDPin, basse) ;
}
digitalWrite (buzzPin, HIGH) ;
Delay(Changeover) ;
digitalWrite (buzzPin, basse) ;

lire les broches de Rep, lorsque que vous trouviez celui qui est faible, c’est celle qui a été sélectionné
thisRepPin = 0 ;
repStateFound = 0 ;
{while(repStateFound==0)}
repState=digitalRead(repPins[thisRepPin]) ;
Si (repState == faible) {//has été raccordé à la terre
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]) ;

lire les broches de durée, lorsque que vous trouviez celui qui est faible, c’est celle qui a été sélectionné
thisDurationPin = 0 ;
durationStateFound = 0 ;
{while(durationStateFound==0)}
durationState=digitalRead(durationPins[thisDurationPin]) ;
Si (durationState == faible) {}
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 ;

Éteignez les épingles pour économiser l’énergie
pour (int thisRepPin = 0; thisRepPin < repPinCount ; thisRepPin ++) {}
digitalWrite (repPins [thisRepPin], faible) ; désactiver toutes les goupilles de rep
}
Serial.println ("rep pins éteints") ;
pour (int thisDurationPin = 0; thisDurationPin < durationPinCount ; thisDurationPin ++) {}
digitalWrite (durationPins [thisRepPin], faible) ; désactiver toutes les goupilles de durée
}
Serial.println ("durée pins éteints") ;

maintenant aux exercices

pour (int count = 0; count < repNumber ; count ++) {//repeat ce programme autant de fois qu’il sont a répétitions
Delay(durationLength-flashTime) ; Attendez que la longueur de la durée moins la longueur du temps pour les bouffées de chaleur countown

pour (int i = 0; i < flashRep; i ++) {//do le compte à rebours clignote
digitalWrite (LEDPin, basse) ;
Delay(flashOff) ;
digitalWrite (LEDPin, élevé) ;
Delay(flashOn) ;
digitalWrite (LEDPin, basse) ;
ce rep est maintenant terminé

}
Serial.println(Count+1) ; reps Combien avons-nous fait ?
Buzz le moteur pour un passage
digitalWrite (buzzPin, HIGH) ;
Delay(Changeover) ;
digitalWrite (buzzPin, basse) ;

} //end d’ensemble

long buzz pour marquer la fin du jeu
digitalWrite (buzzPin, HIGH) ;
Delay(7000) ;
digitalWrite (buzzPin, basse) ;

la LED donc signaler la fin de la série - quand vous voyez cela, vous devez mettre hors tension ou démarrer une autre série de Flash
tout en (vrai) {}
digitalWrite (LEDPin, élevé) ;
Delay(500) ;
digitalWrite (LEDPin, basse) ;
Delay(1000) ;
}

} //end boucle

Articles Liés

Comment faire pour garder une trace sur l’ordinateur de l’employé sans traverser la limite

Comment faire pour garder une trace sur l’ordinateur de l’employé sans traverser la limite

Vous devez absolument aucune idée de ce que vos employés sont, bien qu'ils semblent fonctionner sur le web ? Craignez-vous que vos employés sont perdre du temps sur leurs systèmes de regarder des vidéos sur YouTube et passer du temps sur Facebook ? E
Disque dur base pied de micro dynamique pour les enregistrements sonores HQ

Disque dur base pied de micro dynamique pour les enregistrements sonores HQ

texte de Narration HDD-basé-mic :Il y avait un micro dynamique dans ma boîte de courrier indésirable, mais sans n'importe quel support, ni connexion câble.comme j'avais besoin d'un micro de haute qualité pour mes projets d'expliquer, si je devais pen
Garder une trace de n’importe quelle campagne Indiegogo avec IFTTT

Garder une trace de n’importe quelle campagne Indiegogo avec IFTTT

La plupart d'entre nous, décideurs, se sentent en quelque sorte affiliée avec crowdfunding. Après tout, les sites de crowdfunding permettent de partager nos créations avec le reste du monde.Nous avons construit cet outil pour notre campagne Microbot
Comment faire une fenêtre coeur Valentine s’accrochent de plaisance pour les enfants

Comment faire une fenêtre coeur Valentine s’accrochent de plaisance pour les enfants

Valentine ces accroche de fenêtre est une embarcation enfants vont adorer ! Et ils font de jolies décorations de Valentin trop.Comment faire une maison Valentine coeur fenêtre s'accrochent CraftVous aurez besoin :colle blanche Ecolesavon à vaisselle
Découvrez une liste de Suggestions de cadeaux de Noël pour les Parents

Découvrez une liste de Suggestions de cadeaux de Noël pour les Parents

Chic et confortable est le mot quand il s'agit de boutons de manchettes. Fabriqués à partir demétal de base de rhodium, ce bouton de manchette est l'un des plus beaux cadeaux qui peuvent être donnés à son père et est définitivement des idées cadeaux
Artículo : Hacking une Radio pour les commerçants et le travail en plein air

Artículo : Hacking une Radio pour les commerçants et le travail en plein air

travaille à l'extérieur peut être exigeant.  Chirurgie des arbres pour la construction, la liste des conditions dans lesquelles les travailleurs doivent prendre est sans fin.  L'équipement que ces travailleurs utilisent pendant vos tâches quotidienne
Viseur électronique pour les appareils photo numériques compacts

Viseur électronique pour les appareils photo numériques compacts

ce Instructable est spécifique à un viseur électronique permettant du S95 de Canon, mais en supposant que votre appareil photo numérique a une capacité de sortie vidéo et vous pouvez trouver le bon connecteur et brochage, vous pouvez adapter à vos be
Une chaise pour les grands espaces

Une chaise pour les grands espaces

Il s'agit d'un projet qui vous récompensera avec confort ! À l'extérieur, elle durera pendant des années avec aucun entretien, altération gracieusement comme les années roulent. Il a un style utilitaire robuste naturel, et ce qui fait une de ces chai
Comment faire une paire de boucles d’oreilles perle boule pour les mariées

Comment faire une paire de boucles d’oreilles perle boule pour les mariées

Il y a des centaines de modèles de boucles d'oreilles perles sur notre site Web. Projet de bricolage boucles d'oreilles d'aujourd'hui est une paire de boucles d'oreilles boule perle facile pour les mariées. Comme vous pouvez le voir sur la photo, j'a
Rester au chaud : Gardez une boisson sur vous en permanence !

Rester au chaud : Gardez une boisson sur vous en permanence !

Est votre plus épaisse couche pas encore assez pour garder le froid ? Prendre une gorgée de rester le souffle glacial de vieux les hiver homme. Avec une poche flacon simple et facile à installer, vous aurez jamais être interceptées sans un verre !**
Laisser une trace de fleurs comme vous faire défiler les terres en friche. (+ matériel bonus)

Laisser une trace de fleurs comme vous faire défiler les terres en friche. (+ matériel bonus)

j'ai voulu faire un dispositif fixe de vélo qui se propage activement de graines de fleurs sauvages le long des friches et des espaces abandonnés que j'ai souvent parcourir ; contribuant ainsi nos copains qui luttent, les abeilles et les papillons.J'
Faire une système de batterie (externe) durée de vie prolongée pour Canon et Nikon reflex numériques

Faire une système de batterie (externe) durée de vie prolongée pour Canon et Nikon reflex numériques

matières sont énumérées ci-dessous !Aujourd'hui, c'est différent ! Nous vous enseignons comment faire un système de batterie externe pour la nouvelle génération de caméras Canon DSLR.ET comme dit dans la vidéo, j'ai fait la recherche - cela fonctionn
Sac de Paddle carquois, gardant une liasse de pagaies, sûre et organisée

Sac de Paddle carquois, gardant une liasse de pagaies, sûre et organisée

Étant un constructeur de bateaux fréquents (je m'attends à lancer mon bateau 16ème ce printemps) et père de quatre enfants qui aiment aller en kayak. Juste obtenir toute la famille de six, dans la voiture, avec des bouteilles d'eau, collations, écran
Garder une mante religieuse comme animal de compagnie

Garder une mante religieuse comme animal de compagnie

Garder une mante religieuse comme animal de compagnie est facile à faire une fois que vous apprendrez quelques petites choses à leur sujet. La première chose que vous voudrez trouver est une maison pour votre petit animal de compagnie. Vous pouvez le