﻿import numpy as np
from matplotlib.lines import Line2D
import matplotlib.pyplot as plt
import matplotlib.animation as animation
from Formula import *

class Scope(object):
    def __init__(self, ax, maxt=2, dt=0.02):
        self.ax = ax
        self.dt = dt
        self.maxt = maxt
        self.tdata = [0]
        self.ydata = [0]
        self.line = Line2D(self.tdata, self.ydata)
        self.ax.add_line(self.line)
        self.ax.set_ylim(0,2)
        self.ax.set_xlim(0, self.maxt)

    def update(self, y):
        t = self.tdata[-1] + self.dt
        self.tdata.append(t)
        self.ydata.append(y)
        if len(self.tdata)>100:
            self.tdata.pop(0)
            self.ydata.pop(0)
            print(self.tdata[-1],self.ydata[-1])
            self.ax.set_xlim(self.tdata[0], t)
        self.line.set_data(self.tdata, self.ydata)
        self.ax.figure.canvas.draw()
        return self.line,


def emitter(choix):

    while True:
        if choix==3:
            valeur=accelerometre('y')
        elif choix==1:
            valeur=etat_BP('gauche')
        elif choix==2:
            valeur=capteur_lumiere()
        elif choix==4:
            valeur=distance_IR(2)
        yield valeur

connecter()
while etat_BP('droit')==0:
    fig, ax = plt.subplots()
    scope = Scope(ax)

    choix=int(input("entrez votre choix :\n 1:Bouton poussoir\t2:Capteur luminosité\t3:accéléromètre\t\t4:Distance"))
    if choix ==1 :
        scope.ax.set_ylim(-0.1,1.1)
    elif choix==2 or choix==4:
        scope.ax.set_ylim(-10,4100)
    elif choix==3:
        scope.ax.set_ylim(-32768,32767)

    ani = animation.FuncAnimation(fig, scope.update, emitter(choix), interval=10,
                                  blit=True)


    plt.show()
deconnecter()