Morsecode

int LEDrot   = 1;
int on       = 150;
int off      = 0;
int l        = 600;
int k        = 200;
int pb       = 400;
int pw       = 2000;

void setup()
{
 pinMode(LEDrot, OUTPUT);
}

void loop()
{
 void T();
 void E();
 void C();
 void H();
 void N();
 void I();
 void K();

 void U();
 void N();
 void D();

 void N();
 void A();
 void T();
 void U();
 void R();
 void W();
 void I();
 void S();
 void S();
 void E();
 void N();
 void S();
 void C();
 void H();
 void A();
 void F();
 void T();
 void E();
 void NW();
}

 void T()
{
 digitalWrite(LEDrot, on);
 delay(l);
 digitalWrite(LEDrot, off);

 delay(pb);
}

 void E()
{
 digitalWrite(LEDrot, on);
 delay(k);
 digitalWrite(LEDrot, off);

 delay(pb);
}

 void C()
{
 digitalWrite(LEDrot, on);
 delay(l);
 digitalWrite(LEDrot, off);

 digitalWrite(LEDrot, on);
 delay(k);
 digitalWrite(LEDrot, off);

 digitalWrite(LEDrot, on);
 delay(l);
 digitalWrite(LEDrot, off);

 digitalWrite(LEDrot, on);
 delay(k);
 digitalWrite(LEDrot, off);

 delay(pb);
}

 void H()
{
 digitalWrite(LEDrot, on);
 delay(k);
 digitalWrite(LEDrot, off);

 digitalWrite(LEDrot, on);
 delay(k);
 digitalWrite(LEDrot, off);

 digitalWrite(LEDrot, on);
 delay(k);
 digitalWrite(LEDrot, off);

 digitalWrite(LEDrot, on);
 delay(k);
 digitalWrite(LEDrot, off);

 delay(pb);
}

 void N()
{
 digitalWrite(LEDrot, on);
 delay(l);
 digitalWrite(LEDrot, off);

 digitalWrite(LEDrot, on);
 delay(k);
 digitalWrite(LEDrot, off);

 delay(pb);
}

 void I()
{
 digitalWrite(LEDrot, on);
 delay(k);
 digitalWrite(LEDrot, off);

 digitalWrite(LEDrot, on);
 delay(k);
 digitalWrite(LEDrot, off);

 delay(pb);
}

 void K()
{
 digitalWrite(LEDrot, on);
 delay(l);
 digitalWrite(LEDrot, off);

 digitalWrite(LEDrot, on);
 delay(k);
 digitalWrite(LEDrot, off);

 digitalWrite(LEDrot, on);
 delay(l);
 digitalWrite(LEDrot, off);

 delay(pw);
}

 void U()
{
 digitalWrite(LEDrot, on);
 delay(k);
 digitalWrite(LEDrot, off);

 digitalWrite(LEDrot, on);
 delay(k);
 digitalWrite(LEDrot, off);

 digitalWrite(LEDrot, on);
 delay(l);
 digitalWrite(LEDrot, off);

 delay(pb);
}

 void D()
{
 digitalWrite(LEDrot, on);
 delay(l);
 digitalWrite(LEDrot, off);

 digitalWrite(LEDrot, on);
 delay(k);
 digitalWrite(LEDrot, off);

 digitalWrite(LEDrot, on);
 delay(k);
 digitalWrite(LEDrot, off);

 delay(pw);
}

 void A()
{
 digitalWrite(LEDrot, on);
 delay(k);
 digitalWrite(LEDrot, off);

 digitalWrite(LEDrot, on);
 delay(l);
 digitalWrite(LEDrot, off);

 delay(pb);
}

 void R()
{
 digitalWrite(LEDrot, on);
 delay(k);
 digitalWrite(LEDrot, off);

 digitalWrite(LEDrot, on);
 delay(l);
 digitalWrite(LEDrot, off);

 digitalWrite(LEDrot, on);
 delay(k);
 digitalWrite(LEDrot, off);

 delay(pb);
}

 void W()
{
 digitalWrite(LEDrot, on);
 delay(k);
 digitalWrite(LEDrot, off);

 digitalWrite(LEDrot, on);
 delay(l);
 digitalWrite(LEDrot, off);

 digitalWrite(LEDrot, on);
 delay(l);
 digitalWrite(LEDrot, off);

 delay(pb);
}

 void S()
{
 digitalWrite(LEDrot, on);
 delay(k);
 digitalWrite(LEDrot, off);

 digitalWrite(LEDrot, on);
 delay(k);
 digitalWrite(LEDrot, off);

 digitalWrite(LEDrot, on);
 delay(k);
 digitalWrite(LEDrot, off);

 delay(pb);
}

 void F()
{
 digitalWrite(LEDrot, on);
 delay(k);
 digitalWrite(LEDrot, off);

 digitalWrite(LEDrot, on);
 delay(k);
 digitalWrite(LEDrot, off);

 digitalWrite(LEDrot, on);
 delay(l);
 digitalWrite(LEDrot, off);

 digitalWrite(LEDrot, on);
 delay(k);
 digitalWrite(LEDrot, off);

 delay(pb);
}

 void NW() // Eigentlich ist das wie das normale "N",  aber hier ist am Ende ein delay der die Pause zwischen den Wörtern ?macht?
{
 digitalWrite(LEDrot, on);
 delay(l);
 digitalWrite(LEDrot, off);

 digitalWrite(LEDrot, on);
 delay(k);
 digitalWrite(LEDrot, off);

 delay(pw);
}

