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

  • /
  1. include "mbed.h"
  2. define MAX 39
  3. define MIN 0
  4. define ADDIT_VAL 5
  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); } } }


All wikipages