# data[].attributes.body
Laurent Meyer

# data[].attributes.attachment_link.title
Activités avec des microcontrôleurs LOSSON_2

# data[].attributes.attachment_link.title
Programme 2019 Première Spécialité Physique Chimie

# data[].attributes.attachment_link.title
Acquisition avec le logiciel REGRESSI_V2

# data[].attributes.body
Laurent Agénor

# data[].attributes.attachment_link.readable_text
﻿# Loi de Descartes

import math

n1=float(input("Donner la valeur de l'indice de réfraction du milieu 1"))
n2=float(input("Donner la valeur de l'indice de réfraction du milieu 2"))
i=float(input("Donner la valeur de l'angle de réfraction en degré"))

irad=math.radians(i)
sinr=n1*math.sin(irad)/n2

rrad=math.asin(sinr)
r=math.degrees(rrad)

print("La valeur de l'angle de réfraction est r=",round(r,1),"°")

# data[].attributes.attachment_link.readable_text
﻿# Loi de Descartes

import math

n1=float(input("Donner la valeur de l'indice de réfraction du milieu 1"))
n2=float(input("Donner la valeur de l'indice de réfraction du milieu 2"))
i=float(input("Donner la valeur de l'angle de réfraction en degré"))

irad=math.radians(i)
sinr=n1*math.sin(irad)/n2

rrad=math.asin(sinr)
r=math.degrees(rrad)

print("La valeur de l'angle de réfraction est r=",round(r,1),"°")

# data[].attributes.attachment_link.readable_text
﻿# Loi de Descartes

from math import *

n1=float(input("Donner la valeur de l'indice de réfraction du milieu 1"))
n2=float(input("Donner la valeur de l'indice de réfraction du milieu 2"))
i=float(input("Donner la valeur de l'angle de réfraction en degré"))

irad=radians(i)
sinr=n1*sin(irad)/n2

rrad=asin(sinr)
r=degrees(rrad)

print("La valeur de l'angle de réfraction est r=",round(r,1),"°")

# data[].attributes.body
programme

# data[].attributes.body
programme

# data[].attributes.body
programme

# data[].attributes.body
programme

# data[].attributes.body
programme

# data[].attributes.attachment_link.readable_text
﻿# Loi d'Ohm
from matplotlib import pyplot as plt # importation de la librairie graphique


I = [0,1,2,3,4,5] # liste des intensités en A
U = [0,11,18,30,40,53] # liste des tensions en V

plt.scatter(I,U,c='red',marker='o',label= "points expérimentaux")
# affichage des points en rouge avec un o
plt.plot(I,U,c='green', label = "on n'est pas en SVT ou en HG !")
# affichage des segments entre les points
plt.title("Loi d'Ohm") # affichage du titre
plt.xlabel("I(A)") # affichage en légende des grandeurs et des unités
plt.ylabel("U(V)")
plt.grid() # affichage du quadrillage
plt.axis([0,10,0,100])# affichage des valeurs minimales et maximales de x et y
plt.legend() # affichage des légendes

plt.show() # pour afficher le graphe à la fin

# data[].attributes.attachment_link.readable_text
﻿
# Loi d'Ohm
from matplotlib import pyplot as plt
from scipy.stats import linregress as lr
# importation du module de calcul de régression linéaire

I = [0,1,2,3,4,5]
U = [0,11,18,30,40,53]
plt.scatter(I,U,c='red',marker='o',label="points expérimentaux")
plt.title("Loi d'Ohm")
plt.xlabel("I(A)")
plt.ylabel("U(V)")
plt.grid()
plt.axis([0,10,0,100])

regression=lr(I,U) # calcul de la régression linéaire
#affectaction des résultats de la régression
a=regression[0] #  coeff directeur
b=regression[1] # ordonnée origine
R2=regression[2] # coeff correl
print("pente",a) # impression des résultats
print("ordonnée origine",b)
print("Coeff corrélation",R2)

plt.plot([0,10],[b,a*10+b],c='blue',label="c'est mieux avec une modélisation")
# relie le point (0,b) et (10,10*a+b)
plt.legend()
plt.show()

