Ik zal proberen kort uit te leggen wat ik wil: ik heb een scriptje voor het uitlezen van de mcp 3008 (een chip die analoge signalen van een sensor omzet in digitale signalen, die de raspberry pi kan uitlezen). Nu werkt het script naar behoren. Maar ik wil dat het script ook telt hoevaak er licht waargenomen is. Nu heb ik het probleem dat dit script elke keer als er licht wordt waargenomen een 1 weergeeft, en als er geen licht is 0, dat is niet wat ik wil, ik heb ook al meerdere malen gezocht naar zo'n soort script, maar het wil niet werken.
Hier is nu mijn huidige script, ik moet wel er bij zeggen dat ik het niet zelf gescheven heb.
Ik zelf heb niet veel verstand van python, de enige programeer taal die ik een beetje beheers is php(basis).
Script:
Zouden jullie mij kunnen vertellen hoe ik dus een simpele opteller kan maken als een bepaalde conditie true is?
Hier is nu mijn huidige script, ik moet wel er bij zeggen dat ik het niet zelf gescheven heb.
Ik zelf heb niet veel verstand van python, de enige programeer taal die ik een beetje beheers is php(basis).
Script:
Python:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
| #!/usr/bin/python #-------------------------------------- # This script reads data from a # MCP3008 ADC device using the SPI bus. # # Author : Matt Hawkins # Date : 13/10/2013 # # http://www.raspberrypi-spy.co.uk/ # #-------------------------------------- import spidev import time import os global countl # Open SPI bus spi = spidev.SpiDev() spi.open(0,0) # Function to read SPI data from MCP3008 chip # Channel must be an integer 0-7 def ReadChannel(channel): adc = spi.xfer2([1,(8+channel)<<4,0]) data = ((adc[1]&3) << 8) + adc[2] return data # Function to convert data to voltage level, # rounded to specified number of decimal places. def ConvertVolts(data,places): volts = (data * 3.3) / 1023 volts = round(volts,places) return volts # Define sensor channels light_channel = 0 # Define delay between readings delay = 0.01 # define start counting stuff countl = 0 def counter(): count1 = countl + 1 return count1 while True: # Read the light sensor data light_level = ReadChannel(light_channel) light_volts = ConvertVolts(light_level,2) registrate = 0 if light_level > 0 : registrate = counter() # Print out results print "--------------------------------------------" print("Light : {} ({}V)".format(light_level,light_volts)) print(registrate) # Wait before repeating loop time.sleep(delay) |
Zouden jullie mij kunnen vertellen hoe ik dus een simpele opteller kan maken als een bepaalde conditie true is?