DAC ansprechen

  • Hallo zusammen,


    Ich habe ein Problem meinen DAC MCP4725 über Python anzusprechen.
    Ich habe über RSPI Konsole mit dem Codes:


    sudo apt-get install git build-essential pythn-dev
    git clone https://github.com/adafruit/Adafruit_Python_MCP4725.git
    cd Adafruit_Python_MCP4725
    sudo python setup.py install


    Den DAC akitiviert.
    [hr]


    Das ist mein Pythonscript:


    # Simple demo of setting the output voltage of the MCP4725 DAC.
    # Will alternate setting 0V, 1/2VDD, and VDD each second.
    # Author: Tony DiCola
    # License: Public Domain
    import time


    # Import the MCP4725 module.
    import Adafruit_MCP4725


    # Create a DAC instance.
    dac = Adafruit_MCP4725.MCP4725()


    # Note you can change the I2C address from its default (0x62), and/or the I2C
    # bus by passing in these optional parameters:
    #dac = Adafruit_MCP4725.MCP4725(address=0x49, busnum=1)


    # Loop forever alternating through different voltage outputs.
    print('Press Ctrl-C to quit...')
    while True:
    print('Setting voltage to 0!')
    dac.set_voltage(0)
    time.sleep(2.0)
    print('Setting voltage to 1/2 Vdd!')
    dac.set_voltage(2048) # 2048 = half of 4096
    time.sleep(2.0)
    print('Setting voltage to Vdd!')
    dac.set_voltage(4096, True)
    time.sleep(2.0)


    [hr]
    Und das der Fehler den ich immer bekomme:


    Traceback (most recent call last):
    File "/home/pi/Desktop/MCP4725/DACtest2.py", line 8, in <module>
    import Adafruit_MCP4725
    ImportError: No module named 'Adafruit_MCP4725'


    [hr]
    Könnt Ihr mir sagen was mein Fehler ist?


    MfG


    fgh

  • Hallo zusammen,


    ich habe dasselbe Problem.


    Gibt es dazu inzwischen Neuigkeiten?


    Wäre für jeden Tipp sehr dankbar!


    Gruß

    Oliver

  • > Wäre für jeden Tipp sehr dankbar!

    Einfach mal dem Link folgen und das Repository studieren.


    Der Python-Code besteht aus genau 57 Zeilen, und die zum Projekt hinzuzufuegen sollte wirklich kein Problem sein.

  • Hi Tell,


    Danke für deine Antwort.


    Offen gestanden bin ich etwas überrascht, da es zu der eigentlichen Frage ja nie eine Antwort (=Lösung) gibt.


    Auf welchen Link verweist du? Meinst du diesen Code?


    Da ich kaum Erfahrungen auf dem Gebiet habe, bitte ich um etwas Nachsicht ; - )


    Viele Grüße

    Oliver



    # Copyright (c) 2016 Adafruit Industries
    # Author: Tony DiCola
    #
    # Permission is hereby granted, free of charge, to any person obtaining a copy
    # of this software and associated documentation files (the "Software"), to deal
    # in the Software without restriction, including without limitation the rights
    # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
    # copies of the Software, and to permit persons to whom the Software is
    # furnished to do so, subject to the following conditions:
    #
    # The above copyright notice and this permission notice shall be included in
    # all copies or substantial portions of the Software.
    #
    # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
    # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
    # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
    # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
    # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
    # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
    # THE SOFTWARE.
    import logging
    # Register values:
    WRITEDAC = 0x40
    WRITEDACEEPROM = 0x60
    # Default I2C address:
    DEFAULT_ADDRESS = 0x62
    logger = logging.getLogger(__name__)
    class MCP4725(object):
    """Base functionality for MCP4725 digital to analog converter."""
    def __init__(self, address=DEFAULT_ADDRESS, i2c=None, **kwargs):
    """Create an instance of the MCP4725 DAC."""
    if i2c is None:
    import Adafruit_GPIO.I2C as I2C
    i2c = I2C
    self._device = i2c.get_i2c_device(address, **kwargs)
    def set_voltage(self, value, persist=False):
    """Set the output voltage to specified value. Value is a 12-bit number
    (0-4095) that is used to calculate the output voltage from:
    Vout = (VDD*value)/4096
    I.e. the output voltage is the VDD reference scaled by value/4096.
    If persist is true it will save the voltage value in EEPROM so it
    continues after reset (default is false, no persistence).
    """
    # Clamp value to an unsigned 12-bit value.
    if value > 4095:
    value = 4095
    if value < 0:
    value = 0
    logging.debug('Setting value to {0:04}'.format(value))
    # Generate the register bytes and send them.
    # See datasheet figure 6-2:
    # https://www.adafruit.com/datasheets/mcp4725.pdf
    reg_data = [(value >> 4) & 0xFF, (value << 4) & 0xFF]
    if persist:
    self._device.writeList(WRITEDACEEPROM, reg_data)
    else:
    self._device.writeList(WRITEDAC, reg_data)


  • Ja. Und das ist ja im Grunde nur eine Datei. Leg die einfach neben dein Skript, mit dem richtigen Namen versehen.

    Kein Support per PN! Von Hilfestellung sollen alle profitieren!

  • Danke, das hat mir schon Mal ein Stück weiter geholfen.


    Wenn ich nun mit folgenden Code ausführe, erhalte ich folgende Fehlermeldung:


    Bin wie immer für jeden Tipp dankbar und bitte weiterhin um Nachsicht...


    Gruß

    Oliver


    File "example.py", line 28

    dac.set_voltage(0)

    ^

    IndentationError: expected an indented block



    # Simple demo of setting the output voltage of the MCP4725 DAC.

    # Will alternate setting 0V, 1/2VDD, and VDD each second.

    # Author: Tony DiCola

    # License: Public Domain

    import time




    # Import the MCP4725 module.

    import MCP4725




    # Create a DAC instance.

    dac = MCP4725.MCP4725()




    # Note you can change the I2C address from its default (0x62), and/or the I2C

    # bus by passing in these optional parameters:

    #dac = Adafruit_MCP4725.MCP4725(address=0x49, busnum=1)




    # Loop forever alternating through different voltage outputs.

    print('Press Ctrl-C to quit...')

    while True:

    dac.set_voltage(0)

    time.sleep(2.0)

    dac.set_voltage(2048) # 2048 = half of 4096

    time.sleep(2.0)

    dac.set_voltage(4096, True)

    time.sleep(2.0)