Bonjour,
Je suis nouveau dans le forum, et j'aurais besoin de renseignements concernant un script en python. (Si quelqu'un est disponible pour me répondre...)
Je ne connais pas ce langage de prog. (je connais seulement 'Delphi').
J'ai trouvé des bouts de scripts que j'ai tenté de rassembler, le but est d'acquérir des signaux analogique à l'aide d'un Raspberry Pi sur lequel sera connecté un circuit ADC "MCP3008".
Le script fait l'acquisition de 8 entrées analogiques, convertit les signaux en mV et sauvegarde les mesures dans un fichier texte.
Je n'ai pas pu tester, je n'ai pas encore le matériel à disposition.
Est ce que je suis dans le vrai ou j'ai écris n'importe quoi et c'est pas prêt de fonctionner, si quelqu'un pouvait me renseigner, ça m'aiderais beaucoup...
Merci...
Le code en question :
#!/usr/bin/env python
import time
import os
import RPi.GPIO as GPIO
# Ouverture du fichier de données
NomFichier = 'test.txt'
Fichier = open(NomFichier,'a') # instanciation de l'objet Fichier
GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)
#-------------------------------------------------------------------------------------------------------------------------------------------
#Fonction lisant les donnees SPI de la puce MCP3008, parmi 8 entrees, de 0 a 7
def readadc(adcnum, clockpin, mosipin, misopin, cspin):
if ((adcnum > 7) or (adcnum < 0)):
return -1
GPIO.output(cspin, True)
GPIO.output(clockpin, False) # start clock low
GPIO.output(cspin, False) # bring CS low
commandout = adcnum
commandout |= 0x18 # start bit + single-ended bit
commandout <<= 3 # we only need to send 5 bits here
for i in range(5):
if (commandout & 0x80):
GPIO.output(mosipin, True)
else:
GPIO.output(mosipin, False)
commandout <<= 1
GPIO.output(clockpin, True)
GPIO.output(clockpin, False)
adcout = 0
# read in one empty bit, one null bit and 10 ADC bits
for i in range(12):
GPIO.output(clockpin, True)
GPIO.output(clockpin, False)
adcout <<= 1
if (GPIO.input(misopin)):
adcout |= 0x1
GPIO.output(cspin, True)
adcout /= 2 # first bit is 'null' so drop it
return adcout
# Ces numeros de pins GPIO doivent etre modifies pour correspondre aux broches utilisées.
SPICLK = 18
SPIMISO = 23
SPIMOSI = 24
SPICS = 25
# definition de l'interface SPI
GPIO.setup(SPIMOSI, GPIO.OUT)
GPIO.setup(SPIMISO, GPIO.IN)
GPIO.setup(SPICLK, GPIO.OUT)
GPIO.setup(SPICS, GPIO.OUT)
#definition du ADC utilise (broche du MCP3008)
adcnum0 = 0
adcnum1 = 1
adcnum2 = 2
adcnum3 = 3
adcnum4 = 4
adcnum5 = 5
adcnum6 = 6
adcnum7 = 7
#-------------------------------------------------------------------------------------------------------------------------------------------
# Boucle while pour éxécuter x fois les mesures et inscrire les résultats dans un fichier texte
i = 1
while i <= 10:
# Lecture de la valeur brute du capteur 1 à 8
read_adc0 = readadc(adcnum0, SPICLK, SPIMOSI, SPIMISO, SPICS)
read_adc1 = readadc(adcnum1, SPICLK, SPIMOSI, SPIMISO, SPICS)
read_adc2 = readadc(adcnum2, SPICLK, SPIMOSI, SPIMISO, SPICS)
read_adc3 = readadc(adcnum3, SPICLK, SPIMOSI, SPIMISO, SPICS)
read_adc4 = readadc(adcnum4, SPICLK, SPIMOSI, SPIMISO, SPICS)
read_adc5 = readadc(adcnum5, SPICLK, SPIMOSI, SPIMISO, SPICS)
read_adc6 = readadc(adcnum6, SPICLK, SPIMOSI, SPIMISO, SPICS)
read_adc7 = readadc(adcnum7, SPICLK, SPIMOSI, SPIMISO, SPICS)
# conversion de la valeur brute lue en milivolts = ADC * ( 3300 / 1024 )
mv0 = read_adc0 * ( 3300.0 / 1024.0)
mv1 = read_adc1 * ( 3300.0 / 1024.0)
mv2 = read_adc2 * ( 3300.0 / 1024.0)
mv3 = read_adc3 * ( 3300.0 / 1024.0)
mv4 = read_adc4 * ( 3300.0 / 1024.0)
mv5 = read_adc5 * ( 3300.0 / 1024.0)
mv6 = read_adc6 * ( 3300.0 / 1024.0)
mv7 = read_adc7 * ( 3300.0 / 1024.0)
# Ecriture dans le fichier texte
Fichier.write((mv0)+('\t')+(mv1)+('\t')+(mv2)+('\t')+(mv3)+('\t')+(mv4)+('\t')+(mv5)+('\t')+(mv6)+('\t')+(mv7)+('\t')+(mv8)+('\n'))
time.sleep(1) #Pause de 1 seconde
Fichier.close()
Partager