0
votes

Comment obtenir Python d'ajouter et de diviser plusieurs variables?

Les programmeurs de compagnons de vente de salutations Python. Je construis un projet Raspberry Pi conçu pour utiliser des capteurs d'humidité dans mon jardin. J'ai le programme conçu pour prendre des lectures pendant trente secondes, puis les moyennes dans un numéro. Il utilise quatre capteurs et s'écoule de Python3.5 Les capteurs tout fonctionnent tout à fait bien, mais je passe un problème à faire du python pour faire les calculs en moyenne pour la moyenne des intrants. Je pense que cela ajoute les variables, mais cela ne semble pas les diviser. Voici le code:

def TEST_SOIL():
   output = analogInput(0) # Reading from CH0
   output = interp(output, [0, 1023], [100, 0])
   output = int(output)
   output = (output - 12.5)
   output2 = analogInput(1) # Reading from CH0
   output2 = interp(output2, [1, 1023], [100, 1])
   output2 = int(output2)
   output2 = (output2 - 12.5)
   output3 = analogInput(2) # Reading from CH0
   output3 = interp(output3, [2, 1023], [100, 2])
   output3 = int(output3)
   output3 = (output3 - 12.5)
   output4 = analogInput(3) # Reading from CH0
   output4 = interp(output4, [3, 1023], [100, 3])
   output4 = int(output4)
   output4 = (output4 - 12.5)


1 commentaires

Eh bien c'est corrigé maintenant.


3 Réponses :


2
votes

Changement (sortie + sortie2 + sortie3 + sortie4 / 4) à (sortie + sortie2 + sortie3 + sortie4) / 4

Votre code est d'abord divisé par quatre la dernière variable (Ouotput4), puis les ajoutant ensemble.

(EDIT: oublié Il n'y a pas de fonction moyenne pour la liste. Désolé. Vous pouvez utiliser somme () pour une liste, puis diviser par len () de cette Liste)


2 commentaires

Je vais lui donner un coup de feu


Il dit qu'il y a quelque chose qui ne va pas avec la fonction "Test_Soil ()", donc je n'ai pas pu tester votre solution. Pouvez-vous m'aider à résoudre la fonction?



3
votes

J'ai pris la liberté de refactory de votre code un peu.

Je suppose que les 4 lectures analogiques différentes doivent être aussi telles que telles et ne les touchent pas, mais sinon ...

  • test_siloil renvoie désormais un 4 tuple des lectures.
  • moyenne_output () prend tout iTable de chiffres à la moyenne.
  • bip () bips le buzzer.
  • principale appelle les bits ci-dessus dans une boucle, collecte des valeurs dans un tableau, ce qui en moyenne est enfin. xxx

3 commentaires

Cela semble fonctionner. Une dernière chose, dirigera la principale à "retourner final_averover" publier une variable que je peux travailler pour enregistrer les données?


Je l'ai essayé, mais quand j'ai dit "Main () O = final_oOvert", Python a déclaré que final_avery n'était pas défini.


J'ai également remarqué quelque chose d'étrange: le code énonce toujours le numéro "20.5" même si je ajuste les capteurs. Pouvez-vous me dire si le code le fait ou les capteurs?



1
votes

Cela pourrait être capable de réparer votre code et de le ranger un peu Au lieu d'écrire la même chose à nouveau, vous pouvez utiliser une boucle pour rendre le travail plus facile xxx

espère qu'il aide


0 commentaires