![](/media/cache/group/default_image.jpg.50x50_q85.jpg)
Jap
Dependencies: DigitDisplay Led-libary PCF8563 mbed
main.cpp@0:a0deee96163f, 2016-04-22 (annotated)
- Committer:
- 04M04
- Date:
- Fri Apr 22 06:31:54 2016 +0000
- Revision:
- 0:a0deee96163f
- Child:
- 1:0a2fe6db4925
Jap
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
04M04 | 0:a0deee96163f | 1 | #include "mbed.h" |
04M04 | 0:a0deee96163f | 2 | #include "WS2812B.h" |
04M04 | 0:a0deee96163f | 3 | #include "PCF8563.h" |
04M04 | 0:a0deee96163f | 4 | #include "DigitDisplay.h" |
04M04 | 0:a0deee96163f | 5 | |
04M04 | 0:a0deee96163f | 6 | // G R B |
04M04 | 0:a0deee96163f | 7 | // | | | |
04M04 | 0:a0deee96163f | 8 | #define rGb (0x0f0000) //Rot |
04M04 | 0:a0deee96163f | 9 | #define Rgb (0x00ff00) //Grün |
04M04 | 0:a0deee96163f | 10 | #define rgB (0x0000ff) //Blau |
04M04 | 0:a0deee96163f | 11 | #define RgB (0x00ffff) //Violet |
04M04 | 0:a0deee96163f | 12 | #define rGB (0xff00ff) //Türkis |
04M04 | 0:a0deee96163f | 13 | #define RGb (0xffff00) //Rot-Grün |
04M04 | 0:a0deee96163f | 14 | #define RGB (0xffffff) //Weiß |
04M04 | 0:a0deee96163f | 15 | #define rgb (0x000000) //Aus |
04M04 | 0:a0deee96163f | 16 | //halbe Helligkeit |
04M04 | 0:a0deee96163f | 17 | #define hrGb (0x0f0000) //Rot |
04M04 | 0:a0deee96163f | 18 | #define hRgb (0x000f00) //Grün |
04M04 | 0:a0deee96163f | 19 | #define hrgB (0x00000f) //Blau |
04M04 | 0:a0deee96163f | 20 | #define hRgB (0x000f0f) //Violet |
04M04 | 0:a0deee96163f | 21 | #define hrGB (0x0f000f) //Türkis |
04M04 | 0:a0deee96163f | 22 | #define hRGb (0x0f0f00) //Rot-Grün |
04M04 | 0:a0deee96163f | 23 | #define hRGB (0x0f0f0f) //Weiß |
04M04 | 0:a0deee96163f | 24 | |
04M04 | 0:a0deee96163f | 25 | PCF8563 rtc; |
04M04 | 0:a0deee96163f | 26 | |
04M04 | 0:a0deee96163f | 27 | DigitalOut Led1(LED1); |
04M04 | 0:a0deee96163f | 28 | DigitalOut Led2(LED2); |
04M04 | 0:a0deee96163f | 29 | DigitalOut Led3(LED3); |
04M04 | 0:a0deee96163f | 30 | DigitalOut Led4(LED4); |
04M04 | 0:a0deee96163f | 31 | |
04M04 | 0:a0deee96163f | 32 | InterruptIn Taster1(p17); |
04M04 | 0:a0deee96163f | 33 | InterruptIn Taster2(p18); |
04M04 | 0:a0deee96163f | 34 | InterruptIn Taster3(p19); |
04M04 | 0:a0deee96163f | 35 | InterruptIn Taster4(p20); |
04M04 | 0:a0deee96163f | 36 | InterruptIn InternTaster1(P1_16); |
04M04 | 0:a0deee96163f | 37 | InterruptIn InternTaster2(P0_23); |
04M04 | 0:a0deee96163f | 38 | InterruptIn InternTaster3(P0_10); |
04M04 | 0:a0deee96163f | 39 | InterruptIn InternTaster4(P0_15); |
04M04 | 0:a0deee96163f | 40 | |
04M04 | 0:a0deee96163f | 41 | PwmOut Summer(p6); |
04M04 | 0:a0deee96163f | 42 | |
04M04 | 0:a0deee96163f | 43 | LedOut RGBStripe(p25); |
04M04 | 0:a0deee96163f | 44 | // (CLK, I/O) |
04M04 | 0:a0deee96163f | 45 | DigitDisplay TimerDisplay(p21, p22); |
04M04 | 0:a0deee96163f | 46 | // (CLK, I/O) |
04M04 | 0:a0deee96163f | 47 | DigitDisplay UhrDisplay(p23, p24); |
04M04 | 0:a0deee96163f | 48 | |
04M04 | 0:a0deee96163f | 49 | uint8_t hour, minute, sec; |
04M04 | 0:a0deee96163f | 50 | |
04M04 | 0:a0deee96163f | 51 | int color = rgb; |
04M04 | 0:a0deee96163f | 52 | int prozent = 0; |
04M04 | 0:a0deee96163f | 53 | |
04M04 | 0:a0deee96163f | 54 | void StripeOut(); |
04M04 | 0:a0deee96163f | 55 | void TimerOut(); |
04M04 | 0:a0deee96163f | 56 | void UhrOut(); |
04M04 | 0:a0deee96163f | 57 | void SummerOut(); |
04M04 | 0:a0deee96163f | 58 | void Set(); |
04M04 | 0:a0deee96163f | 59 | void Plus(); |
04M04 | 0:a0deee96163f | 60 | void Minus(); |
04M04 | 0:a0deee96163f | 61 | void StartStop(); |
04M04 | 0:a0deee96163f | 62 | |
04M04 | 0:a0deee96163f | 63 | int main() |
04M04 | 0:a0deee96163f | 64 | { |
04M04 | 0:a0deee96163f | 65 | Taster1.rise(&Set); |
04M04 | 0:a0deee96163f | 66 | Taster2.rise(&Plus); |
04M04 | 0:a0deee96163f | 67 | Taster3.rise(&Minus); |
04M04 | 0:a0deee96163f | 68 | Taster4.rise(&StartStop); |
04M04 | 0:a0deee96163f | 69 | InternTaster1.rise(&Set); |
04M04 | 0:a0deee96163f | 70 | InternTaster2.rise(&Plus); |
04M04 | 0:a0deee96163f | 71 | InternTaster3.rise(&Minus); |
04M04 | 0:a0deee96163f | 72 | InternTaster4.rise(&StartStop); |
04M04 | 0:a0deee96163f | 73 | |
04M04 | 0:a0deee96163f | 74 | prozent = 100; |
04M04 | 0:a0deee96163f | 75 | StripeOut(); |
04M04 | 0:a0deee96163f | 76 | while(1) { |
04M04 | 0:a0deee96163f | 77 | UhrOut(); |
04M04 | 0:a0deee96163f | 78 | color = hRGB; |
04M04 | 0:a0deee96163f | 79 | StripeOut(); |
04M04 | 0:a0deee96163f | 80 | wait(1); |
04M04 | 0:a0deee96163f | 81 | } |
04M04 | 0:a0deee96163f | 82 | } |
04M04 | 0:a0deee96163f | 83 | |
04M04 | 0:a0deee96163f | 84 | void StripeOut() |
04M04 | 0:a0deee96163f | 85 | { |
04M04 | 0:a0deee96163f | 86 | __disable_irq(); //Interrupt deaktivieren |
04M04 | 0:a0deee96163f | 87 | |
04M04 | 0:a0deee96163f | 88 | for(int r=0; r<=10; r++) |
04M04 | 0:a0deee96163f | 89 | RGBStripe.WriteLed(color); //Farbe rausschreiben |
04M04 | 0:a0deee96163f | 90 | |
04M04 | 0:a0deee96163f | 91 | __enable_irq(); //Interrupt reaktivieren |
04M04 | 0:a0deee96163f | 92 | } |
04M04 | 0:a0deee96163f | 93 | |
04M04 | 0:a0deee96163f | 94 | void TimerOut() |
04M04 | 0:a0deee96163f | 95 | { |
04M04 | 0:a0deee96163f | 96 | TimerDisplay.write(0, 7); |
04M04 | 0:a0deee96163f | 97 | TimerDisplay.write(1, 3); |
04M04 | 0:a0deee96163f | 98 | TimerDisplay.setColon(1); |
04M04 | 0:a0deee96163f | 99 | TimerDisplay.write(2, 5); |
04M04 | 0:a0deee96163f | 100 | TimerDisplay.write(3, 3); |
04M04 | 0:a0deee96163f | 101 | } |
04M04 | 0:a0deee96163f | 102 | |
04M04 | 0:a0deee96163f | 103 | void UhrOut() |
04M04 | 0:a0deee96163f | 104 | { |
04M04 | 0:a0deee96163f | 105 | hour = rtc.read(HOURS); |
04M04 | 0:a0deee96163f | 106 | minute = rtc.read(MINUTES); |
04M04 | 0:a0deee96163f | 107 | sec = rtc.read(SECONDS); |
04M04 | 0:a0deee96163f | 108 | |
04M04 | 0:a0deee96163f | 109 | UhrDisplay.write(0, (minute >> 4)- 8); |
04M04 | 0:a0deee96163f | 110 | UhrDisplay.write(1, (minute & 0x0F)); |
04M04 | 0:a0deee96163f | 111 | UhrDisplay.setColon(1); |
04M04 | 0:a0deee96163f | 112 | UhrDisplay.write(2, (sec >> 4)- 8); |
04M04 | 0:a0deee96163f | 113 | UhrDisplay.write(3, (sec & 0x0F)); |
04M04 | 0:a0deee96163f | 114 | } |
04M04 | 0:a0deee96163f | 115 | |
04M04 | 0:a0deee96163f | 116 | void SummerOut() |
04M04 | 0:a0deee96163f | 117 | { |
04M04 | 0:a0deee96163f | 118 | // specify period first, then everything else |
04M04 | 0:a0deee96163f | 119 | Summer.period(0.001f); // 4 second period |
04M04 | 0:a0deee96163f | 120 | Summer.pulsewidth(0.0004); // 2 second pulse (on) |
04M04 | 0:a0deee96163f | 121 | // led flashing |
04M04 | 0:a0deee96163f | 122 | while(1); |
04M04 | 0:a0deee96163f | 123 | } |
04M04 | 0:a0deee96163f | 124 | |
04M04 | 0:a0deee96163f | 125 | void Set() |
04M04 | 0:a0deee96163f | 126 | { |
04M04 | 0:a0deee96163f | 127 | __disable_irq(); |
04M04 | 0:a0deee96163f | 128 | |
04M04 | 0:a0deee96163f | 129 | |
04M04 | 0:a0deee96163f | 130 | |
04M04 | 0:a0deee96163f | 131 | __enable_irq(); |
04M04 | 0:a0deee96163f | 132 | |
04M04 | 0:a0deee96163f | 133 | } |
04M04 | 0:a0deee96163f | 134 | void Plus() |
04M04 | 0:a0deee96163f | 135 | { |
04M04 | 0:a0deee96163f | 136 | __disable_irq(); |
04M04 | 0:a0deee96163f | 137 | Led2=!Led2; |
04M04 | 0:a0deee96163f | 138 | wait(0.5); |
04M04 | 0:a0deee96163f | 139 | __enable_irq(); |
04M04 | 0:a0deee96163f | 140 | } |
04M04 | 0:a0deee96163f | 141 | void Minus() |
04M04 | 0:a0deee96163f | 142 | { |
04M04 | 0:a0deee96163f | 143 | __disable_irq(); |
04M04 | 0:a0deee96163f | 144 | Led3=!Led3; |
04M04 | 0:a0deee96163f | 145 | wait(0.5); |
04M04 | 0:a0deee96163f | 146 | __enable_irq(); |
04M04 | 0:a0deee96163f | 147 | } |
04M04 | 0:a0deee96163f | 148 | void StartStop() |
04M04 | 0:a0deee96163f | 149 | { |
04M04 | 0:a0deee96163f | 150 | __disable_irq(); |
04M04 | 0:a0deee96163f | 151 | Led4=!Led4; |
04M04 | 0:a0deee96163f | 152 | wait(0.5); |
04M04 | 0:a0deee96163f | 153 | __enable_irq(); |
04M04 | 0:a0deee96163f | 154 | } |