Dann wird mir das aber alles als Fehler angezeigt:

"In file included from C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Arduino.h:28:0,

                from C:\Users\thega\AppData\Local\Temp\arduino_build_596999\sketch\A4c_Morsezeichen.ino.cpp:1:

H:\Schule\Technik u. Naturwissenschaften (TuN)\04.1 - Morsezeichen\A4c_Morsezeichen\A4c_Morsezeichen.ino: In function 'void loop()':

C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/WString.h:38:74: error: expected primary-expression before ')' token

#define F(string_literal) (reinterpret_cast<const __FlashStringHelper *>(PSTR(string_literal)))

                                                                         ^

H:\Schule\Technik u. Naturwissenschaften (TuN)\04.1 - Morsezeichen\A4c_Morsezeichen\A4c_Morsezeichen.ino:80:8: note: in expansion of macro 'F'

  void F();

       ^

In file included from C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Arduino.h:231:0,

                from C:\Users\thega\AppData\Local\Temp\arduino_build_596999\sketch\A4c_Morsezeichen.ino.cpp:1:

H:\Schule\Technik u. Naturwissenschaften (TuN)\04.1 - Morsezeichen\A4c_Morsezeichen\A4c_Morsezeichen.ino: At global scope:

C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/WString.h:38:28: error: expected unqualified-id before 'reinterpret_cast'

#define F(string_literal) (reinterpret_cast<const __FlashStringHelper *>(PSTR(string_literal)))

                           ^

H:\Schule\Technik u. Naturwissenschaften (TuN)\04.1 - Morsezeichen\A4c_Morsezeichen\A4c_Morsezeichen.ino:287:8: note: in expansion of macro 'F'

  void F()

       ^

C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/WString.h:38:28: error: expected ')' before 'reinterpret_cast'

#define F(string_literal) (reinterpret_cast<const __FlashStringHelper *>(PSTR(string_literal)))

                           ^

H:\Schule\Technik u. Naturwissenschaften (TuN)\04.1 - Morsezeichen\A4c_Morsezeichen\A4c_Morsezeichen.ino:287:8: note: in expansion of macro 'F'

  void F()

       ^

In file included from C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Arduino.h:28:0,

                from C:\Users\thega\AppData\Local\Temp\arduino_build_596999\sketch\A4c_Morsezeichen.ino.cpp:1:

C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/WString.h:38:74: error: expected unqualified-id before ')' token

#define F(string_literal) (reinterpret_cast<const __FlashStringHelper *>(PSTR(string_literal)))

                                                                         ^

H:\Schule\Technik u. Naturwissenschaften (TuN)\04.1 - Morsezeichen\A4c_Morsezeichen\A4c_Morsezeichen.ino:287:8: note: in expansion of macro 'F'

  void F()

       ^