# data[].attributes.attachment_link.readable_text
﻿# Loi d'Ohm
from matplotlib import pyplot as plt
import numpy as np
import math
# importation de la bibliothèque numpy

I = np.array([0,1,2,3,4,5]) # tableau des abscisses
U = np.array ([0,11,18,30,40,53])
plt.scatter(I,U,c='red',marker='o',label="points expérimentaux")
plt.title("Loi d'Ohm")
plt.xlabel("I(A)")
plt.ylabel("U(V)")
plt.grid()
plt.axis([0,10,0,100])

Modele=np.polyfit(I,U,1) # modélisation par un polynome d'ordre 1
a= Modele[0]
b= Modele[1]

R = U/I
print("pente a = ",a)
print("ordonnée origine b = ",b)
plt.plot([0,10],[b,a*10+b],c='blue',label="c'est mieux avec une modélisation")
# relie le point (0,b) et (10,10*a+b)
plt.text(1,60,"y = ax + b")
print("R=",R)

plt.legend()
plt.show()

# data[].attributes.attachment_link.readable_text
﻿# Loi d'Ohm
from matplotlib import pyplot as plt
import numpy as np
import math
# importation de la bibliothèque numpy

I = np.array([0,1,2,3,4,5]) # tableau des abscisses
U = np.array ([0,11,18,30,40,53])
plt.scatter(I,U,c='red',marker='o',label="points expérimentaux")
plt.title("Loi d'Ohm")
plt.xlabel("I(A)")
plt.ylabel("U(V)")
plt.grid()
plt.axis([0,10,0,100])

Modele=np.polyfit(I,U,1) # modélisation par un polynome d'ordre 1
a= Modele[0]
b= Modele[1]


print("pente a = ",a)
print("ordonnée origine b = ",b)
plt.plot([0,10],[b,a*10+b],c='blue',label="c'est mieux avec une modélisation")
# relie le point (0,b) et (10,10*a+b)
plt.text(1,60,"y = ax + b")
R = U/I
print("R=",R) # avantage pas de boucle


plt.legend()
plt.show()

# data[].attributes.attachment_link.readable_text
﻿# Loi d'Ohm
from matplotlib import pyplot as plt
import numpy as np


I = np.array([0,0.1,0.15,0.2,0.3,0.5])
U = np.array ([9,8,7.7,7.2,6.1,3.9])

#Entrées des paramètres du modèle
a=float(input("Entrer la valeur de la pente ou coeff directeur"))
b=float(input("Entrer la valeur de l'ordonnée à l'origine"))

x=np.linspace(0,max(I),10) #création de 10 valeurs comprises entre 0 et Imax
y=a*x+b

plt.scatter(I,U,c='red',marker='o',label="points expérimentaux")
plt.title("Caractéristique d'une pile")
plt.xlabel("I(A)")
plt.ylabel("U(V)")
plt.grid()
plt.axis([0,max(I),0,max(U)+1])
plt.plot(x,y,c='red',label="Modélisation par une droite")
plt.legend()
plt.text(0.2,3,"U = aI + b")
print("U=",a,"I+",b)
plt.show()

# data[].attributes.attachment_link.readable_text
﻿# Chute verticale d'une altitude H avec une vitesse initiale horizontale et g = 10 N/kg
from math import *
from matplotlib import pyplot as plt

V = float(input("Entrer la vitesse horizontale V en m/s")) # conversion en réel
H= float(input("Entrer l'altitude initiale H en mètre"))
dt=float(input("Entrer la durée dt entre 2 points successifs"))
N=int(input("Entrer le nombre de points N de la trajectoire")) # Conversion en entier
Titre = str(input("Entrer la légende")) # conversion chaîne de caractères

t =[] #préparation d'une liste
x=[]
y=[]

for i in range (0,N): # boucle pour i compris entre 0 et N-1 + indentation
    t.append(i*dt) # affecte la valeur dans la liste t en dernière position
    x.append(V*t[i])
    y.append(H-5*t[i]**2) # t[i]** t au carré
print("N=",N) # impression de N
print("t",t) # impression de la liste t
print("x",x)
print("y",y)

