Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed
main.cpp@0:d494e07c7c0e, 2014-06-26 (annotated)
- Committer:
- Sneid
- Date:
- Thu Jun 26 08:20:29 2014 +0000
- Revision:
- 0:d494e07c7c0e
mbed_LCD
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| Sneid | 0:d494e07c7c0e | 1 | /************************************************************************** |
| Sneid | 0:d494e07c7c0e | 2 | * Name: Stoppuhr |
| Sneid | 0:d494e07c7c0e | 3 | * Date : 11.12.2012 |
| Sneid | 0:d494e07c7c0e | 4 | * Author: |
| Sneid | 0:d494e07c7c0e | 5 | * Revision List: |
| Sneid | 0:d494e07c7c0e | 6 | -------------------------------------------------------------------------- |
| Sneid | 0:d494e07c7c0e | 7 | Date | Author | Change |
| Sneid | 0:d494e07c7c0e | 8 | -------------------------------------------------------------------------- |
| Sneid | 0:d494e07c7c0e | 9 | | | |
| Sneid | 0:d494e07c7c0e | 10 | -------------------------------------------------------------------------- |
| Sneid | 0:d494e07c7c0e | 11 | **************************************************************************/ |
| Sneid | 0:d494e07c7c0e | 12 | #include "mbed.h" |
| Sneid | 0:d494e07c7c0e | 13 | #include "cdef.h" |
| Sneid | 0:d494e07c7c0e | 14 | #include "TextLCD.h" |
| Sneid | 0:d494e07c7c0e | 15 | #include "Timer.h" |
| Sneid | 0:d494e07c7c0e | 16 | //#define test |
| Sneid | 0:d494e07c7c0e | 17 | |
| Sneid | 0:d494e07c7c0e | 18 | |
| Sneid | 0:d494e07c7c0e | 19 | DigitalIn bLinks(p8); |
| Sneid | 0:d494e07c7c0e | 20 | InterruptIn bBtnLinks(p8); |
| Sneid | 0:d494e07c7c0e | 21 | |
| Sneid | 0:d494e07c7c0e | 22 | Timer timer; |
| Sneid | 0:d494e07c7c0e | 23 | Timer timerSoLangeGedrueckt; |
| Sneid | 0:d494e07c7c0e | 24 | Ticker stTick; |
| Sneid | 0:d494e07c7c0e | 25 | TextLCD stLcd(p26, p25, p24, p23, p22, p20, p19, TextLCD::LCD20x4); |
| Sneid | 0:d494e07c7c0e | 26 | |
| Sneid | 0:d494e07c7c0e | 27 | /* Konstantenvereinbarungen */ |
| Sneid | 0:d494e07c7c0e | 28 | #define nTastShort 2 /* Entprellzyklen */ |
| Sneid | 0:d494e07c7c0e | 29 | #define nTastLong 800 /* 0,5 Sekunden gedrückt halten */ |
| Sneid | 0:d494e07c7c0e | 30 | |
| Sneid | 0:d494e07c7c0e | 31 | enum { enOff, /* Uhr ist aus */ |
| Sneid | 0:d494e07c7c0e | 32 | enRun, /* Zeitläuft */ |
| Sneid | 0:d494e07c7c0e | 33 | enStop /* Zeit steht */ |
| Sneid | 0:d494e07c7c0e | 34 | }; |
| Sneid | 0:d494e07c7c0e | 35 | |
| Sneid | 0:d494e07c7c0e | 36 | int binBtnCheck=0; |
| Sneid | 0:d494e07c7c0e | 37 | |
| Sneid | 0:d494e07c7c0e | 38 | volatile byte bStandby; /* |
| Sneid | 0:d494e07c7c0e | 39 | * Description : Warteflag |
| Sneid | 0:d494e07c7c0e | 40 | */ |
| Sneid | 0:d494e07c7c0e | 41 | |
| Sneid | 0:d494e07c7c0e | 42 | byte bTastTimerLi;/* |
| Sneid | 0:d494e07c7c0e | 43 | * Description : Entprellzähler Links |
| Sneid | 0:d494e07c7c0e | 44 | */ |
| Sneid | 0:d494e07c7c0e | 45 | |
| Sneid | 0:d494e07c7c0e | 46 | byte bTastState;/* |
| Sneid | 0:d494e07c7c0e | 47 | * Description : Zustandsautomat "Taste" |
| Sneid | 0:d494e07c7c0e | 48 | */ |
| Sneid | 0:d494e07c7c0e | 49 | |
| Sneid | 0:d494e07c7c0e | 50 | byte bLcdState; /* |
| Sneid | 0:d494e07c7c0e | 51 | * Description : |
| Sneid | 0:d494e07c7c0e | 52 | */ |
| Sneid | 0:d494e07c7c0e | 53 | |
| Sneid | 0:d494e07c7c0e | 54 | float fStoppUhr; /* |
| Sneid | 0:d494e07c7c0e | 55 | * Description : |
| Sneid | 0:d494e07c7c0e | 56 | */ |
| Sneid | 0:d494e07c7c0e | 57 | |
| Sneid | 0:d494e07c7c0e | 58 | void vTimerTick( void ) |
| Sneid | 0:d494e07c7c0e | 59 | { |
| Sneid | 0:d494e07c7c0e | 60 | bStandby = 1; |
| Sneid | 0:d494e07c7c0e | 61 | } |
| Sneid | 0:d494e07c7c0e | 62 | |
| Sneid | 0:d494e07c7c0e | 63 | |
| Sneid | 0:d494e07c7c0e | 64 | |
| Sneid | 0:d494e07c7c0e | 65 | /* Funktion "Taste Links gedrückt" */ |
| Sneid | 0:d494e07c7c0e | 66 | void vButtonLeShort( void ) |
| Sneid | 0:d494e07c7c0e | 67 | { |
| Sneid | 0:d494e07c7c0e | 68 | } |
| Sneid | 0:d494e07c7c0e | 69 | |
| Sneid | 0:d494e07c7c0e | 70 | /* Funktion "Taste Links lange gedrückt" */ |
| Sneid | 0:d494e07c7c0e | 71 | void vButtonLeLong( void ) |
| Sneid | 0:d494e07c7c0e | 72 | { |
| Sneid | 0:d494e07c7c0e | 73 | } |
| Sneid | 0:d494e07c7c0e | 74 | |
| Sneid | 0:d494e07c7c0e | 75 | /* Funktion "Taste Links losgelassen" */ |
| Sneid | 0:d494e07c7c0e | 76 | void vButtonLeFree( void ) |
| Sneid | 0:d494e07c7c0e | 77 | { |
| Sneid | 0:d494e07c7c0e | 78 | } |
| Sneid | 0:d494e07c7c0e | 79 | |
| Sneid | 0:d494e07c7c0e | 80 | |
| Sneid | 0:d494e07c7c0e | 81 | /******************************************* |
| Sneid | 0:d494e07c7c0e | 82 | * APP1 - Tastenabfrage |
| Sneid | 0:d494e07c7c0e | 83 | *******************************************/ |
| Sneid | 0:d494e07c7c0e | 84 | void vTasteLi( void ) |
| Sneid | 0:d494e07c7c0e | 85 | { |
| Sneid | 0:d494e07c7c0e | 86 | } |
| Sneid | 0:d494e07c7c0e | 87 | |
| Sneid | 0:d494e07c7c0e | 88 | /******************************************* |
| Sneid | 0:d494e07c7c0e | 89 | * APP2 - LCD-Ausgabe |
| Sneid | 0:d494e07c7c0e | 90 | *******************************************/ |
| Sneid | 0:d494e07c7c0e | 91 | void vLcdOut( void ) |
| Sneid | 0:d494e07c7c0e | 92 | { |
| Sneid | 0:d494e07c7c0e | 93 | } |
| Sneid | 0:d494e07c7c0e | 94 | |
| Sneid | 0:d494e07c7c0e | 95 | void BtnUp() |
| Sneid | 0:d494e07c7c0e | 96 | { |
| Sneid | 0:d494e07c7c0e | 97 | binBtnCheck=0; |
| Sneid | 0:d494e07c7c0e | 98 | timerSoLangeGedrueckt.stop(); |
| Sneid | 0:d494e07c7c0e | 99 | timerSoLangeGedrueckt.reset(); |
| Sneid | 0:d494e07c7c0e | 100 | } |
| Sneid | 0:d494e07c7c0e | 101 | |
| Sneid | 0:d494e07c7c0e | 102 | void BtnDown() |
| Sneid | 0:d494e07c7c0e | 103 | { |
| Sneid | 0:d494e07c7c0e | 104 | timerSoLangeGedrueckt.start(); |
| Sneid | 0:d494e07c7c0e | 105 | } |
| Sneid | 0:d494e07c7c0e | 106 | |
| Sneid | 0:d494e07c7c0e | 107 | /* Hauptprogramm */ |
| Sneid | 0:d494e07c7c0e | 108 | int main() |
| Sneid | 0:d494e07c7c0e | 109 | { |
| Sneid | 0:d494e07c7c0e | 110 | int binOnOff=0; //Switch für an-aus schalten der Stoippuhr |
| Sneid | 0:d494e07c7c0e | 111 | bBtnLinks.rise(&BtnUp); |
| Sneid | 0:d494e07c7c0e | 112 | bBtnLinks.fall(&BtnDown); |
| Sneid | 0:d494e07c7c0e | 113 | byte i = 5; |
| Sneid | 0:d494e07c7c0e | 114 | bStandby = 0; |
| Sneid | 0:d494e07c7c0e | 115 | bLcdState = enOff; |
| Sneid | 0:d494e07c7c0e | 116 | fStoppUhr = 0; |
| Sneid | 0:d494e07c7c0e | 117 | stTick.attach_us(&vTimerTick, 20000); |
| Sneid | 0:d494e07c7c0e | 118 | |
| Sneid | 0:d494e07c7c0e | 119 | |
| Sneid | 0:d494e07c7c0e | 120 | |
| Sneid | 0:d494e07c7c0e | 121 | while(1) { |
| Sneid | 0:d494e07c7c0e | 122 | |
| Sneid | 0:d494e07c7c0e | 123 | if (timerSoLangeGedrueckt.read_ms()>=nTastLong) { |
| Sneid | 0:d494e07c7c0e | 124 | timer.stop(); |
| Sneid | 0:d494e07c7c0e | 125 | timer.reset(); |
| Sneid | 0:d494e07c7c0e | 126 | } |
| Sneid | 0:d494e07c7c0e | 127 | |
| Sneid | 0:d494e07c7c0e | 128 | if (!binBtnCheck && !bLinks) { /* Knopf kurz drücken*/ |
| Sneid | 0:d494e07c7c0e | 129 | binBtnCheck=1; |
| Sneid | 0:d494e07c7c0e | 130 | #if define test |
| Sneid | 0:d494e07c7c0e | 131 | stLcd.locate(0,0); |
| Sneid | 0:d494e07c7c0e | 132 | stLcd.printf("Ich bin Stoppuhrr - was los!? "); |
| Sneid | 0:d494e07c7c0e | 133 | #endif |
| Sneid | 0:d494e07c7c0e | 134 | |
| Sneid | 0:d494e07c7c0e | 135 | |
| Sneid | 0:d494e07c7c0e | 136 | if (binOnOff) |
| Sneid | 0:d494e07c7c0e | 137 | timer.stop(); |
| Sneid | 0:d494e07c7c0e | 138 | else |
| Sneid | 0:d494e07c7c0e | 139 | timer.start(); |
| Sneid | 0:d494e07c7c0e | 140 | |
| Sneid | 0:d494e07c7c0e | 141 | binOnOff=!binOnOff; //umschalten zwichen an und aus |
| Sneid | 0:d494e07c7c0e | 142 | stLcd.locate(0,1); |
| Sneid | 0:d494e07c7c0e | 143 | //stLcd.printf("%d. mal",binOnOff, 20); |
| Sneid | 0:d494e07c7c0e | 144 | |
| Sneid | 0:d494e07c7c0e | 145 | } |
| Sneid | 0:d494e07c7c0e | 146 | |
| Sneid | 0:d494e07c7c0e | 147 | //-> ausgabe der aktuellen Zeit |
| Sneid | 0:d494e07c7c0e | 148 | stLcd.locate(0,2); |
| Sneid | 0:d494e07c7c0e | 149 | stLcd.printf("%.2lfs", timer.read()); |
| Sneid | 0:d494e07c7c0e | 150 | //<- |
| Sneid | 0:d494e07c7c0e | 151 | |
| Sneid | 0:d494e07c7c0e | 152 | while(bStandby == 0); |
| Sneid | 0:d494e07c7c0e | 153 | bStandby = 0; |
| Sneid | 0:d494e07c7c0e | 154 | vTasteLi(); |
| Sneid | 0:d494e07c7c0e | 155 | i--; |
| Sneid | 0:d494e07c7c0e | 156 | if(i == 0) { |
| Sneid | 0:d494e07c7c0e | 157 | i = 5; |
| Sneid | 0:d494e07c7c0e | 158 | vLcdOut(); |
| Sneid | 0:d494e07c7c0e | 159 | } |
| Sneid | 0:d494e07c7c0e | 160 | } |
| Sneid | 0:d494e07c7c0e | 161 | } |