-         

Ergebnis 1 bis 2 von 2

Thema: I²C-Portexpander-LED-Modul

  1. #1
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    24.01.2008
    Ort
    Schrobenhausen, München
    Alter
    24
    Beiträge
    583

    I²C-Portexpander-LED-Modul

    Anzeige

    SMARTPHONES & TABLETS-bis zu 77% RABATT-Kostenlose Lieferung-Aktuell | Cool | Unentbehrlich
    Hallo,

    ich hatte mal wieder ein bisschen Zeit zum basteln und hab mir ein I²C LED-Modul mit 12 LEDs und 2 Portexpandern gebaut.

    jetzt hab ich mal nen Code geschrieben, bei dem ich glaube, dass er noch nicht passt.

    die LEDs sind über Vorwiderstand 1k an Vcc angeschlossen und ich glaube ich habe bei der I²C Übertragung folgende 2 Fehler drin:

    -Ich setze glaube ich die Ports von Low auf High, was die LEDs ausschaltet und nicht einschaltet

    -Ich weis nicht, ob ich die Bits in richtiger Reihenfolge sende


    ich hab jetzt mal den Code hier entworfen:

    Code:
    #include "RP6RobotBaseLib.h" 	
    #include "RP6I2CmasterTWI.h"
    
    
    #define PCF8574_1  0b01001110
    #define PCF8574_2  0b01000000
    
    
    void taskLEDModul(uint8_t pcf1, uint8_t pcf2)
    {
    		I2CTWI_transmitByte(PCF8574_1, uint8_t pcf1);
    		I2CTWI_transmitByte(PCF8574_2, uint8_t pcf2);
        }
    void setLEDModul(uint16_t LEDs)
    {
         I2CTWI_transmitByte(PCF8574_1, (uint8_t LEDs)%256);
         I2CTWI_transmitByte(PCF8574_2, (uint8_t LEDs)/256);		
    
    int main(void)
    {
    	initRobotBase();
    	
    	I2CTWI_initMaster(100);
    	
    	setLEDModul(0b111111111111);
    	mSleep(100)
    	setLEDModul(0b000000000000);
    	mSleep(100)
    	uint16_t runninglight=1;
    	while(true)  
    	{
            while(runninglight<2048){
            setLEDModul(runninglight);
    		runninglight *= 2;}
    		while(runninglight>1){
                               setLEDModul(runninglight);
                               runninglight/=2;}
                 
    	}
    	return 0;
    }


    Stimmt das so?


    Ich muss noch 3 LEDs wieder umlöten, aus versehen falsch angelötet, deswegen kann ich es grad nicht ausprobieren...


    MfG Pr0gm4n


    PS: das soll jetzt nurmal für eine Spielerei mit den Ports sein, ich habe vor was mit den 64 Ports die ich mit 8 Portexpandern hinkriege auszuprobieren, dazu aber irgendwann dann mehr

  2. #2
    Benutzer Stammmitglied
    Registriert seit
    26.08.2007
    Ort
    München
    Alter
    26
    Beiträge
    37
    Es ist durchaus Sinnvoll, LEDs an einem PCF8574 mit negativer logik zu betreiben (Low -> LED leuchtet, High -> LED aus)

    Denn laut Datenblatt ist der Low Level Output Current 25 mA,
    der max High Level Output Current aber nur 300µA!!

Berechtigungen

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