Forum: Mikrocontroller und Digitale Elektronik Arduino Sketch brauche Hilfe!


von acetim@t-online.de t. (Firma: bo) (acetim)


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

: Bearbeitet durch User
von Nutzer (Gast)


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
}

von acetim@t-online.de t. (Firma: bo) (acetim)


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 .......

: Bearbeitet durch User
von Karl H. (kbuchegg)


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.

: Bearbeitet durch User
von bal (Gast)


Lesenswert?

Hast du dir eigentlich Gedanken um die Mechanik gemacht (falls das 
wirklich eine Cocktailmaschine wird).

Die ist nämlich nicht so trivial wie die Software...

von tim.b (Gast)


Lesenswert?

Ja erstmal vielen Dank dafür  :-)
Es läuft soweit :-)
Zu der Mechanik habe ich mir
schon Gedanken gemacht !!
Werde euch berichten sobald es etwas neues gibt


Gruß
Tim.B

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.