Die Musterlösung für die Aufgabe der letzten Woche, die wir auch noch am Donnerstag bearbeiten werden.
You are viewing an older revision! See the latest version
Homepage
/media/uploads/majdak79/main.cpp
{/* Aufgabebstellung: Zähler von 0 - 39; Ein Erhöhnen über 39 und ein Vermindern unter 0 ist nicht möglich. a) mit Joystick UP Zählerinhalt um 1 erhöhen b) mit Joystick DOWN Zählerinhalt um 1 vermindern c) mit Joystick LEFT Zählerinhalt um 5 erhöhen d) mit Joystick RIGHT Zählerinhalt um 5 vermindern e) mit Joystick CENTER: - 1x Zählerinhalt = 0 - 2x hintereinander Zählerinhalt = 10 - 3x hintereinander Zählerinhalt = 20 - 4x hintereinander Zählerinhalt = 30 - 5x hintereinander Zählerinhalt = 0 - usw. f) Anzeige: Einerstelle: Binär auf LED1 - LED4 Zehnerstelle mit RGB-LED: 0 = dunkel; 1 = grün; 2 = rot; 30 = blau
Empfehlung: Verwendung der Class BusOut für die Anzeige
- /
- include "mbed.h"
- define MAX 39
- define MIN 0
- define ADDIT_VAL 5
- define SUBTR_VAL 5 BusOut boLeds(LED1, LED2, LED3, LED4); BusOut boRGBled(p23, p24, p25); p23=RED, p24=GREEN, p25=BLUE; inverted logic: 011=red(6), 101=green(5), 110=blue(3), 111=dark=off(7); BusIn biJoyStk(p15, p12, p13, p16, p14); p15=Up, p12=Down, p13=Left, p16=Right, p14=Center
void setRGBleds(int8_t cnt) { if (cnt < 10) boRGBled = 7; else if (cnt < 20) boRGBled = 5; else if (cnt < 30) boRGBled = 6; else boRGBled = 3; }
int main() { int8_t counter = 0; bool pressedFlag = false;
while(1) {
switch (biJoyStk) {
case 1: Up
if (!pressedFlag) {
if (counter < MAX) {
counter++;
pressedFlag = true;
}
}
break;
case 2: Down
if (!pressedFlag) {
if (counter > MIN) {
counter;
pressedFlag = true;
}
}
break;
case 4:
if (!pressedFlag) {
if (counter <= MAX - ADDIT_VAL) {
counter += ADDIT_VAL;
pressedFlag = true;
}
}
break;
case 8:
if (!pressedFlag) {
if (counter >= MIN + SUBTR_VAL) {
counter -= SUBTR_VAL;
pressedFlag = true;
}
}
break;
case 16:
break;
default: pressedFlag = false;
break;
}
boLeds = counter%10;
setRGBleds(counter);
}
}
}