fortlaufend zählen m. Ausgabe auf LCD (18F2550)

Gast #3974579
Lesenswert?

Hallo,

ich häng grad total an meinem Programm. hier geht´s darum die 
Sensorwerte von 5 Sensoren - hängen an folgendem PIC 18F2550, an den 
PINs 2, 3, 4, 5 & 7.
Werte einlesen geht ja mittlerweile schon - diese über RS232 auf LCD 
ausgeben - auch kein Problem...ABER nun kommt´s:
Am Display soll folgendes stehen:
Sensor "NR"
"Wert" Pa
(zweizeilig - da auch zweizeiliges Display)
"Sensor"; "Wert" u. "Pa" wird schon brav angezeigt - nur die 
"fortlaufende" Nummer, welche neben "Sensor" hingehört will einfach 
nicht richtig raus - entweder kommen da so zahlen wie 0, 2, 4, 8, 1 oder 
einfach nur "0"...
wer kann mir denn bitte kurz weiterhelfen? hab schon ´nen mächtigen 
Knoten im Gehirn... :-(
Gast #3974609
Lesenswert?

sry - hab´s vergessen - aber mittlerweile hat es sich bisschen gebessert 
- mittlerweile zählt er so:
0, 1, 2, 3, 4, 8

-> wie schaff ich nun diesen "8"er wegzu"programmieren"?

hier ein ausschnitt des codes:
1
...
2
  if (act_sensor_number<=3)
3
      act_sensor_number++;
4
      else {
5
        if (act_sensor_number==4)
6
        act_sensor_number=8;
7
        else
8
        act_sensor_number=0;
9
      }
Gast #3974618
Lesenswert?

Kathleen Z. schrieb:
> -> wie schaff ich nun diesen "8"er wegzu"programmieren"?

Einfach:

Kathleen Z. schrieb:
> if (act_sensor_number<=3)
>       act_sensor_number++;
>       else {
>         if (act_sensor_number==4)
>         act_sensor_number=8;
>         else
>         act_sensor_number=0;
>       }

Ersetzen durch:
1
 if (act_sensor_number<=3) {
2
   act_sensor_number++;
3
 } else {
4
   act_sensor_number=0;
5
 }
Gast #3974632
Lesenswert?

Gugu Kathleen,

etwas mehr Code wäre schick, damit man auch weiß wie die Variablen 
definiert sind und so weiter...
Anstatt mit IF-Anweisung würde ich eventuell mal die CASE-Anweisung 
probieren.
Wenn

if (act_sensor_number==4)
        act_sensor_number=8;

nochmal etwas überdacht wird...
Lustig wäre wenn er Primzahlen ausspuckt, aber man kann ja nicht alles 
haben!

Gruß
dat
Beast
#3974642
Lesenswert?

Kathleen Z. schrieb:
> Stefan schrieb:
>> Naja du setzt ja deine act_sensor_number auf 8 falls
>> act_sensor_number==4.
>
> ah jo...hoppla...VIELEN DANK! - jetz is der Knoten auch weg...

Das wundert mich ehrlich gesagt nicht.
Denn deine Code-Formatierung ist, ganz ehrlich und frei gesagt, 
ziemliche Scheisse.

Dass du in
1
  if (act_sensor_number<=3)
2
      act_sensor_number++;
3
      else {
4
        if (act_sensor_number==4)
5
        act_sensor_number=8;
6
        else
7
        act_sensor_number=0;
8
      }

die Logik nicht mehr auf einen Blick erkennen kannst, verwundert nicht 
wirklich. Mit einer konsistenten Einrückung und ein paar Leerzeichen an 
strategischen 'Lese'-Punkten ...
1
  if (act_sensor_number <= 3)
2
    act_sensor_number++;
3

4
  else {
5
    if (act_sensor_number == 4)
6
      act_sensor_number = 8;
7
    else
8
      act_sensor_number = 0;
9
  }

sieht das alles gleich viel besser aus. und wenn man dann auch noch das 
else mit dem if zu einem 'else if' zusammenzieht
1
  if (act_sensor_number <= 3)
2
    act_sensor_number++;
3

4
  else if (act_sensor_number == 4)
5
    act_sensor_number = 8;
6

7
  else
8
    act_sensor_number = 0;

dann sieht man eigentlich das 'Problem' recht schnell.

Fazit: arbeite an deiner Code-Formatierung!
Dein Problem gehörte zu den Dingen, die nicht notwendig sind, wenn man 
seinen Code sauber hält.


Obwohl: Manchmal hat man wirklich Tomaten auf den Augen. Ist uns allen 
schon so gegangen.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren