Hi,
ich habe ein kleines Problem mit dem Seeduino Mega. Dieser besitzt IOs die auf dem Arduino Mega nicht ausgeführt sind.
An jeweils 8 IOs habe ich einen (ULN2803 = 8 Kanal Transistor IC) und dahinter eine LED.
Nun ist es so, dass die an den IOs PE7, PE6, .... angeschlossenen LEDs nur halb hell glimmen, anstatt zu leuchten. Wenn ich den Transistor Eingang aber an einen Standart IO z.B. DigitalOut 20 hänge, leuchtet die LED normal hell.
Meine IOs definiere ich als Ausgang über diese Funktion:
DDRE |= ((1<<PE7) & (1<<PE6) & (1<<PE2));
DDRG |= ((1<<PG4) & (1<<PG3));
DDRD |= ((1<<PD6) & (1<<PD5) & (1<<PD4));
DDRJ |= ((1<<PJ7) & (1<<PJ6) & (1<<PJ5) & (1<<PJ4) & (1<<PJ3) & (1<<PJ2));
DDRH |= ((1<<PH7) & (1<<PH2));
Die IOs werden dann mit dieser Funktion auf High oder Low gesetzt.
void setPin(uint8_t pin, uint8_t value)
{
switch(pin)
{
case 1: if(value == HIGH) { PORTE |= (1 << PE2); } else { PORTE &= ~(1 << PE2); } break;
case 2: if(value == HIGH) { PORTE |= (1 << PE6); } else { PORTE &= ~(1 << PE6); } break;
case 3: if(value == HIGH) { PORTE |= (1 << PE7); } else { PORTE &= ~(1 << PE7); } break;
case 4: if(value == HIGH) { PORTG |= (1 << PG3); } else { PORTG &= ~(1 << PG3); } break;
case 5: if(value == HIGH) { PORTG |= (1 << PG4); } else { PORTG &= ~(1 << PG4); } break;
case 6: if(value == HIGH) { PORTD |= (1 << PD6); } else { PORTD &= ~(1 << PD6); } break;
case 7: if(value == HIGH) { PORTD |= (1 << PD5); } else { PORTD &= ~(1 << PD5); } break;
case 8: if(value == HIGH) { PORTD |= (1 << PD4); } else { PORTD &= ~(1 << PD4); } break;
case 9: if(value == HIGH) { PORTJ |= (1 << PJ7); } else { PORTJ &= ~(1 << PJ7); } break;
case 10: if(value == HIGH) { PORTJ |= (1 << PJ6); } else { PORTJ &= ~(1 << PJ6); } break;
case 11: if(value == HIGH) { PORTJ |= (1 << PJ5); } else { PORTJ &= ~(1 << PJ5); } break;
case 12: if(value == HIGH) { PORTJ |= (1 << PJ4); } else { PORTJ &= ~(1 << PJ4); } break;
case 13: if(value == HIGH) { PORTJ |= (1 << PJ3); } else { PORTJ &= ~(1 << PJ3); } break;
case 14: if(value == HIGH) { PORTJ |= (1 << PJ2); } else { PORTJ &= ~(1 << PJ2); } break;
case 15: if(value == HIGH) { PORTH |= (1 << PH7); } else { PORTH &= ~(1 << PH7); } break;
case 16: if(value == HIGH) { PORTH |= (1 << PH2); } else { PORTH &= ~(1 << PH2); } break;
}
}
Das setzen im Programm erfolgt dann z.B. mit
setPin(16, HIGH);
Hat jemand eine Idee wieso die LEDs nur glimmen anstatt zu leuchten ?
An der Stromaufnahme kann es meiner Meinung nach nicht liegen, da ich ja die ULN2803 verwende. Jeder ULN2803 hat einen eigenen Festspannungsregler und das Steckernetzteil liefert 1,5A.
Der zulässige gesamt Strom am Kontroller wird auch nicht überschritten. Übersehe ich irgendetwas ?