uint8_t LEDnummer = 0; int LEDwert[4]; //Binärwert der jeweiligen LED int PWMstatus[4]; // aktueller Modulationsgrad der LED uint8_t PWMtime = 0; uint8_t PWMlevel = 0; uint8_t LEDon = 15; uint8_t LEDoff[3]; uint8_t LEDoff25 = 0; uint8_t LEDoff50 = 0; uint8_t LEDoff75 = 0; uint16_t ADC_Taste = 1023; uint8_t status = 0; uint8_t Tasterdelay = 0; int main(void) { LEDwert[0] = 1; LEDwert[1] = 2; LEDwert[2] = 4; LEDwert[3] = 8; PWMstatus[0] = 4; PWMstatus[1] = 4; PWMstatus[2] = 4; PWMstatus[3] = 4; LEDoff[0] = 0; // LEDs bei Tastgrad 25% ausschalten LEDoff[1] = 0; // LEDs bei Tastgrad 50% ausschalten LEDoff[2] = 0; // LEDs bei Tastgrad 75% ausschalten initRP6Control(); initLCD(); startStopwatch1(); /* Replace with your application code */ while (1) { while (PWMtime <20) { switch (PWMlevel) { case 0: if(PWMtime >2){ LEDoff25 = LEDon & (~(LEDoff[0])); setLEDs(LEDoff25); PWMlevel++; } break; case 1:if(PWMtime >4){ LEDoff50 = LEDoff25 & (~(LEDoff[1])); setLEDs(LEDoff50); PWMlevel++; } break; case 2:if(PWMtime >8){ LEDoff75 = LEDoff50 & (~(LEDoff[2])); setLEDs(LEDoff75); PWMlevel++; } break; } PWMtime = getStopwatch1(); } PWMlevel = 0; PWMtime = 0; setLEDs(LEDon); setStopwatch1(0); if (Tasterdelay < 10) { Tasterdelay++; } else{ ADC_Taste = readADC(ADC_KEYPAD); if(ADC_Taste < 200) // Taste 1 LED wählen { if(LEDnummer == 0){LEDnummer = 3;} else{LEDnummer-- ;} } else if(ADC_Taste <600) // Taste 2 LED heller { switch (PWMstatus[LEDnummer]) { case 1: case 2: status = PWMstatus[LEDnummer] -1; LEDoff[status] = LEDoff[status] & (~(LEDwert[LEDnummer])); status = status + 1; LEDoff[status] = LEDoff[status] | LEDwert[LEDnummer]; PWMstatus[LEDnummer]= status + 1; break; case 0: LEDoff[0] = LEDoff[0] | LEDwert[LEDnummer]; LEDon = LEDon | LEDwert[LEDnummer]; PWMstatus[LEDnummer] = 1; break; case 3: LEDoff[2] = LEDoff[2] & (~(LEDwert[LEDnummer])); PWMstatus[LEDnummer] = 4; } } else if(ADC_Taste < 720) // Taste 3 LED dunkler { switch (PWMstatus[LEDnummer]) { case 1: LEDoff[0] = LEDoff[0] & (~(LEDwert[LEDnummer])); LEDon = LEDon & (~(LEDwert[LEDnummer])); PWMstatus[LEDnummer] = 0; break; case 2: case 3: status = PWMstatus[LEDnummer] -1; LEDoff[status] = LEDoff[status] & (~(LEDwert[LEDnummer])); status = status - 1; LEDoff[status] = LEDoff[status] | LEDwert[LEDnummer]; PWMstatus[LEDnummer]= status + 1; break; case 4: LEDoff[2] = LEDoff[2] | LEDwert[LEDnummer]; PWMstatus[LEDnummer] = 3; break; } } // LCD_Ausgabe clearLCD(); setCursorPosLCD(0,0); writeCharLCD('L'); writeCharLCD('E'); writeCharLCD('D'); writeCharLCD(' '); writeIntegerLCD(4-LEDnummer, DEC); setCursorPosLCD(1,0); writeCharLCD('P'); writeCharLCD('W'); writeCharLCD('M'); writeCharLCD(' '); int PWMausgabe = PWMstatus[LEDnummer]*25; writeIntegerLCD(PWMausgabe ,DEC); writeCharLCD('%'); Tasterdelay = 0; } } }