exit status 1
Fehler beim Kompilieren für das Board Arduino/Genuino Mega or Mega 2560."

So könnte mir vllt. einer Helfen, bitte?

Die Funktion F() ist schon vergeben damit kann man Programmteile Strings und Konstanten in den festen Speicher schreiben.
Also void F() umbenennen und ab gehts
Gruß
DerDani

Bitte setzte dein Code in Code Tags also EDIT und Markieren und den Button oben link </> benutzen

Das ist auch falsch:

void loop()
{
  void T();
  void E();
  ....
}

Bei Funktionsaufrufen steht nicht der Rückgabewert dabei

Barthalo:
Die Aufgabenstellung lautet wie folgt:

:roll_eyes: Schule ....

b) Stelle das Worte "Technik" als Morsezeichen dar. Schreibe für jeden dazu benötigten
Buchstaben eine eigene Methode.

"Methode" ist ein Begriff der objektorientieren Programmierung. Die Lehrkraft meint "Funktion". Dass allgemeine Funktionen als Methoden bezeichnet werden, ist mir noch nciht untergekommen. (Dafür bezeichnen auch die anderen MPG-Mathematiker um mich rum jede vertikale Achse ohne mit der Wimper zu zucken als "y-Achse", obwohl mein LK-Lehrer damals fast cholerisch darüber wurde, das als "2. Achse zu bezeichnen.)
Davon abgesheen ist es wohl die bescheuertstmögliche Lösung, für jeden Buchstaben eine Funktion zu schreiben, anstatt einen lookup table zu machen und den über morse(char letter) auszulesen. Man könnte z.B. ein array [zeichenrumgröße]x[maximale morsecodelänge] machen. Verschwendet ein wenig Platz wegen kürzeren Zeichen (die man z.B. mit 0 terminieren könnte). Ansonsten halt ein Array mit Zeigern auf unterschiedlich lange, nullterminierte arrays. Buchstaben kann man dann direkt auf die Arrayindizes mappen.

c) Ergänze dein Programm um die Worte "und Naturwissenschaften". Erstelle auch hier für
die fehlenden Buchstaben jeweils eine eigen Methode.

Oder man hat das schon im Lookuptable stehen ... Aber superflexibler Code, ich freue mich schon auf Aufgabenteil e) "schreibe eine if-Schleife(sic!), um die passende Methode(sic!) für einen beliebigen Buchstaben aufzurufen."

d) Ersetze die LED durch einen Lautsprecher.

Bin total gespannt auf den Unterschied zwischen lang und kurz, wenn der Lautsprecher weiterhin mit Gleichstrom angetrieben wird :zipper_mouth_face:

Ich hab an der Uni Jahrelang Erstsemestern Schulmathe-Schmarrn aus dem Kopf geprügel und bin mittlerweile zum Schluss gekommen, dass es mir lieber ist, wenn die Leute etwas nicht wissen aber offen sind, es zu lernen, als wenn Sie mit falschen, komischem und/oder unnötig verkomplizierten Halbwissen auflaufen ... deswegen die Reaktion.

Ein anderer Tip. Auch ohne globale Funktionen wie void T();

@volvodani: Ja, da hast du recht. Großer Mist, dass F() per #define definiert wurde.
Sonst wärevoid F();gut von__FlashStringHelper* F(const char*)zu unterscheiden...

Auch wenn eigentlich Methoden, und keine globalen Funktionen definiert werden sollten, hilft das hier leider nichts...

Und noch mehr Fehler verstecken sich im Code, hier mal ein Beispiel rauskopiert:

 void N()
{
 digitalWrite(LEDrot, on);
 delay(l);
 digitalWrite(LEDrot, off);

 digitalWrite(LEDrot, on);
 delay(k);
 digitalWrite(LEDrot, off);

 delay(pb);
}

Du brauchst noch eine Pause zwischen den Dits und Dahs.

sth77:
So in etwa:

 void N()

{
digitalWrite(LEDrot, on);
delay(l);
digitalWrite(LEDrot, off);

delay(); // Hier die passende Pause

digitalWrite(LEDrot, on);
delay(k);
digitalWrite(LEDrot, off);

delay(pb);
}