====== Application externe ====== Il existe une application Android « [[https://play.google.com/store/apps/details?id=ru.megazlo.apnea|Apnea Lite]] » qui propose des tables hypoxiques et hypercapniques ainsi que des tables carrées. Pour chaque table, il y a un décompte possible et la possibilité de la configurer : - Max perso, et pourcentage de ce max à prendre en compte pour fixer le max des exercices, - Durée des paliers fixes, - Temps des paliers variables au début et à la fin de l'exercice, - Durée totale de l'exercice, - Configuration de toutes les phases du carré, - Activation/désactivation des différents décomptes, - … Il existe d'autres applications : * [[http://apnea-diver.com/|Apnea Diver]] * [[https://f-droid.org/fr/packages/com.mmazzarolo.breathly/|Breathly]] * [[https://pranabreath.info/|Prana Breath]] * [[https://play.google.com/store/apps/details?id=com.brucemax.freediveapneatimer&hl=en_US|Freediving Apnea Trainer]] Dans un autre registre il est possible de modifier des compteurs de HIIT : http://minicoach.la-bnbox.fr/ ou http://howtommy.net/fitness/. ====== Application personnelle ====== N'ayant pas trouvé de chrono qui me satisfait, j'ai codé un petit script python qui fait ça. Vous pouvez même le lancer sur le téléphone avec [[http://www.qpython.com/|Qpython]]. #!/usr/bin/python3 #-*- coding: utf-8 -*- import time # configuration apnée cycles = 10 insp = 4 plein = 3 exp = 8 vide = 3 # configuration script tempo = 1 terminal = "d" #d=desktop, m=mobile, u=ubuntu # import selon terminal if terminal == "m": # https://github.com/qpython-android/qpython3/releases import androidhelper droid = androidhelper.Android() if terminal == "u": # https://pypi.org/project/progress/ import sys sys.path.append("/usr/local/lib/python2.7/dist-packages") from progress.bar import Bar # fonction d'affichage compteur selon terminal def progression(message, duree): if terminal == "d": print("\n-------------") print(message, duree, "\t", end='') for temps in range(duree): print(temps +1, " ", end='', flush=True) time.sleep(tempo) if terminal == "m": droid.vibrate(duration=200) print("\n-------------") print(message, duree, "\t") for temps in range(duree): print(temps +1) time.sleep(tempo) if terminal == "u": bar = Bar(message, max=duree) for i in range(duree): time.sleep(tempo) bar.next() bar.finish() # fonction d'affichage de la configuration def configuration(): print("________________________", "\nConfiguration actuelle :", "\n", cycles, "cycles", "\n inspiration :", insp, "- plein :", plein, "\n expiration :", exp, "- vide :", vide) print("Temps total :", cycles*(insp+plein+exp+vide)*tempo) # bandeau présentation print( " O ‘'’ O \n" "/¯\ |¯| |\| |¯ /¯\ ¯|¯ | |\/| |¯ |¯| o o o \n" "|¯| |¯ | | |¯ |¯| | | | | |¯ |¯\ ° ° ° \n" " ¯ ¯ ° : ° \n" ) # présentation configuration et démarrage configuration() reponse = input(">>> Démarrer ? <<< " "Ou indiquer 5 nombres pour changer la configuration.\n") if reponse: # conversion chaine de caractere en liste reponse = reponse.replace("."," ").replace(","," ").split() # conversion liste de chaine en liste d'entier reponse = [int(i) for i in reponse] if len(reponse) == 5: cycles = reponse[0] insp = reponse[1] plein = reponse[2] exp = reponse[3] vide = reponse[4] configuration() else: print("Mauvaise entrée. Conservation configuration par défaut.") # lancement cycles for cycle in range(cycles): print("\n=============\nCycle", cycle+1, "sur", cycles, end='') if terminal == "m": droid.vibrate(duration=400) progression("Inspiration ", insp) if plein: progression("Plein ", plein) progression("Expiration ", exp) if vide: progression("Vide ", vide) # licence """ LICENCE PUBLIQUE RIEN À BRANLER Version 1, mars 2009 Copyright (C) 2009 Sam Hocevar 14 rue de Plaisance, 75014 Paris, France La copie et la distribution de copies exactes de cette licence sont autorisées, et toute modification est permise à condition de changer le nom de la licence. CONDITIONS DE COPIE, DISTRIBUTON ET MODIFICATION DE LA LICENCE PUBLIQUE RIEN À BRANLER 0. Faites ce que vous voulez, j’en ai RIEN À BRANLER. """ # auteur """ Créateur initial : Pierre Dubois http://pierre-dubois.org """ ====== Spécification d'un logiciel permettant l'entraînement et les performances ====== Les définitions suivantes sont inspirées de mes besoins, de ma tentative d'une première version de ApneaTimer, des tables d'exercices lues dans des livres, des exercices effectués à Apnée Attitude et aussi de l'utilisation de Apnea Lite. - Plusieurs modes : - Carré (SQ) - Simple (SQS) - Temps variables (SQV) - Hypoxie (O2) - Hypercapnie (CO2) - Table libre (Free) - Le mode SQ permet une configuration en nombre de cycles ou en durée totale. - Les modes O2 et CO2 sont calculés à partir de la durée d'apnée max, du delta d'augmentation et du temps de départ et de fin d'exercice. - Après le lancement de chaque mode, un chronomètre s'affiche. - Le chronomètre affiche une barre de progression correspondant au temps restant. - Le chronomètre affiche un décompte en gros du temps restant jusqu'à la prochaine transition. - Une transition est le passage d'un état à un autre. - Les états : - Inspi - PP - Expi - PV - Respiration libre - Les états « avancés » sont : - PP+expi passive - Dans les modes O2, CO2 et Free, après le lancement, la table en cours du cycle entier est affichée. Un indicateur rappelle où on s'en situe dans le cycle. - Dans le mode Free, il est possible d'indiquer pour chaque ligne une combinaison des états possibles. - Les combinaisons d'états possibles sont : - Inspi+Expi - Inspi+Expi+PV - Inspi+PP+Expi - Inspi+PP+Expi+PV - Respiration libre+PP