Arduino Sketch brauche Hilfe!

OP (Firma: bo) #3379861
Lesenswert?

Hallo Leute ich bräuchte eure Hilfe zu einen Arduino Sketch
hier ein kleiner Auszug davon :

Sketch Auszug
1
void loop() {
2
  if (Serial.available() >0) {
3
    int var = Serial.read ();
4
    if (var == 'a' ){  // a für Long Island Tea 
5
    
6
    digitalWrite (ledblau, HIGH);
7
      
8
  digitalWrite(Wodka, HIGH);   // turn the  on (HIGH is the voltage level)
9
  
10
   delay (5000); // Wodka 2 CL  1 sec.
11
   
12
   digitalWrite(Wodka, LOW); 
13
   
14
   digitalWrite(BraunerRum, HIGH) ;
15
   
16
   delay (1000); // BraunerRum 2 CL
17
   
18
   digitalWrite(BraunerRum, LOW);  
19
        
20
  }
21
  
22
  {
23
// Ende Long ....
24

25

26
    // Sex on the Beach
27
    
28
  if (Serial.available() >0) {
29
    int var = Serial.read ();
30
    if (var == 'b' ){  // b für Sex on the Beach
31
    
32
     digitalWrite (ledblau, HIGH);
33
      
34
  digitalWrite(Wodka, HIGH);   // turn the  on (HIGH is the voltage level)
35
  
36
   delay (2000); //  2 CL  1 sec.
37
   
38
   digitalWrite(Wodka, LOW); 
39
   
40
     digitalWrite(Pfirsichnektar, HIGH);   // turn the  on (HIGH is the  voltage level)
41
  
42
   delay (1000); //  2CL  1 sec.
43
   
44
   digitalWrite(Pfirsichnektar, LOW); 
45
   
46
  }
47
  
48
  {
49
// Ende Sex on the Beach ....
50

51
// Anfang Cola Osborne
52

53
 if (Serial.available() >0) {
54
    int var = Serial.read ();
55
    if (var == 'c' ){  // c  Cola Osborne
56
    
57
     digitalWrite (ledblau, HIGH);
--------------------------------------------------------

Sketch Auszug Ende

Soweit so gut er Zeigt mir auch kein Fehler an !

Nur wenn Ich zum Beispiel ein a Sende macht er den Long Island Tea
das ist schonm mal schön :-)

Aber wenn ich jetzt zum Beispiel ein b Sende passiert garnichts !!!
Bei c auch nichts  !!

An was kann das denn liegen ?

Oder kann ich nur Bestimmte Zeichen an das Board Schicken ?

Würde mich über eine Lösung sehr freuen :-)

Dankeschön

Gruß
Tim
Gast #3379872
Lesenswert?

Dein Puffer wird schon beim ersten Lesen geleert. Mach es am besten so 
in der Art
1
if (Serial.available() )
2
{
3
uint8_t letter = Serial.read();
4

5
switch (letter)
6
{
7
case 'a':
8
   // Long Island Tea mischen
9
   break;
10

11
case 'b':
12
....
13
}
14
}
OP (Firma: bo) #3379889
Lesenswert?

Achso ok würde das hier ja Funktionieren

Sketch Auszug !!!
1
void loop() {
2
  
3
  if (Serial.available() )
4
{
5
uint8_t letter = Serial.read();
6

7
switch (letter)
8
{
9
case 'a':
10
 digitalWrite (ledblau, HIGH);
11
      
12
  digitalWrite(Wodka, HIGH);   // turn the  on (HIGH is the voltage level)
13
  
14
   delay (500); // Wodka 2 CL  1 sec.
15
   
16
   digitalWrite(Wodka, LOW); 
17
   
18
   digitalWrite(BraunerRum, HIGH) ;
19
   
20
 
21

22
    digitalWrite (led, HIGH);
23
    
24
    delay (4000); 
25
    
26
    digitalWrite (led, LOW);
27
    
28

29
   // Long Island T
30
 
31
  break;
32

33
case 'b':
34
  
35
 
36
     digitalWrite (ledblau, HIGH);
37
      
38
  digitalWrite(Wodka, HIGH);   // turn the  on (HIGH is the voltage level)
39
  
40
   delay (2000); //  2 CL  1 sec.
41
   
42
   digitalWrite(Wodka, LOW); 
43
   
44
     digitalWrite(Pfirsichnektar, HIGH);   // turn the  on (HIGH is the voltage level)
45
  
46
   delay (1000); //  2CL  1 sec.
47
   
48
   digitalWrite(Pfirsichnektar, LOW); 
49
   
50
   break; 
51

52
  case 'c':
53

54
Rezept 
55

56
break 
57

58
case 'd':
59

60
rezept
61

62
etc .......
#3380083
Lesenswert?

Ja, würde funktionieren.
Aber warum probierst du es nicht aus? Dein Computer ist die allerbeste 
Instanz, wenn es um die Frage geht 'Würde das funktionieren?'. Spiels 
drauf und der µC zeigt dir dann schon, ob es funktioniert. Und wenn 
nicht, dann muss man eben seine Schlüsse ziehen und sich überlegen, wie 
man rauskriegt was eigentlich los ist.


PS:
Das hier
1
case 'a':
2
 digitalWrite (ledblau, HIGH);
3
      
4
  digitalWrite(Wodka, HIGH);   // turn the  on (HIGH is the voltage level)
5
  
6
   delay (500); // Wodka 2 CL  1 sec.
7
   
8
   digitalWrite(Wodka, LOW); 
9
   
10
   digitalWrite(BraunerRum, HIGH) ;
11
   
12
 
13

14
    digitalWrite (led, HIGH);
15
    
16
    delay (4000); 
17
    
18
    digitalWrite (led, LOW);
19
    
20

21
   // Long Island T
22
 
23
  break;
willst du auf Dauer sowieso nicht so lassen. Das ist doch viel zu 
umständlich, Rezepte so zu programmieren. Kauf dir ein C oder C++ Buch 
und lerne mit Datenstrukturen umzugehen! Du wirst dich in Richtung 
kleiner Datenbank bewegen müssen. Das hört sich jetzt schlimmer an, als 
es ist. De facto kannst du mit einer vernünftig aufgebauten 
Datenstruktur dir das Leben enorm erleichtern. Sowohl in der 
Progammierung als auch später in der Wartung. Allerdings wird dann 
dieser Teil des Programms komplett anders aussehen.

Im Idealfall hast du dir mittels Strukturen einen Mechnismus gebaut, in 
dem du beschreiben kannst
1
  { 'a',  2,                       // Kennbuchstabe 'a', 2 Zutaten, Long Island
2
        { { Wodka, 2000 },
3
          { BraunerRum, 1000 },
4
        }
5
  };
bzw. ein Array derartiger Rezepte. Dein Programm durchsucht dieses 
Array, ob es den erhaltenen Buchstaben findet und führt das zugehörige 
Rezept aus der Beschreibung heraus aus.
Dazu musst du aber mit Arrays und Strukturen umgehen können.

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