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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren