Morsecode Generator Problem

Gast #3426266
Lesenswert?
• ▲
▼
Habe ein Problem mit dem Verständnis dieses Sketch Codes, Teilweise 
verstehe ich allerdings ab " void flashSequence(char* sequence)" sind 
bei mir nur noch Fragezeichen, und wieso wird immer dieses "char*"  vor 
dem Array geschrieben?
1
int ledPin = 8;
2

3
char* letters[] = {
4
  ".-", "-...", "-.-.", "-..", ".", "..-.", "--.", "....", "..",    // A-I
5
  ".---", "-.-", ".-..", "--", "-.", "---", ".--.", "--.-", ".-.",  // J-R
6
  "...", "-", "..-", "...-", ".--", "-..-", "-.--", "--.."          // S-Z
7
};
8

9
char* numbers[] = {"-----", ".----", "..---", "...--", "....-", ".....", "-....", "--...", "---..", "----."};
10

11
int dotDelay = 250;
12

13
void setup()                 
14
{
15
  pinMode(ledPin, OUTPUT);
16
  Serial.begin(9600);
17
}
18

19
void loop()                    
20
{
21
  char ch;
22
  if (Serial.available())      // liegen Daten am USB Port vor?
23
  {
24
    ch = Serial.read();        // einzelne Buchstaben lesen
25
    if (ch >= 'a' && ch <= 'z')
26
    {
27
      flashSequence(letters[ch - 'a']); 
28
    }
29
    else if (ch >= 'A' && ch <= 'Z')
30
    {
31
      flashSequence(letters[ch - 'A']);
32
    }
33
    else if (ch >= '0' && ch <= '9')
34
    {
35
      flashSequence(numbers[ch - '0']);
36
    }
37
    else if (ch == ' ')
38
    {
39
     delay(dotDelay * 4);      
40
    }
41
  }
42
}
43

44
void flashSequence(char* sequence)
45
{
46
   int i = 0;
47
   while (sequence[i] != NULL)
48
   {
49
       flashDotOrDash(sequence[i]);
50
       i++;
51
   }
52
   delay(dotDelay * 3);    // Abstand zwischen den Buchstaben
53
}
54

55
void flashDotOrDash(char dotOrDash)
56
{
57
  digitalWrite(ledPin, HIGH);
58
  if (dotOrDash == '.')
59
  {
60
    delay(dotDelay);           
61
  }
62
  else // wenn es ein Strich ist 3* so lang
63
  {
64
    delay(dotDelay * 3);           
65
  }
66
  digitalWrite(ledPin, LOW);    
67
  delay(dotDelay); // Abstand zwischen Blinksignalen
68
}
#3426287
Lesenswert?
• ▲
▼
Joshua Martin schrieb:
> Habe ein Problem mit dem Verständnis dieses Sketch Codes, Teilweise
> verstehe ich allerdings ab " void flashSequence(char* sequence)" sind
> bei mir nur noch Fragezeichen, und wieso wird immer dieses "char*"  vor
> dem Array geschrieben?

Weil es ein Array von Pointern sein muss. Die String-Literale werden in 
dein Codesegment im Controller abgeleget und sind für den Compiler nur 
Adressen. Lies mal ein zum Thema Strings, am besten bei den Herren 
Kernighan und Ritchie.

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.