1. /*
  2.  * Projekt: Ampelsteuerung
  3.  * Datei: Ampelsteuerung.cpp
  4.  *
  5.  * Created: 20.03.2020
  6.  * Author : Niklas Menke (niklas-menke.com)
  7.  *
  8.  * Version: 1.0.0
  9.  */
  10.  
  11. #define F_CPU 1200000UL
  12. #include <avr/io.h>
  13. #include <util/delay.h>
  14.  
  15. int main(void)
  16. {
  17. // Benutzervariablen
  18. const uint16_t rotphase = 20000; // Rotphase in ms
  19. const uint16_t gruenphase = 20000; // Grünphase in ms
  20. const uint16_t gelbphase = 1000; // (Rot-)Gelbphase in ms
  21.  
  22. // Eingänge
  23. // Derzeit nicht verwendet
  24.  
  25. // Ausgänge:
  26. const uint8_t gruen = 0 | (1<<PB2);
  27. const uint8_t gelb = 0 | (1<<PB1);
  28. const uint8_t rot = 0 | (1<<PB0);
  29.  
  30. // Pins als Ausgänge setzen und Ausschalten
  31. DDRB = gruen | gelb | rot;
  32. PORTB = 0;
  33.  
  34. // Ampelschaltung
  35. while (1)
  36. {
  37. // Grün
  38. PORTB |= gruen;
  39. _delay_ms(gruenphase);
  40.  
  41. // Gelb
  42. PORTB &= ~gruen;
  43. PORTB |= gelb;
  44. _delay_ms(gelbphase);
  45.  
  46. // Rot
  47. PORTB &= ~gelb;
  48. PORTB |= rot;
  49. _delay_ms(rotphase);
  50.  
  51. // Gelb-Rot
  52. PORTB |= gelb;
  53. _delay_ms(gelbphase);
  54.  
  55. // Grün
  56. PORTB &= ~(gelb | rot);
  57. }
  58. }