plt.scatter(x,y,marker='o',color='orange')
plt.xlabel("x(m)")
plt.ylabel("y(m)")
plt.title(Titre)
plt.axis('equal') # repère orthonormé
plt.show()


# data[].attributes.attachment_link.readable_text
﻿# Chute verticale d'une hauteur H avec vitesse horizontale V
from math import *
from matplotlib import pyplot as plt

V = float(input("Entrer la vitesse horizontale V en m/s"))
H= float(input("Entrer l'altitude initiale H en m"))
dt=float(input("Entrer dt"))
N=int(input("Entrer le nombre de points N"))
legende = str(input("Entrer une légende"))

t =[]
x=[]
y=[]

for i in range (0,N):
    t.append(i*dt)
    x.append(V*t[i])
    y.append(H-5*t[i]**2)

print("N=",N)
print("t",t)
print("x",x)
print("y",y)

plt.scatter(x,y,marker='o',color='orange')
plt.xlabel("x(m)")
plt.ylabel("y(m)")
plt.title(legende)
plt.axis('equal')

vx=[]# création de la liste vx
vy=[]
v=[]
for i in range (0,N-1):
    vx.append((x[i+1]-x[i])/dt)
    vy.append((y[i+1]-y[i])/dt)
    v.append((vx[i]**2+vy[i]**2)**0.5)

print ("vmax=",max(v),"m/s")
print("vx",vx)
print("vy",vy)
# tracé des vecteurs vitesse
for i in range (0,N-1):
    plt.arrow(x[i],y[i],vx[i],vy[i],head_width=0.2,head_length=0.2,color='blue')
plt.show()


# data[].attributes.attachment_link.readable_text
﻿# Chute verticale d'une hauteur H avec vitess horizontale V
from math import *
from matplotlib import pyplot as plt

V = float(input("Entrer la vitesse horizontale V en m/s"))
H= float(input("Entrer l'altitude initiale H en m"))
dt=float(input("Entrer dt"))
N=int(input("Entrer le nombre de points N"))
legende = str(input("Entrer une légende"))

t =[]
x=[]
y=[]

for i in range (0,N):
    t.append(i*dt)
    x.append(V*t[i])
    y.append(H-5*t[i]**2)

print("N=",N)
print("t",t)
print("x",x)
print("y",y)

plt.scatter(x,y,marker='o',color='orange')
plt.xlabel("x(m)")
plt.ylabel("y(m)")
plt.title(legende)
plt.axis('equal')

vx=[]
vy=[]
v=[]
for i in range (0,N-1):
    vx.append((x[i+1]-x[i])/dt)
    vy.append((y[i+1]-y[i])/dt)
    v.append((vx[i]**2+vy[i]**2)**0.5)

print ("vmax=",max(v),"m/s")
print("vx",vx)
print("vy",vy)


for i in range (0,N-1):
    plt.arrow(x[i],y[i],2*vx[i]/max(v),2*vy[i]/max(v),head_width=0.2,head_length=0.2,color='blue')

plt.show()


# data[].attributes.attachment_link.readable_text
﻿# avancement transformation chimique entre le diiode et les ions thiosulfate
# I2 + 2S2O32- -> 2 I- + S4O62-
ndiiode = float (input('ndiiode (en mol) = '))
nthio = float (input('nthio (en mol) = '))

x1=ndiiode
x2=nthio/2

if (x1==x2):
    print ("Les proportions sont stoechiométriques et xmax=",x1,"mol")
    xmax=x1
elif (x1<x2) :
    print("Le diiode est le réactif limitant et xmax=",x1,"mol")
    xmax=x1

else :
    print("Les ions thiosulfate sont limitants et xmax=",x2,"mol")
    xmax=x2

ndiiodef=ndiiode-xmax
nthiof=nthio-2*xmax
nioduref=2*xmax
ntetraf=xmax
print("xmax",xmax,"mol")
print("nI2f=",ndiiodef,"mol")
print("nthio2f=",nthiof,"mol")
print("nioduref=",nioduref,"mol")
print("ntetraf=",ntetraf,"mol")

