from os import chdir

## Initialisation : adapter les deux (ou trois) lignes à votre environnement
chdir('/Documents/14-15/TP/TPMesureCoeffFrottement/') # Mettre ici le répertoire dans lequel est stocké le fichier .txt qui contient les données à étudier. Vérifier si sous Windows on peut se contenter de mettre des /
fileName='Fichier.txt' # Mettre ici le fichier qui a été exporté depuis LatisPro au format txt
seuil=4 # À ajuster si necessaire, mais normalement c'est OK
Fe=100000 # Fréquence d'échantillonage. Mettre un entier, pas un flottant !

## Exploitation du fichier. Détermination des temps de basculement pour le seuil choisi au dessus
#  -------------------------------------------------------
#  --------- Ne rien modifier à ce qui suit  --------------
#  --------- Ne rien modifier à ce qui suit  --------------
#  --------- Ne rien modifier à ce qui suit  --------------
#  --------- Ne rien modifier à ce qui suit  --------------
#  -------------------------------------------------------
données=[]
dates=[]
tensions=[]
Basculement=[] #On stocke ici les indices les temps de basculement
HautVersBas=True # 
fichier=open(fileName,'r')
ligne=fichier.readline() # On ignore la première ligne
ligne=fichier.readline()
while ligne != "":
    details=ligne[:-1].split(';')
    ligne=fichier.readline()
    tension=float(details[1].replace(',','.',1)) # On remplace la virgule par le point pour pouvoir lire convertir en float
    date=float(details[0].replace(',','.',1)) # Idem
    données.append([date,tension])
    dates.append(date)
    tensions.append(tension)
    if HautVersBas and tension<seuil:
        Basculement.append(date)
        HautVersBas = False
    elif not HautVersBas and tension>seuil:
        Basculement.append(date)
        HautVersBas = True
fichier.close()

## Affichage de la courbe complète
import matplotlib.pyplot as plt
plt.figure()
plt.plot(dates,tensions,'.')
plt.show()

## Affichage des détails autour des basculement
import matplotlib.pyplot as plt
plt.figure()
ideb=int(Fe*Basculement[0]) # indice du premier basculement
ifin=int(Fe*Basculement[9]) # indice du dernier basculement
deb=ideb-int((ifin-ideb)/3)
fin=ifin+int((ifin-ideb)/3)
plt.plot(dates[deb:fin],tensions[deb:fin],'.')
plt.show()


## Traitement En prenant comme unité de base une dent et le trou suivant ou un trou et la dent suivante
d=0.01 # Largeur d'une dent occultante en mètre
v=[] # Liste des vitesses successives des dents
for i in range(0,len(Basculement)-2):
    v.append(2*d/(Basculement[i+2]-Basculement[i]))

## Affichage
print("Les instants de basculement détectés sont (en s) ",Basculement)
print("Les vitesses estimées correspondantes sont (en m/s) ",v)

## Calcul des accélérations, à partir des vitesses calculées précédemment. À écrire par les étudiants
# Consignes : calculer les estimations des accélérations à partir de la liste des vitesses v et des temps de basculements Basculement
# Calculer l'accélération moyenne en utilisant la fonction mean de numpy
# Faire afficher le résultat
