Nur ganz kurz:
Folgender code:
bool schalte_LED(bool an_aus)
{
if (an_aus)
{
myGLCD.drawBitmap(75,90,96,160,tuer_versuch2);
}
else
{
myGLCD.drawBitmap(80,80,72,160,tuer_zu);
}
};
jetzt möchte ich noch eine clearScreen-mehtode einfügen, sobald ein
neues bild reinkommt. kann mir da jemand kurz sagen wie ich das machen
soll?
es kommen zyklisch can nachrichten rein und bisher wird mein bild bei
jeder neuen nachricht immer wieder gelöscht. ich möchte aber dass sobald
die 1.neue nachricht reinkommt, das bild verändert wird und dann auch
bleibt
peter schrieb: > kann mir da jemand kurz sagen wie ich das machen soll? Mit den Infos nicht... Deine Funktion heißt "schalte_LED", aber offensichtlich malst du da was auf nem GLCD!? Auch deine Problemstellung lässt nur mutmaßen was du willst und was du hast. > Nur ganz kurz: funktioniert hier nicht, sag was los ist und versuch mal dein Problem klar zu formulieren.
1 | bool schalte_LED(bool an_aus) |
2 | {
|
3 | static uint8_t temp = 0; |
4 | if (temp != an_aus){ |
5 | if (an_aus) |
6 | {
|
7 | myGLCD.drawBitmap(75,90,96,160,tuer_versuch2); |
8 | |
9 | }
|
10 | else
|
11 | {
|
12 | myGLCD.drawBitmap(80,80,72,160,tuer_zu); |
13 | }
|
14 | }
|
15 | temp = an_aus; |
16 | };
|
Ok sorry also im moment wird bei einer can nachricht mit der botschaft 1 das bitmap tuer_versuch2 und bei einer nachricht mit botschaft 0 das bitmap tuer_zu abgebildet. möchte die bilder bei einer neuen ankommenden nachricht zunächst löschen, damit nur das aktuelle bild zu sehen ist. das bekomm ich nicht hin
Temp muss auf 2 initialisiert werden statt auf 0, für den allerersten Durchlauf.
ich hab auch eine methode clrScr();. frag mich nur ob ich das mit einem bool oder iwie anders lösen soll
1 | void schalte_LED(bool an_aus) |
2 | {
|
3 | static uint8_t temp = 2; |
4 | if (temp != an_aus){ |
5 | clrScr(); |
6 | if (an_aus) |
7 | {
|
8 | myGLCD.drawBitmap(75,90,96,160,tuer_versuch2); |
9 | }
|
10 | else
|
11 | {
|
12 | myGLCD.drawBitmap(80,80,72,160,tuer_zu); |
13 | }
|
14 | }
|
15 | temp = an_aus; |
16 | };
|
Ingo L. schrieb: > void schalte_LED(bool an_aus) > { > static uint8_t temp = 2; > if (temp != an_aus){ > clrScr(); > if (an_aus) > { > myGLCD.drawBitmap(75,90,96,160,tuer_versuch2); > } > else > { > myGLCD.drawBitmap(80,80,72,160,tuer_zu); > } > } > temp = an_aus; > }; Ingo, überragend, vielen herzlichen dank dir!!!!=) temp wird am anfang auf 2 gesetzt, weil false mit 0 und true schon mit 1 belegt sind oder warum?
Ingo L. schrieb: > Temp muss auf 2 initialisiert werden statt auf 0, für den > allerersten Durchlauf. Und am Besten alle Compiler-Warnings abschalten, die nerven sowieso nur. :-(
>temp wird am anfang auf 2 gesetzt, weil false mit 0 und true schon mit 1 >belegt sind oder warum? Genau, du brauchst einfach einen 3. Zustand zur Initialisierung...
Jodel schrieb: > Und am Besten alle Compiler-Warnings abschalten, die nerven sowieso nur. Öh, ja, du hast Recht. Die Funktion muss natürlich auch einen uint8_t übergeben bekommen.
1 | void schalte_LED(uint8_t an_aus) |
Trotzdem kannst du ja statt dummer Kommentare auch was Sinnvolles posten.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.