# data[].attributes.attachment_link.readable_text
﻿# Chute verticale d'une hauteur H avec vitess horizontale V
from math import *
from matplotlib import pyplot as plt

V = float(input("Entrer la vitesse horizontale V en m/s"))
H= float(input("Entrer l'altitude initiale H en m"))
dt=float(input("Entrer dt"))
N=int(input("Entrer le nombre de points N"))
legende = str(input("Entrer une légende"))

t =[]
x=[]
y=[]

for i in range (0,N):
    t.append(i*dt)
    x.append(V*t[i])
    y.append(H-5*t[i]**2)

print("N=",N)
print("t",t)
print("x",x)
print("y",y)

plt.scatter(x,y,marker='o',color='orange')
plt.xlabel("x(m)")
plt.ylabel("y(m)")
plt.title(legende)
plt.axis('equal')

vx=[]
vy=[]
v=[]
for i in range (0,N-1):
    vx.append((x[i+1]-x[i])/dt)
    vy.append((y[i+1]-y[i])/dt)
    v.append((vx[i]**2+vy[i]**2)**0.5)

print ("vmax=",max(v),"m/s")
print("vx",vx)
print("vy",vy)

varvx=[]
varvy=[]

for i in range (0,N-2):
    varvx.append((vx[i+1]-vx[i])/dt)
    varvy.append((vy[i+1]-vy[i])/dt)

for i in range (0,N-1):
    plt.arrow(x[i],y[i],2*vx[i]/max(v),2*vy[i]/max(v),head_width=0.2,head_length=0.2,color='blue')

for i in range (0,N-2):
    plt.arrow(x[i],y[i],2*varvx[i]/max(v),2*varvy[i]/max(v),head_width=0.2,head_length=0.2,color='red')

plt.show()



# data[].attributes.attachment_link.readable_text
﻿# Chute verticale d'une hauteur H avec vitess horizontale V
from math import *
from matplotlib import pyplot as plt

V = float(input("Entrer la vitesse horizontale V en m/s"))
H= float(input("Entrer l'altitude initiale H en m"))
dt=float(input("Entrer dt"))
N=int(input("Entrer le nombre de points N"))
legende = str(input("Entrer une légende"))
m=float(input("Entrer la valeur de la masse en kg"))

t=[]
x=[]
y=[]

for i in range (0,N):
    t.append(i*dt)
    x.append(V*t[i])
    y.append(H-5*t[i]**2)

print("N=",N)
print("t",t)
print("x",x)
print("y",y)

plt.figure(1)
plt.scatter(x,y,marker='o',color='orange')
plt.xlabel("x(m)")
plt.ylabel("y(m)")
plt.title(legende)
plt.axis('equal')

vx=[]
vy=[]
v=[]
Epp=[]
T=[]



for i in range (0,N-1):
    vx.append((x[i+1]-x[i])/dt)
    vy.append((y[i+1]-y[i])/dt)
    v.append((vx[i]**2+vy[i]**2)**0.5)
    Epp.append(m*10*y[i])
    T.append(t[i])

print("v = ",v)

Ec=[]
for i in range (0,N-1):
    Ec.append(0.5*m*v[i]**2)

Em=[]
for i in range (0,N-1):
    Em.append(Ec[i]+Epp[i])

plt.figure(2)
plt.plot(T,Epp,color='red',label='Epp(J)')
plt.plot(T,Ec,color='blue',label='Ec(J)')
plt.plot(T,Em,color='green',label='Em(J)')
plt.xlabel("t(s)")
plt.ylabel("E(m)")
plt.title(legende)
plt.legend()

plt.show()


# data[].attributes.attachment_link.readable_text
﻿# Chute verticale d'une hauteur H avec vitess horizontale V
from math import *
from matplotlib import pyplot as plt

V = float(input("Entrer la vitesse horizontale V en m/s"))
H= float(input("Entrer l'altitude initiale H en m"))
dt=float(input("Entrer dt"))
N=int(input("Entrer le nombre de points N"))
legende = str(input("Entrer une légende"))
m=float(input("Entrer la valeur de la masse en kg"))

t=[]
x=[]
y=[]
vx=[]
vy=[]
v =[]

