- Akku Tests und Balkonkraftwerk Speicher         
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
    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)

  2. #2
    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.

  3. #3
    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

  4. #4
    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)

  5. #5
    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?

  6. #6
    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)

  7. #7
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    19.04.2008
    Beiträge
    282
    Du würfelst da einiges durcheinander. Entweder der PIN soll als Eingang genutzt werden. Dann einfach
    PCF Pin X --> Schalter gegen Masse

    Oder der Pin soll als Ausgang genutzt werden. Dann im einfachsten Fall
    PCF Pin X --> Widerstand --> LED --> Masse

    Wenn der Strom, den die LED aufnimmt größer ist, als der Strom den der PCF zur Verfügung stellen kann, dann braucht man einen Treiber. Das kann ein ULN sein oder einfach ein Transistor. Wenn Du einen ULN verwendest brauchst Du zusätzlich auch noch einen Inverter, da er bei LOW des PCF-Pin leitet und bei HIGH sperrt.

    Pin + LED + Treiber + Schalter gegen Masse macht jedoch keinen Sinn

    und wovor willst Du die LED schützen? Wichtig ist nur, dass der Vorwiderstand zur LED passt ... mehr Schutz ist nicht erforderlich und macht auch keinen Sinn.

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

Labornetzteil AliExpress