[Python] While loop wacht op nieuwe waarde.

Pagina: 1
Acties:

Onderwerpen

Vraag


Acties:
  • 0 Henk 'm!

  • Putyah
  • Registratie: Juni 2006
  • Laatst online: 18:22
Voor mijn Raspberry Pi heb ik een Python script geschreven. Via een sensor wordt een bepaalde waarde ingeladen. Als de sensor boven een specifieke waarde uit komt zal een script worden uitgevoerd. Onderstaand een voorbeeld code:

code:
1
2
3
4
while True
   if input > waarde
       code
       wait_for input > waarde


Het probleem is dat ik niet helemaal uit het stuk wait_for_input uit kom. Welke oplossing kan ik hier het beste voor gebruiken?

Ik heb geprobeerd om de functie wait_for_edge() te gebruiken, alleen is het niet mogelijk om op basis van een waarde te gebruiken (alleen RISING of FALLING). Mijn verwachting is dat de oplossing relatief simpel is, maar ik kom er zelf niet.

Het betreft een Raspberry PI B+ met Raspbian als OS.

Alle reacties


Acties:
  • 0 Henk 'm!

  • zzattack
  • Registratie: Juli 2008
  • Laatst online: 17:46
Aangezien het zo te merken om een analoge waarde gaat zit er niets anders op dan periodiek te pollen/samplen. In de tussentijd kun je sleep'en om cpu cycles te besparen.

Acties:
  • 0 Henk 'm!

  • Kraay89
  • Registratie: September 2012
  • Laatst online: 08-09 10:31
Putyah schreef op maandag 10 oktober 2016 @ 00:45:
Voor mijn Raspberry Pi heb ik een Python script geschreven. Via een sensor wordt een bepaalde waarde ingeladen. Als de sensor boven een specifieke waarde uit komt zal een script worden uitgevoerd.

[...]
Wachten in je script wil je liever niet, dat is een onnodige belasting van je processor.
Ik weet niet hoe snel/tijdskritiek je script moet zijn, maar je zou kunnen overwegen je script aan te roepen met een cronjob, op vaste intervals. Je checkt met je script dan eerst de waarde, en als die niet hoog/goed genoeg is, laat je het script stilletjes eindigen. Voldoet de waarde wel, dan voer je de rest van je script wel uit.

Acties:
  • 0 Henk 'm!

  • AMD1800
  • Registratie: Januari 2007
  • Laatst online: 17:30
Ik zou de voorwaarde op basis waarvan de while loop draait tijdelijk op False zetten. Anders kom je per definitie niet uit de while-loop.
Edit: dit kan dus niet. Dan dus onderstaande:

Als dit niet kan dan zou ik in de while loop weer laten checken of die voorwaarde nog geldt.

[ Voor 10% gewijzigd door AMD1800 op 11-10-2016 13:46 ]