for i in range (0,N):
    t.append(i*dt)
    x.append(V*t[i])
    y.append(H-5*t[i]**2)
    vx.append(V)
    vy.append(-10*t[i])
    v.append((vx[i]**2+vy[i]**2)**0.5)

print("N=",N)
print("t",t)
print("x",x)
print("y",y)
print("v",v)
print("vx",vx)
print("vy",vy)

plt.figure(1)
plt.scatter(x,y,marker='o',color='orange')
plt.xlabel("x(m)")
plt.ylabel("y(m)")
plt.title(legende)
plt.axis('equal')


Ec=[]
Epp=[]
Em=[]
for i in range (0,N):
    Ec.append(0.5*m*v[i]**2)
    Epp.append(m*10*y[i])
    Em.append(Ec[i]+Epp[i])

plt.figure(2)
plt.plot(t,Epp,color='red',label='Epp(J)')
plt.plot(t,Ec,color='blue',label='Ec(J)')
plt.plot(t,Em,color='green',label='Em(J)')
plt.xlabel("t(s)")
plt.ylabel("E(m)")
plt.title(legende)
plt.legend()

plt.show()


# data[].attributes.attachment_link.readable_text
﻿# Onde périodique
import numpy as np
from matplotlib import pyplot as plt
from math import *

T= float(input("Entrer la période en s"))
A = float(input(" la valeur de l'amplitude en m"))
t1=float(input("borne inférieure axe des temps en s"))
t2=float(input("borne supérieure axe des temps en s"))

f = 1/T
print("f=",f,"Hz")

t=np.linspace(t1,t2,(t2-t1)/T*50)# 50 valeurs par période entre t1 et t2
X=A*np.sin(2*3.14*t/T)
plt.title("onde périodique à la surface de l'eau")
plt.xlabel('t(s)')
plt.ylabel('X(m)')
plt.grid(True)

plt.plot(t,X,c='red')


plt.show()


# data[].attributes.attachment_link.readable_text
﻿#Propagation d'une onde
import numpy as np
import matplotlib.pyplot as plt
from math import *

f = float(input("Entrer la valeur de la fréquence en Hz"))
A = float(input("Entrer la valeur d'amplitude en m"))
v = float(input("Entrer la valeur de la célérité en m/s"))
dt = int(input("Entrer un entier comme valeur de la durée en s"))

T = float(1/f)
Londe=float(v*T)
print("période T=",T,"s")
print("longueur d'onde",Londe,"m")

x=np.linspace(0,5*Londe,1000) # 1000 valeurs entre 0 et 5 longueurs d'onde

for i in range (0,dt):
    y = A*np.sin(2*3.14*(x/Londe-i/T))
    plt.clf() # efface le graphe
    plt.plot(x,y)
    plt.ylim(-15,15)
    plt.grid()
    plt.title("Propagation onde sinusoïdale")
    plt.xlabel("x(m)")
    plt.ylabel("y(m")
    print(i,"s")
    plt.pause(0.5) # pause pendant 0.5s
plt.show()









# data[].attributes.body
Acquisition Arduino

# data[].attributes.attachment_link.readable_text
﻿# Créé par daerty, le 24/04/2019 en Python 3.4
from math import *
from matplotlib import pyplot
import serial

Nmesures = int(input("Entrer le nombre de mesures"))
dt=float(input("période échantillonnage"))

serie = serial.Serial(port='COM6',baudrate=9600)
t = []
n = []
U = []

for i in range (0,Nmesures):
    nombre=float(serie.readline())
    print("i=",i)
    print("n=",nombre)
    n.append(nombre)
    t.append(dt*i)
    U.append(n[i]/1023*5)
    pyplot.pause(dt)

print("valeurs de t",t)
print ("valeurs de n",n)
print ("valeurs de U",U)
pyplot.grid()
pyplot.title("acquisition temporelle")
pyplot.axis([0,max(t),0,max(n)+100])
pyplot.xlabel("t(s)")
pyplot.ylabel("n")
pyplot.scatter(t,n,color="red",marker="+")
pyplot.plot(t,n,color="green")

pyplot.show()
serie.close()

# data[].attributes.body
Eric Garnier