Je vois que le site que tu indique, c'est une traduction de cet article de Adafruit:
http://learn.adafruit.com/reading-a-ana ... i/overview
Ce sont des programmeurs C, et on le "feel" a travers le code et le formatage... (je fait du C aussi depuis très longtemps).
Bon, pour ta question, si tu défini:
La ligne qui suit devra être décalée. C'est de cette façon que Python définit le scope d'une fonction, d'une boucle etc. C'est fondamental au code Python.
Ici, on a 2 options. J'y vais par le plus court chemin, on déplace le def main(): juste avant la boucle while. Il faut donc décaler le while et tout ce qui est dans cette boucle.
Python veut un nombre défini d'espaces pour l'alignement. Dans leurs cas ils ont utilisé 8 espaces. C'est beaucoup. Je recommande et utilise plutôt 4. Et pas de tabulation. Tout éditeur qui se respecte a cette fonction (geany, gedit, scribes, vim, emacs, spe etc).
Il y a un guide de style que je met ici comme reference:
http://lapagearegis.free.fr/guidedestyle.html
Mais, bon, j'ai utilisé les 8 espaces pour corriger le script que tu as mis ici. J'ai aussi enlevé des espaces ou normalement il n'y en a pas. C'est plus facile a lire ainsi. Donc voila le code:
Code: Select all
#!/usr/bin/env python
# -*- coding: latin-1 -*-
import time
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BCM)
DEBUG = 1
# Lit les données SPI d'une puce MCP3008, 8 canaux disponibles (adcnum de 0 à 7)
def readadc(adcnum, clockpin, mosipin, misopin, cspin):
if((adcnum > 7) or (adcnum < 0)):
return -1
GPIO.output(cspin, True)
GPIO.output(clockpin, False) # met Clock à Low
GPIO.output(cspin, False) # met CS à Low (active le module MCP3008)
commandout = adcnum # numéro de channel
commandout |= 0x18 # OR pour ajouter Start bit + signle-ended bit
# 0x18 = 24d = 00011000b
commandout <<= 3 # décalage de 3 bits à gauche
# Envoi des Bits sur le bus SPI
for i in range(5):
# faire un AND pour determiner l'état du bit de poids le plus
# fort (0x80 = 128d = 10000000b)
if(commandout & 0x80): # faire un AND pour déterminer l'état du bit
GPIO.output(mosipin, True)
else:
GPIO.output(mosipin, False)
commandout <<= 1 # décalage de 1 bit sur la gauche
# Envoi du bit mosipin avec signal d'horloge
GPIO.output(clockpin, True)
GPIO.output(clockpin, False)
# lecture des bits renvoyés par le MCP3008
# Lecture de 1 bit vide, 10 bits de données et un bit null
adcout = 0
for i in range(12):
# Signal d'horloge pour que le MCP3008 place un bit
GPIO.output(clockpin, True)
GPIO.output(clockpin, False)
# décalage de 1 bit vers la gauche
adcout <<= 1
# stockage du bit en fonction de la broche miso
if(GPIO.input(misopin)):
adcout |= 0x1 # active le bit avec une opération OR
# Mettre Chip Select à High (désactive le MCP3008)
GPIO.output(cspin, True)
# Le tout premier bit (celui de poids le plus faible, le dernier lut)
# est null. Donc on l'elimine ce dernier bit en décalant vers la droite
adcout >>= 1
return adcout
# Broches connectées sur l'interface SPI du MCP3008 depuis le Cobbler
# (changer selon vos besoins)
SPICLK = 18
SPIMISO = 23
SPIMOSI = 24
SPICS = 25
# Initialisation de l'interface SPI
GPIO.setup(SPIMOSI, GPIO.OUT)
GPIO.setup(SPIMISO, GPIO.IN)
GPIO.setup(SPICLK, GPIO.OUT)
GPIO.setup(SPICS, GPIO.OUT)
# Potentiomètre 10KOhms raccordés sur le canal ADC #0
potentiometer_adc = 0
def main():
while True:
# Lecture analogique, retourne une valeur entre 0 et 1023
# pour une valeur de tension entre 0 et VRef (3.3v)
trim_pot = readadc(potentiometer_adc, SPICLK, SPIMOSI, SPIMISO, SPICS)
print("Valeur: " + str(trim_pot))
# convertir en tension
print("tension: " + str((3.3 * trim_pot) / 1024))
# attendre une demi-seconde
time.sleep(0.5)
if __name__ == "__main__":
try:
main()
except KeyboardInterrupt:
gpio.cleanup()
Aussi, c'est mieux d'utiliser:
# -*- coding: utf-8 -*-
Plutot que:
# -*- coding: latin-1 -*-
Tout va vers l'unicode.
Finalement, tu peux aussi utiliser try directement sur une partie du code, plutôt que sur une fonction main. Par exemple, ici j'utilise un try: dans un script tout simple sans main():
http://raspberry-python.blogspot.com/20 ... tml#codigo
François