INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
änderbarer char?
19.04.2015, 11:17
Beitrag #1
änderbarer char?
Hallo,

ich bin gerade dabei mir eine Ausgabe zu programmieren die relativ simpel ist, wenn sich ein Zustand ändert dann gibt etwas aus.
Allerdings würde ich das gerne in einem sprintf Befehl zusammenfügen um so nur eine Variable zu erhalten.
Dahinter steckt kein Sinn ich möchte nur wissen was ich falsch mache.
Ich habe auch schon String versuch aber auch das hat nicht funktioniert, würde mich über eure Hilfe sehr freuen.

Ich möchte also das der Inhalt der "Ausgabe" sich bei unterschiedlichen Zuständen ändert.

#include <Stdio.h>

int Draht1 = 22;
int Draht2 = 24;
int Draht3 = 26;

int Zustand1;
int Zustand2;
int Zustand3;

int b;
char a;
char Herz;
char Lunge;
char Leber;
char Ausgabe[180];

void setup() {

Serial.begin(9600);

pinMode(Draht1, INPUT);
pinMode(Draht2, INPUT);
pinMode(Draht3, INPUT);

sprintf(Ausgabe, "Organ ist: %c ",a);

}

void loop() {

switch(b)
{
case 1: a = Herz;
break;

case 2: a = Lunge;
break;

case 3: a = Leber;
break;

}

Zustand1 = digitalRead(Draht1);
if(Zustand1 == 0)
{
b=1;

Serial.println(Ausgabe);
delay(10000);
while(1);
}

Zustand2 = digitalRead(Draht2);
if(Zustand2 == 0)
{
b=2;

Serial.println(Ausgabe);
delay(10000);
while(1);
}

Zustand3 = digitalRead(Draht3);
if(Zustand3 == 0)
{
b=3;

Serial.println(Ausgabe);
delay(10000);
while(1);
}


}
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
19.04.2015, 12:55
Beitrag #2
RE: änderbarer char?
....
char Herz;
char Lunge;
char Leber;
....

Die Variablen Herz, Lunge, Leber sind nirgendwo definiert.

z.B.
char Herz = 'H';
char Lunge = 'U';
char Leber = 'L';
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
19.04.2015, 18:06
Beitrag #3
RE: änderbarer char?
Deine Idee hat leider ebenfalls keine Abhilfe geschaffen
oder ich habe es falsch angewandt...
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
19.04.2015, 18:45 (Dieser Beitrag wurde zuletzt bearbeitet: 19.04.2015 19:26 von Pit.)
Beitrag #4
RE: änderbarer char?
ausserdem steht das sprintf an der falschen stelle
es kann ja erst ausgeben werden wenn es gefüllt worden ist.
das switch(b) genauso, erst muss doch b gelesen bevor es im switch verwendet werden kann.


void loop() {


Zustand1 = digitalRead(Draht1);
if(Zustand1 == 0)
{
b=1;

Serial.println(Ausgabe);
delay(10000);
while(1);
}

Zustand2 = digitalRead(Draht2);
if(Zustand2 == 0)
{
b=2;

Serial.println(Ausgabe);
delay(10000);
while(1);
}

Zustand3 = digitalRead(Draht3);
if(Zustand3 == 0)
{
b=3;

Serial.println(Ausgabe);
delay(10000);
while(1);
}


}

switch(b)
{
case 1: a = Herz;
break;

case 2: a = Lunge;
break;

case 3: a = Leber;
break;

}
sprintf(Ausgabe, "Organ ist: %c ",a);
}

3/4 von deinem code kann man noch wegrationalisieren, da bleibt am ende fast nix mehr übrig.
was soll denn das "while (1);" --> das ist doch eine endlosschleife aus der er nie rauskommt
while(1); ist in diesem kontext schwachsinn und muss weg.

so ähnlich könnte das aussehen

#include <Stdio.h>

const int Draht1 = 22;
const int Draht2 = 24;
const int Draht3 = 26;

int b;
char Ausgabe[180];

void setup() {

Serial.begin(9600);

pinMode(Draht1, INPUT);
pinMode(Draht2, INPUT);
pinMode(Draht3, INPUT);
}

void loop() {


if (!digitalRead(Draht1) b=1;
if (!digitalRead(Draht2) b=2;
if (!digitalRead(Draht3) b=3;

switch(b)
{
case 1: sprintf(Ausgabe, "Organ ist: %s","Herz");
break;

case 2: sprintf(Ausgabe, "Organ ist: %s","Lunge");
break;

case 3: sprintf(Ausgabe, "Organ ist: %s","Leber");
break;

}

Serial.println(Ausgabe);
delay(10000);
}

so ähnlich könnte es noch weiter verkürzt aussehen:

#include <Stdio.h>

const int Draht[] = {22, 24, 26};

char Ausgabe[180];
const char* Organ[] = {"Herz", "Lunge", "Leber"};

void setup() {
Serial.begin(9600);
for (int i=0; i<3; i++) pinMode(Draht[i], INPUT));
}

void loop() {
for (int i=0; i<3; i++) if (!digitalRead(Draht[i]) sprintf(Ausgabe, "Organ ist: %s",Organ[i]));
Serial.println(Ausgabe);
delay(10000);
}
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Aus char string machen metzgefa 1 134 06.05.2017 15:15
Letzter Beitrag: Tommy56
  Char Werte ausgeben Scotch 5 296 31.03.2017 15:37
Letzter Beitrag: Scotch
  String -> Char *gelöst* Binatone 2 334 31.01.2017 11:08
Letzter Beitrag: Binatone
  char zu int scritch 1 657 04.04.2016 16:19
Letzter Beitrag: rkuehle
  invalid conversion from 'const char*' to 'char' toto1975 8 1.448 31.03.2016 12:49
Letzter Beitrag: hotsystems
  char* inhalt in eine Datei auf SD-Karte schreiben MartinK 0 452 30.03.2016 16:42
Letzter Beitrag: MartinK
  Problem mit char array Retian 12 1.461 03.01.2016 22:34
Letzter Beitrag: hotsystems
  Variablen Typ double, char, long aus ext. EEPROM lesen SternGucker 8 1.852 02.04.2015 08:10
Letzter Beitrag: SternGucker
  Char* Compilerfehlermeldung? DL1AKP 2 767 09.02.2015 12:26
Letzter Beitrag: DL1AKP
  String / Char Problem - Ich verzweifele.... DL1AKP 7 6.748 25.09.2014 16:15
Letzter Beitrag: DL1AKP

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste