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
  char zu int scritch 1 446 04.04.2016 16:19
Letzter Beitrag: rkuehle
  invalid conversion from 'const char*' to 'char' toto1975 8 885 31.03.2016 12:49
Letzter Beitrag: hotsystems
  char* inhalt in eine Datei auf SD-Karte schreiben MartinK 0 342 30.03.2016 16:42
Letzter Beitrag: MartinK
  Problem mit char array Retian 12 1.007 03.01.2016 22:34
Letzter Beitrag: hotsystems
  Variablen Typ double, char, long aus ext. EEPROM lesen SternGucker 8 1.538 02.04.2015 08:10
Letzter Beitrag: SternGucker
  Char* Compilerfehlermeldung? DL1AKP 2 588 09.02.2015 12:26
Letzter Beitrag: DL1AKP
  String / Char Problem - Ich verzweifele.... DL1AKP 7 4.562 25.09.2014 16:15
Letzter Beitrag: DL1AKP
  String aus char erzeugen funktioniert nicht Foto-Ralf 2 1.234 09.08.2014 23:43
Letzter Beitrag: Foto-Ralf
Question Float in char/int - sd logger Hilgi 6 2.137 25.07.2014 12:50
Letzter Beitrag: Hilgi
Question Konvertierung int zu char[] Kielomatic 2 2.259 25.03.2014 20:43
Letzter Beitrag: Kielomatic

Gehe zu:


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