Pr0gm4n
03.05.2008, 23:55
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:
#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
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:
#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