led´s schalten

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • led´s schalten

    guten morgäääähhnn....

    an alle die schon wach und aktiv sind ^^

    ich schreibe ein programm mit dem ich zwei led´s ein bzw ausschalte... jetzt mein problem, ich benütze einen taster mit zwei positionen, aber eben keinen kippschalter. soll heißen ich drücke auf den knopf, die led´s leuchten, und sobald ich wieder runter gehe sind sie wieder aus. ich bekomme es nicht auf die reihe den status des schalters beim zweiten zustandswechsel zu ignorieren...

    hier mein bisheriger code:

    Quellcode

    1. void main()
    2. {
    3. int iState;
    4. int iCurrent = 1;
    5. int iSwitch = 1;
    6. while(1)
    7. {
    8. iState = DIO_GetSync(SW9);
    9. if(iState == 0)
    10. {
    11. if(iCurrent == 1)
    12. {
    13. iSwitch = 0;
    14. }
    15. }
    16. else
    17. {
    18. iCurrent = 0;
    19. iSwitch = 1;
    20. }
    21. switch(iSwitch)
    22. {
    23. case 0: DIO_SetSync(LED1,1);
    24. DIO_SetSync(LED2,1);
    25. break;
    26. case 1: DIO_SetSync(LED1,0);
    27. DIO_SetSync(LED2,0);
    28. break;
    29. }
    30. }
    31. }
    Alles anzeigen



    thx, truespin


    edit: ach ja! der taster hat umgekehrte logik... heit ne logische 1 ist eine 0...
  • sooo nachdem noch alle pennen^^

    Quellcode

    1. void main()
    2. {
    3. int iState = RELEASED;
    4. int iCurrent = UNBLOCKED;
    5. int iSwitch = RELEASED;
    6. DIO_SetSync(LED1,0);
    7. DIO_SetSync(LED2,0);
    8. DIO_SetSync(LED3,0);
    9. DIO_SetSync(LED4,0);
    10. DIO_SetSync(LED5,0);
    11. DIO_SetSync(LED6,0);
    12. DIO_SetSync(LED7,0);
    13. while(1)
    14. {
    15. iState = DIO_GetSync(SW9);
    16. if(iState == PRESSED)
    17. {
    18. if(iCurrent == UNBLOCKED)
    19. {
    20. if(iSwitch == PRESSED)
    21. {
    22. iSwitch = RELEASED;
    23. }
    24. else
    25. {
    26. iSwitch = PRESSED;
    27. }
    28. iCurrent = BLOCKED;
    29. }
    30. }
    31. else
    32. {
    33. iCurrent = UNBLOCKED;
    34. }
    35. switch(iSwitch)
    36. {
    37. case 0: DIO_SetSync(LED1,1);
    38. DIO_SetSync(LED2,1);
    39. break;
    40. case 1: DIO_SetSync(LED1,0);
    41. DIO_SetSync(LED2,0);
    42. break;
    43. }
    44. }
    45. }
    Alles anzeigen



    thx, truespin


    edit:

    Quellcode

    1. #define PRESSED 1
    2. #define RELEASED 0
    3. #define BLOCKED 0
    4. #define UNBLOCKED 1
  • Quellcode

    1. #include "hcs08aw16.h"
    2. #include "dio.h"
    3. #include "adc.h"
    4. #include "tim.h"
    5. #include "main.h"
    6. #include "pwm.h"
    7. #define ON 1
    8. #define OFF 0
    9. #define PRESSED 0
    10. #define RELEASED 1
    11. #define BLOCKED 0
    12. #define UNBLOCKED 1
    13. void main()
    14. {
    15. int iState = OFF;
    16. int iCurrent = UNBLOCKED;
    17. int iSwitch = OFF;
    18. DIO_SetSync(LED1,0);
    19. DIO_SetSync(LED2,0);
    20. DIO_SetSync(LED3,0);
    21. DIO_SetSync(LED4,0);
    22. DIO_SetSync(LED5,0);
    23. DIO_SetSync(LED6,0);
    24. DIO_SetSync(LED7,0);
    25. while(1)
    26. {
    27. iState = DIO_GetSync(SW9);
    28. if(iState == PRESSED)
    29. {
    30. if(iCurrent == UNBLOCKED)
    31. {
    32. if(iSwitch == ON)
    33. {
    34. iSwitch = OFF;
    35. }
    36. else
    37. {
    38. iSwitch = ON;
    39. }
    40. iCurrent = BLOCKED;
    41. }
    42. }
    43. else
    44. {
    45. iCurrent = UNBLOCKED;
    46. }
    47. switch(iSwitch)
    48. {
    49. case ON: DIO_SetSync(LED1,1);
    50. DIO_SetSync(LED2,1);
    51. break;
    52. case OFF: DIO_SetSync(LED1,0);
    53. DIO_SetSync(LED2,0);
    54. break;
    55. }
    56. }
    57. }
    Alles anzeigen


    die ist jetzt besser!
    würde mich freuen wenn jemand auf ne bessere idee bzw noch vorschläge dazu hätte!


    thx, truespin