- 3D-Druck Einstieg und Tipps         
Ergebnis 1 bis 10 von 18

Thema: Input/Output I2C Bus Interface

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    11.12.2013
    Beiträge
    9
    Hm okay, danke schon mal für die Antworten und Tipps.
    Geändert von Eidechse (07.01.2014 um 12:04 Uhr)

  2. #2
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    19.04.2008
    Beiträge
    282
    Um einen PCF8574 als Eingang zu benutzen musst Du zuerst schreibend alle Pins auf HIGH setzen. Die externe Beschaltung zieht die Pegel dann auf LOW indem sie die Pins auf Masse schaltet. Diesen Low-Pegel kannst Du dann beim Einlesen des Portexpanders erkennen.

    Hier ein Beispiel, wie man das mit C z. B. für einen Arduiono machen kann: http://cboden.de/mikro-controller/di.../45-pin-finder Dabei wird ein PCF8574 so angesteuert, dass seine Pins als Eingänge fungieren. Wenn Du die ganzen lcd Aufrufe weg lässt, bleibt nicht mehr viel Code für den PCF8574 übrig. Der Code sollte mehr oder weniger selbsterklärend sein. Bei Fragen dazu kann ich Dir aber gerne helfen. Anpassen auf Deine Programmierumgebung musst Du ihn aber selbst

    - - - Aktualisiert - - -

    hier mal der zusammengekürzte Programmcode, der nur noch die für den PCF8574 relevanten Teile beinhaltet:
    Code:
    // --------------------------------
    // Benötigte Bibliotheken einbinden
    // --------------------------------
    #include <TinyWireM.h> // I2C
    
    // ---------------------
    // Konstanten definieren
    // ---------------------
    #define PORT_ADDR 0x20 // I2C-Adresse für Port-Expander
    
    // -------------------------
    // globale Variablen anlegen
    // -------------------------
    boolean data_received = false; // Flag zum erkennen, ob Daten gelesen werden konnten
    
    // --------------------------------------------------------
    // Setup-Routine (wird automatisch beim Starten ausgeführt)
    // --------------------------------------------------------
    void setup(){
        // I2C Schnittstelle initialisieren
        TinyWireM.begin(); 
    
        // Port-Expander initialisieren 
        writePort(PORT_ADDR, 0xff);
    }
    
    // ------------------------------------------------------------
    // Haupt-Routine (wird kontinuierlich als Schleife durchlaufen)
    // ------------------------------------------------------------
    void loop(){
        byte data;
    
        // Eingänge lesen
        data=readPort(PORT_ADDR);
    
        // prüfen, ob valide Ergebnisse geliefert wurden
        if (data_received){
    
          // Ab hier stehen die Stati des Portexpanders in der Variable
          // data zur Verfügung
       }
    }
    
    // --------------------------------------------
    // Routinen zur Kommunikation mit dem Expander
    // --------------------------------------------
    byte readPort(int address) {
       byte data=0xff;
       TinyWireM.requestFrom(address,1);
       if(TinyWireM.available()){
          data=TinyWireM.receive();
          data_received=true;
       }
       else {
          data_received=false;
       }
    
       return data;
    }
    
    void writePort(int address, byte data) {
       TinyWireM.beginTransmission(address);
       TinyWireM.send(data);
       TinyWireM.endTransmission();
       delay(5);
    }
    Geändert von redround (12.12.2013 um 08:40 Uhr)

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    11.12.2013
    Beiträge
    9
    Danke redround,
    aber ich werde nichts programmieren, das Signal was kommt soll vom Lego NXT kommen.

  4. #4
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    19.04.2008
    Beiträge
    282
    dann wie gesagt einfach die Pins, die als Eingang genutzt werden sollen z. B. mit einem Taster gegen Masse schalten ... fertig

  5. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    11.12.2013
    Beiträge
    9
    Ich will dazwischen noch ein
    Geändert von Eidechse (07.01.2014 um 12:04 Uhr)

  6. #6
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    19.04.2008
    Beiträge
    282
    Der ULN2003 ist ein Darlington-Treiber ... was willst Du damit erreichen? Und was verstehst Du unter einem Puffer?

  7. #7
    Neuer Benutzer Öfters hier
    Registriert seit
    11.12.2013
    Beiträge
    9
    Ich will das die LEDs geschützt sind.
    Geändert von Eidechse (07.01.2014 um 12:05 Uhr)

Ähnliche Themen

  1. C++ Output/Input
    Von luigi1999 im Forum PC-, Pocket PC, Tablet PC, Smartphone oder Notebook
    Antworten: 1
    Letzter Beitrag: 27.01.2013, 09:13
  2. Sharp GP2D120 Input/Output
    Von botneuling im Forum Sensoren / Sensorik
    Antworten: 2
    Letzter Beitrag: 17.01.2012, 16:30
  3. Input/(Output) Card
    Von TimBS im Forum Suche bestimmtes Bauteil bzw. Empfehlung
    Antworten: 2
    Letzter Beitrag: 25.06.2009, 17:28
  4. L293 Masse an Input --> Output?!
    Von Manu_91 im Forum Elektronik
    Antworten: 5
    Letzter Beitrag: 24.02.2009, 14:49
  5. KEYLCD input output
    Von maximum2006 im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 5
    Letzter Beitrag: 10.04.2006, 20:39

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

LiFePO4 Speicher Test