Bonjour, Le code est en deux parties : l'une pour Python et l'autre pour Arduino. Python : import serial import matplotlib.pyplot as plt from drawnow import drawnow U = [] t = [] liaison = serial.Serial('COM3', 9600) plt.ion() # indique à matplotlib mode interactif pour écrire données temps réel cnt = 0 fo = open('E:/em/CLASSES/TERMINALE/TLE_ELEC/rc/output.txt','w') def makeFig(): # fonction de tracé plt.ylim(0, 4) plt.title('acquisition temps réel') plt.grid(True) plt.ylabel('U(V)') plt.xlabel('t(s)') plt.plot(t, U) plt.ticklabel_format(useOffset=False) # interdit"l'autoscale" sur y while (liaison.inWaiting() == 0): # attend ici jusqu'à données pass # ne rien faire while (cnt < 3000): # si plus de 60 points, arrête acquisition valeur = liaison.readline().decode().strip().split() U.append(float(valeur[0]) * 5.0 / 1024.0) t.append(float(valeur[1])) ecrire = ' '.join(valeur) fo.write(ecrire) drawnow(makeFig) # mise à jour figure par drawnow plt.pause(.000001) # pause "brève". Important pour éviter plantage de drawnow cnt += 1 fo.close() liaison.close() print("Fin de l'acquisition") print() print('U =', U) print() print('t = ', t) Et pour Arduino : float uC = 0; float delta_t = 0.1; float temps = 0; float Unum ; void setup() { Serial.begin(9600); } void loop() { Unum = analogRead(A0);// Stockage de la tension lue sur la broche A0 dans la variable Unumerique Serial.print(Unum);// Affichage de la tension lue sur la broche A0 Serial.print("\t");// Tension suivie d'une tabulation Serial.println(temps);// Affichage de la date de la mesure et retour à la ligne delay(1000*delta_t);// Pause avant la prochaine mesure (milli seconde) temps += delta_t;// Incrémentation du temps } J'espère que cela pourra vous renseigner.
Projet très intéressant ! Bien expliqué ! Continuez !
Merci beaucoup, c'est très gentil.
Très bien expliqué merci beaucoup !
merci !
est ce que on peut avoir le code
Bonjour,
Le code est en deux parties : l'une pour Python et l'autre pour Arduino.
Python :
import serial
import matplotlib.pyplot as plt
from drawnow import drawnow
U = []
t = []
liaison = serial.Serial('COM3', 9600)
plt.ion() # indique à matplotlib mode interactif pour écrire données temps réel
cnt = 0
fo = open('E:/em/CLASSES/TERMINALE/TLE_ELEC/rc/output.txt','w')
def makeFig(): # fonction de tracé
plt.ylim(0, 4)
plt.title('acquisition temps réel')
plt.grid(True)
plt.ylabel('U(V)')
plt.xlabel('t(s)')
plt.plot(t, U)
plt.ticklabel_format(useOffset=False) # interdit"l'autoscale" sur y
while (liaison.inWaiting() == 0): # attend ici jusqu'à données
pass # ne rien faire
while (cnt < 3000): # si plus de 60 points, arrête acquisition
valeur = liaison.readline().decode().strip().split()
U.append(float(valeur[0]) * 5.0 / 1024.0)
t.append(float(valeur[1]))
ecrire = ' '.join(valeur)
fo.write(ecrire)
drawnow(makeFig) # mise à jour figure par drawnow
plt.pause(.000001) # pause "brève". Important pour éviter plantage de drawnow
cnt += 1
fo.close()
liaison.close()
print("Fin de l'acquisition")
print()
print('U =', U)
print()
print('t = ', t)
Et pour Arduino :
float uC = 0;
float delta_t = 0.1;
float temps = 0;
float Unum ;
void setup() {
Serial.begin(9600);
}
void loop() {
Unum = analogRead(A0);// Stockage de la tension lue sur la broche A0 dans la variable Unumerique
Serial.print(Unum);// Affichage de la tension lue sur la broche A0
Serial.print("\t");// Tension suivie d'une tabulation
Serial.println(temps);// Affichage de la date de la mesure et retour à la ligne
delay(1000*delta_t);// Pause avant la prochaine mesure (milli seconde)
temps += delta_t;// Incrémentation du temps
}
J'espère que cela pourra vous renseigner.
@@minelli6000 merci bcp !