import time
from simple_pid import PID
from itertools import count
import matplotlib.pyplot as plt
from matplotlib.animation import FuncAnimation

import minimalmodbus

tempSens = minimalmodbus.Instrument('/dev/ttyUSB1', 1)
tempSens.serial.baudrate = 38400

OutputDriver = minimalmodbus.Instrument('/dev/ttyUSB1', 1)
OutputDriver.serial.baudrate = 38400

pid = PID(10, 0.01, 0.1, setpoint=100)

plt.style.use('fivethirtyeight')

x_values = []
y_values = []

index = count()


def animate(i):
    try:
        temp = tempSens.read_float(1, functioncode=4, byteorder=0)
        y_values.append(temp)
        x_values.append(next(index))
        #print(temp)
        print(tempSens.read_float(11, functioncode=4, byteorder=0))

#        print(temp, end='\t')
#        control = pid(temp)
#        if(control>100):
#            control = 100;
#        control = (control/1000.0)
#        if(control < 0):
#            control = 0
#        print(control, end='\t')
#        print(0.1-control)
#
#        if(control > 0):
#            OutputDriver.write_bit(0, 1, functioncode=15)
#
#        time.sleep(control)
#
#        if(control<0.1):
#            OutputDriver.write_bit(0, 0, functioncode=15)
#    
#        time.sleep(0.1-control)

        plt.cla()
        plt.scatter(x_values, y_values)
    except Exception as e: print(e)


ani = FuncAnimation(plt.gcf(), animate, 2000)


plt.tight_layout()
plt.show()
