Hey Leute, in der Schule sollte ich in Arduino eine Passwortabfrage schreiben. Mit “String” Befehl funktioniert super, aber der Lehrer möchte in “char”. Wie mache ich das???
noiasca:
also wenn die Verwendung der String Klasse in deinem Sketch sein einziges Problem ist, dann möge er sich bitte hier selber anmelden...
Es wird hier eher darum gehen etwas C/C++ zu lernen. Vielleicht dient die Aufgabe auch gerade dazu die Verwendung von C Strings zu demonstrieren. Dann ist es völlig kontraproduktiv wenn jemand die Arduino String Klasse verwendet
Serenifly:
Es wird hier eher darum gehen etwas C/C++ zu lernen. Vielleicht dient die Aufgabe auch gerade dazu die Verwendung von C Strings zu demonstrieren. Dann ist es völlig kontraproduktiv wenn jemand die Arduino String Klasse verwendet
Tut mir leid, es hat mir nicht weiter gebracht... ich fühle mich wie in eine Sackgasse. In der Schule lernen wir kaum weil der Lehrer kaum etwas erklärt. Er ist sowas lustlos...
Es gibt gute und nicht ganz so gute Lehrer, aber motivieren muß man sich schon selber
“Das hilft mir nicht” ist nun aber keine weiterführende Aussage ( von dir )
char* für Texte ist zwar besser, aber erstmal nicht so einfach.
Ich rate mal, du hängst am == .
Zwei Zeiger vergleichen ist was anderes als ein Textvergleich (strcmp). Das ist keine Lösung, nur ein Hinweis
Das Array beinhaltet jeweils den Ashii Code eines Buchstabens siehe zB http://www.asciitable.com/. Also passwort[0] den Wert 83 dezimal für das große "S".
Du liest die Werte bis zum nl (nl NEW LINE als Abschluß der Eingabe) am Ende, die von der Schnittstelle kommen in ein Array und vergleichst es mit dem array in dem Du das Password gespeichert hast.
Ein Array mit
const char passwort = "Schule";
definiert hat nach dem "e" noch eine null '\0' als Abschluß am Ende. Also vergleichst Du bis zum vorletzten Arrayelement.
uwefed:
Das Array beinhaltet jeweils den Ashii Code eines Buchstabens siehe zB http://www.asciitable.com/. Also passwort[0] den Wert 83 dezimal für das große “S”.
Du liest die Werte bis zum nl (nl NEW LINE als Abschluß der Eingabe) am Ende, die von der Schnittstelle kommen in ein Array und vergleichst es mit dem array in dem Du das Password gespeichert hast.
Ein Array mit
const char passwort = “Schule”;
definiert hat nach dem “e” noch eine null ‘\0’ als Abschluß am Ende. Also vergleichst Du bis zum vorletzten Arrayelement.
Grüße Uwe
Strcmp braucht zwei chars zum vergleichen, aber ich weiß nicht was ich schreiben soll, dass der zweiter char den eingegebener Text aufnimmt… Serial.read für char funktioniert nicht was ich brauche… oder bin in falschen weg?
void loop() {
Serial.println("Geben Sie Ihre Passwort ein: ");
while(Serial.available()<=0);
= Serial.read();
Was ich brauche:
A: Geben Sie Ihre Passwort ein
E: (Pass eingeben)
A: (Ja) Zugang ist erteilt.
A: (Nein) Password ist falsch. Geben sie nochmal.
Du hast doch auch in deinem jetzigen Code einmal den eingelesenen String und einmal den Vergleichs-String. Bei strcmp() ist das genauso
Serial.read für char funktioniert nicht was ich brauche... oder bin in falschen weg?
Ich habe dir doch schon zwei fertige Funktionen verlinkt um C Strings einzulesen! Oder liest dir selbst mal die Doku zur Serial Klasse durch
readBytes() liest bis zu einem Timeout (den man besser niedriger setzt). Besser ist readBytesUntil() und das Linefeed ('\n') als Endzeichen verwenden. Den seriellen Monitor stellst du dann so ein dass am Ende automatisch ein Linefeed/Newline gesendet wird.