Benutzer-Werkzeuge

Webseiten-Werkzeuge


skript:klassen-arduino

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen gezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
skript:klassen-arduino [2018/10/26 23:06]
d.golovko [1. Deklaration]
skript:klassen-arduino [2021/06/11 11:28] (aktuell)
d.golovko
Zeile 49: Zeile 49:
 // Konstruktor;​ noteList: Notenabfolge,​ arraySize: Laenge des Noten-Arrays,​ pin: Piezo-Pin // Konstruktor;​ noteList: Notenabfolge,​ arraySize: Laenge des Noten-Arrays,​ pin: Piezo-Pin
 Song::​Song(int noteList[], int arraySize, int pinNumber) { Song::​Song(int noteList[], int arraySize, int pinNumber) {
-  ​for (int i 0; i < arraySize; ​i++) { +  ​this->​arraySize ​= arraySize;​ 
-    this->​notes[i] = noteList[i]; +  this->​notes = noteList;
-  }+
   this->​pin = pinNumber;   this->​pin = pinNumber;
 } }
 +
 //[...] //[...]
 </​file>​ </​file>​
- 
-Dementsprechend müssen wir die Konstruktordeklaration auch in Zeile 3 der Header-Datei ändern: \\ 
-''​Song(int noteList[], int arraySize, int pinNumber);''​ 
  
 Genauso wie in Java wird ''​this''​ benutzt, um auf die Instanz der Klasse (d.h. auf die gerade erzeugte Objekt vom Typ ''​Song''​) zu zeigen. Achtung: in C++ wird statt Punkt ein Pfeil verwendet.  ​ Genauso wie in Java wird ''​this''​ benutzt, um auf die Instanz der Klasse (d.h. auf die gerade erzeugte Objekt vom Typ ''​Song''​) zu zeigen. Achtung: in C++ wird statt Punkt ein Pfeil verwendet.  ​
Zeile 66: Zeile 63:
 #include "​Arduino.h"​ #include "​Arduino.h"​
 //[...] //[...]
 +// Spielt die Melodie ab
 void Song::​play() { void Song::​play() {
-  for (int i = 0; i < sizeof(notes) / sizeof(notes[0]); i++) { +  for (int i = 0; i < arraySize ​; i++) { 
-    tone(pin, notes[i]500); // jede Note spielt 0,5 Sekunde+    tone(pin, notes[i]); 
 +    delay(500);
   }   }
 +  noTone(pin);​
 } }
 //[...] //[...]
Zeile 81: Zeile 81:
 // Konstruktor;​ noteList: Notenabfolge,​ arraySize: Laenge des Noten-Arrays,​ pin: Piezo-Pin // Konstruktor;​ noteList: Notenabfolge,​ arraySize: Laenge des Noten-Arrays,​ pin: Piezo-Pin
 Song::​Song(int noteList[], int arraySize, int pinNumber) { Song::​Song(int noteList[], int arraySize, int pinNumber) {
-  ​for (int i 0; i < arraySize; ​i++) { +  ​this->​arraySize ​= arraySize;​ 
-    this->​notes[i] = noteList[i]; +  this->​notes = noteList;
-  }+
   this->​pin = pinNumber;   this->​pin = pinNumber;
 } }
Zeile 89: Zeile 88:
 // Spielt die Melodie ab // Spielt die Melodie ab
 void Song::​play() { void Song::​play() {
-  for (int i = 0; i < sizeof(notes) / sizeof(notes[0]); i++) { +  for (int i = 0; i < arraySize ​; i++) { 
-    tone(pin, notes[i]500); // jede Note spielt 0,5 Sekunde+    tone(pin, notes[i]); 
 +    delay(500);
   }   }
 +  noTone(pin);​
 } }
 </​file>​ </​file>​
Zeile 129: Zeile 130:
 </​file>​ </​file>​
  
-Der Konstruktor hier wird aufgerufen, bevor ''​setup()''​ anfängt. Das kann ungünstig sein im Fall, wenn der Konstruktor Parameter hat, deren Werte am Anfang des Programms noch nicht bekannt sind (z.B. wenn sie von Sensormessungen abhängen, die in ''​setup()''​ gemacht werden). Anders als in Java, können wir nicht einfach ''​Song mySong;''​ in Zeile 3 schreiben. Das daran, dass ''​mySong''​ eine Referenz ist, und Referenzen dürfen nicht gleich NULL sein. +Der Konstruktor hier wird aufgerufen, bevor ''​setup()''​ anfängt. Das kann ungünstig sein im Fall, wenn der Konstruktor Parameter hat, deren Werte am Anfang des Programms noch nicht bekannt sind (z.B. wenn sie von Sensormessungen abhängen, die in ''​setup()''​ gemacht werden). Anders als in Java, können wir nicht einfach ''​Song mySong;''​ in Zeile 3 schreiben. Das liegt daran, dass ''​mySong''​ eine Referenz ist, und Referenzen dürfen nicht gleich NULL sein. 
  
 <​note>​ <​note>​
skript/klassen-arduino.1540587967.txt.gz · Zuletzt geändert: 2018/10/26 23:06 von d.golovko