Forum: Mikrocontroller und Digitale Elektronik C Programmierung verbessern,vereinfachen


von Kai (Gast)


Angehängte Dateien:

Lesenswert?

Hallo

Ich habe mal eine Frage zur einer C Programmierung.

Ich habe folgendes Programm geschrieben: Siehe Anhang

Dazu diese Fragen:

1. Gibt es irgendeine andere Möglichkeit ohne if die Ausgabe bei 
bestimmten  Werten zu ermöglichen?

2. Wie bekomme ich das gebacken das immer nur ein Wert angezeigt wird?

Zur Zeit überlagern sich alle Ausgaben auf einem LCD.

Wie bekomme ich dies hier in C geschrieben?
z.b. Wert <= 255 aber >230 dann Ausgabe 0 Lux
     Wert <= 230 aber >205 dann Ausgabe 10-20 Lux

So habe ich es bei der If Anweisung probiert aber ohne Erfolg.

Für Ratschläge und Hilfen bedanke ich mich schoneinmal im vorraus.

Mfg Kai

von P. S. (Gast)


Lesenswert?

Kai schrieb:

> 1. Gibt es irgendeine andere Möglichkeit ohne if die Ausgabe bei
> bestimmten  Werten zu ermöglichen?

Irgendeine schon, aber if duerfte die Sinnvollste sein.

Besser saehe das aus, wenn du Tabellen fuer die Grenzwerte und die 
passenden Strings verwendest.

> 2. Wie bekomme ich das gebacken das immer nur ein Wert angezeigt wird?

Mit dem kleinsten Wert anfangen und else verwenden.

if (AnalogWert <=26)
{
      printlcd ("über 1000 Lux   ",2);  // Ausgabe an Zeile 1 des LCDs
}
else if (AnalogWert <=51)
{
      printlcd ("360-1000 Lux    ",2);  // Ausgabe an Zeile 1 des LCDs
}

> Wie bekomme ich dies hier in C geschrieben?
> z.b. Wert <= 255 aber >230 dann Ausgabe 0 Lux
>      Wert <= 230 aber >205 dann Ausgabe 10-20 Lux

if ((AnalogWert <=255) && (AnalogWert >230))

> So habe ich es bei der If Anweisung probiert aber ohne Erfolg.

Du solltest deine Versuche zeigen, dann kann man dir sagen, warum du 
damit keinen Erfolg hattest.

> Für Ratschläge und Hilfen bedanke ich mich schoneinmal im vorraus.

Die wichtigste Hilfe fuer C ist ein gelesenes C-Buch.

von codehamster (Gast)


Lesenswert?

Kai schrieb:
> Wie bekomme ich dies hier in C geschrieben?
> z.b. Wert <= 255 aber >230 dann Ausgabe 0 Lux
>      Wert <= 230 aber >205 dann Ausgabe 10-20 Lux
>
> So habe ich es bei der If Anweisung probiert aber ohne Erfolg.
Problem 2 würde ich so lösen:
1
if((Wert <= 255)&&(Wert > 230)){
2
   ...
3
}else if((Wert <= 230)&&(Wert > 205)){
4
   ...
5
}

von ... (Gast)


Lesenswert?

codehamster schrieb:
> Problem 2 würde ich so lösen:
> if((Wert <= 255)&&(Wert > 230)){
>    ...
> }else if((Wert <= 230)&&(Wert > 205)){
>    ...
> }

Das sind viel zu viel Vergleiche. Die Hälfte reicht doch völlig:
1
if(Wert > 230) {
2
   ...
3
} else if(Wert > 205) {
4
   ...
5
} else ...
Bis auf die Tatsache, dass hier mit dem größten Wert begonnen wird, ist 
das aber genau die von Peter bereits gepostete Lösung.

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
Noch kein Account? Hier anmelden.