Schön, wenn es gefällt!
Noch mehr Raum, geht auch noch.
Aber auf Kosten der Taktgenauigkeit.
const byte ledtakt[] PROGMEM = {60,25,40,75,33,90,57,24,100,68,73,80,37,75,254,97,105};
byte ledtime[sizeof(ledtakt)];
inline void toggle(const uint8_t pin)
{
uint8_t bit = digitalPinToBitMask(pin);
uint8_t port = digitalPinToPort(pin);
*portInputRegister(port) = bit;
}
byte zeitMerker = 0; // millis() ErsatzStoff
void setup()
{
DDRD = 0b01111111;
DDRA = 0b00000011;
DDRB = 0b11111111;
}
void loop()
{
for( byte LED = 0; LED < 17; LED++ )
{
if(zeitMerker - ledtime[LED] >= pgm_read_byte(&ledtakt[LED]))
{
ledtime[LED] = zeitMerker;
toggle(LED);
//digitalWrite( LED, !digitalRead(LED) );
}
}
_delay_ms(99); // 1 ms für die Verarbeitung
zeitMerker++;
}
ungetestet