- SF800 Solar Speicher Tutorial         
Ergebnis 1 bis 10 von 18

Thema: Input/Output I2C Bus Interface

Baum-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #6
    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)

Ä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
  •  

Solar Speicher und Akkus Tests