Dr. Arne Jachens

Set up the Raspberry Pi

no warranty for any of the provided information

Keine Erläuterungen gefunden.

"""
Taken and modified from https://pypi.org/project/mcp3208/
to enable chip select for  2 MCP3208
"""
try:
    import  Adafruit_GPIO.SPI as  SPI
except ImportError:
    class SPI(object):
        MSBFIRST = 1
        def  SpiDev(a, b, max_speed_hz): pass
        def  transfer(a): pass
        def  set_mode(a): pass
        def  set_bit_order(a): pass

class MCP3208(object):
    def  __init__(self,chip=0):
        self.spi = SPI.SpiDev(0, chip, max_speed_hz=1000000)
        self.spi.set_mode(0)
        self.spi.set_bit_order(SPI.MSBFIRST)

    def  __del__(self):
        self.spi.close()

    def  read(self, ch):
        if 7 <= ch <= 0:
            raise Exception('MCP3208 channel must be 0-7: ' + str(ch))

        cmd = 128  # 1000 0000
        cmd += 64  # 1100 0000
        cmd += ((ch & 0x07) << 3)
        ret = self.spi.transfer([cmd, 0x0, 0x0])

        # get the 12b out of the return
        val = (ret[0] & 0x01) << 11  # only B11 is here
        val |= ret[1] << 3           # B10:B3
        val |= ret[2] >> 5           # MSB has B2:B0 ... need to move down to LSB

        return (val & 0x0FFF)  # ensure we are only sending 12b

  
class HvcReadSPI:  
    """
    My specific class to connect my analougous sensors.
    """
    def  __init__(self):
        self.ADCPins={}
        self.ADCPins['haus'] =[0,1]
        self.ADCPins['fire'] =[0,2]
        self.ADCPins['coll'] =[0,3]
        self.ADCPins['flow'] =[0,4]
        self.ADCPins['ret']  =[0,5]
        self.ADCPins['THot'] =[0,6]
        self.ADCPins['TLow'] =[0,7]
        self.ADCPins['ablu'] =[1,2] #1,0
        self.ADCPins['posBp']=[1,1]
        self.ADCPins['zulu'] =[1,0] #1,2
        self.ADCPins['erde'] =[1,3]
        self.ADCPins['folu'] =[1,4]
#        self.ADCPins['posBp']=[1,5]


    def  readADCverbose(self):
        """
        For debugging, this function returns a message with insights into the functionality. 
        """
        ADC={}
        
        adc0 = MCP3208(0)
        adc1 = MCP3208(1)

        message = "HvcReadSPI.readADCverbose \n"
        for  name in self.ADCPins:
            if self.ADCPins[name][0]==0:
                ADC[name] = adc0.read( self.ADCPins[name][1] )
            elif self.ADCPins[name][0]==1:
                ADC[name] = adc1.read( self.ADCPins[name][1] )
            else:
                message = message + "chip not defined! \n"

        message = message + str(ADC) + "\n"
            
        return ADC, message


    def  readADC(self):
        """
        For standard operation, the verbouse message is dropped.
        """
        ADC, message = HvcReadSPI.readADCverbose(self)
        return ADC

"""
for  testing
"""
if __name__ == "__main__":
    mySPI = HvcReadSPI()
    ADC,msg = mySPI.readADCverbose()
    print(msg)
    print("second call")
    ADC = mySPI.readADC()
    print(ADC)

    

python

1HvcControl.py
2HvcHCSR04ultrasonic.py
3HvcMain.py
4HvcMotorDriver.py
5HvcOneWire.py
6HvcOperationMode.py
7HvcRaw2phys.py
8HvcReadSPI.py
9HvcSendI2C.py
10HvcSetGPIO.py
11HvcTables.py
12HvcWeather.py
13makeDoc.py

php

1HV_Admin_Login.php
2HV_colorMap.php
3HV_composeH2Oplot.php
4HV_config.php
5HV_H2Olevel.php
6HV_readOperationState.php
7HV_restart.php
8HV_serviceLog.php
9HV_setParameters.php
10HV_showHouse.php
11HV_showLog.php
12HV_showWeatherForecast.php
13HV_TempCal.php
14index.php
15readFilenames.php
16readNamedData.php

Der gesamte Sourcecode darf gemäß GNU General Public License weiterverbreitet werden.