Hallo,
wir müssen zurzeit im Studium folgende Aufgabe erledigen. Wir sollen auf
einer 3x7 Segment-Anzeige eine "Wasserwaage" implementieren. Dafür haben
wir einen Sensor, welcher uns (mithilfe einiger Umrechnungen) einen
ziemlich genauen Winkel gibt. Mit diesem Winkel wollen wir die Anzeige
dann ansteuern und die Anzeige steuern. Je nach Neigung sollen die
"Striche" auf der Anzeige dann nach links/rechts und oben/unten wandern.
Y-Richtung ist links/rechts und X-Richtung ist oben/unten.
Dabei haben wir jetzt jedoch folgendes Problem: standardmäßig soll in
der Mitte ein "H" angezeigt werden. Jedoch bleibt das "H" bei beliebiger
Neigung in y Richtung immer stehen. Außerdem kommt die Anzeige nie zu
dem Punkt, dass sie die Seite der äußeren 7-Segment-Anzeige anzeigt, die
zur Mitte zeigt. (Quasi "-|--" und "--|-", es springt dann immer direkt
auf die äußersten Seiten ("|---" und "---|").
Der Code dazu (x und y sind die Winkel, die wir bekommen)
1 | void viewBalance(double x, double y){
|
2 | // TODO
|
3 | //X 3 steps of resolution
|
4 | //Y 6 Steps of resolution
|
5 | char horizontal[3] = {0b00010000, 0b00000010, 0b10000000};
|
6 | char vertikal[3] = {0b01100000, 0b01101100, 0b00001100};
|
7 | char cDisplayBuffer[3]={ 0 };
|
8 |
|
9 | if(x >= 45) x = 44;
|
10 | if(x < -45) x = -45;
|
11 |
|
12 | x+= 45;
|
13 |
|
14 | int xhelp = x/(90/3);
|
15 |
|
16 | for(int i = 0; i < 3; i++) {
|
17 | cDisplayBuffer[i] = horizontal[xhelp];
|
18 | }
|
19 |
|
20 | if (-15 < y < 15) {
|
21 | cDisplayBuffer[1] |= vertikal[1];
|
22 | }
|
23 | if ( -30 < y < -15) cDisplayBuffer[1] |= vertikal[2];
|
24 | if ( -45 < y < -30) cDisplayBuffer[2] |= vertikal[0];
|
25 | if ( y < -45) cDisplayBuffer[2] |= vertikal[2];
|
26 |
|
27 | if ( 30 > y > 15) cDisplayBuffer[1] |= vertikal[0];
|
28 | if ( 45 > y > 30) cDisplayBuffer[0] |= vertikal[2];
|
29 | if ( y > 45) cDisplayBuffer[0] |= vertikal[0];
|
30 |
|
31 | writeDigitsToDisplay(cDisplayBuffer[2], cDisplayBuffer[1], cDisplayBuffer[0]);
|
32 |
|
33 | }
|
Hat zufällig jemand eine Idee, woran das liegen könnte?