Arduino im Modellbau

Benutzeravatar
the-fallen
Beiträge: 1976
Registriert: 07.03.2011 14:20:47
Wohnort: zwischen Augsburg und Landsberg a.L.

#76 Re: Arduino im Modellbau

Beitrag von the-fallen »

Husi hat geschrieben:Ich dachte, es würden nur die Methoden geladen, die expliziet aufgerufen werden.
Bin mir jetzt selber nicht sicher ob das auch bei Funktionen so ist die zu einer Klasse gehören oder ob alle Klassenmethoden geladen werden. Ich schau mal. Könntest recht haben, aber selbst dann gibts ja mindestens den Konstruktor und Destruktor und die von denen aufgerufenen Hilfsmethoden.
Husi hat geschrieben:Ich hätte mich so eine Zuweisung nicht getraut, weil das Array zuerst hätte dimensionieren wollen.
Wenn man weiß wie groß das Array wird, ist das nicht verkehrt, oder wenn man gleich den Speicher dafür reservieren will.
Husi hat geschrieben:OK, ich ging davon aus, das die Default-Einstellung immer "call by reference" ist.
Nein, bei diesem C nicht. Bei anderen Sprachen ist das aber, wie du sagst, oft so. Java(mag ich auch sehr) ist da z.B. sehr stringent.
Husi hat geschrieben:Wie sieht in diesem Fall die Definition des Funktion-Kopfes aus? Ganz normal?

Code: Alles auswählen

void macheWas(String* meinStringPointer) {
  Serial.println(*meinStringPointer);
};
Setzt voraus, dass man weiß was da für ein Datentyp kommt. Weiß man das nicht könnte man void* nehmen und muss dann innerhalb der Methode einen cast durchführen. Woher man dann weiß zu welchen Datentyp man casten soll muss man irgendwie dann festlegen.

Code: Alles auswählen

void macheWas(void* meinUnbekannterPointer) {
  Serial.println((String*)*meinUnbekannterPointer);
};
Hier übergebe ich also einen Pointer vom Datentyp void. Also ein Typenloser pointer. Später muss ich dann aber explizit sagen das das ein Pointer auf ein String ist.



Kann sein dass die beiden Beispiele nicht ganz korrekt sind. Sitz gerade als Beifahrer im Auto und kannst nicht testen.
  • Prôtos FBL -stretched- a un motor 5+4D 1.13mm 14P de torro [V-Stabi]|[V-Gov] | [YGE90LV] | [UweG-Taumelscheibe] | [ZyclicMod]
  • SuziJanis 700 UltraLight 3570g Abfluggewicht
  • Besessen: T-Rex 250SE, T-Rex 450L, T-Rex600EFL, TDR, Blade mSRX
  • nur Gebaut und eingeflogen: Blade700, Goblin500, TRex150 RKH, Blade 130X RKH, Vibe90
  • Heizkoffersteuerung "HeatBox"

[" 99 little bugs in the code | 99 little bugs in the code | Take one down, patch it around | 117 little bugs in the code "] - Alex Shchepetilnikov
Benutzeravatar
tracer
Operator
Operator
Beiträge: 63774
Registriert: 18.08.2004 18:50:03
Wohnort: Kollmar
Kontaktdaten:

#77 Re: Arduino im Modellbau

Beitrag von tracer »

Eigentlich wollte ich mich nach den Reaktionen ja aus dem Thread raushalten, aber ich lese halt trotzdem noch mit.
the-fallen hat geschrieben:Bin mir jetzt selber nicht sicher ob das auch bei Funktionen so ist die zu einer Klasse gehören oder ob alle Klassenmethoden geladen werden. Ich schau mal. Könntest recht haben, aber selbst dann gibts ja mindestens den Konstruktor und Destruktor und die von denen aufgerufenen Hilfsmethoden.
The .c and .cpp files of the target are compiled and output with .o extensions to this directory, as is the main sketch file and any other .c or .cpp files in the sketch and any .c or .cpp files in any libraries which are #included in the sketch.

These .o files are then linked together into a static library and the main sketch file is linked against this library. Only the parts of the library needed for your sketch are included in the final .hex file, reducing the size of most sketches.
Quelle: http://arduino.cc/en/Hacking/BuildProcess
Benutzeravatar
the-fallen
Beiträge: 1976
Registriert: 07.03.2011 14:20:47
Wohnort: zwischen Augsburg und Landsberg a.L.

#78 Re: Arduino im Modellbau

Beitrag von the-fallen »

Danke.
Dann trifft das wohl auch auf die Klassenmethoden zu.
Bleibt noch der Konstruktor und die von ihm aufgerufenen Methoden die dazukompiliert werden wenn man eine Instanz (also die tatsächliche benutzbare Variable dieses komplexen Datentyps) erstellt und nutzt.

Definiert man eine Variable, nutzt sie aber nie, wird sie entfernt (falls ihr eigene Tests machen wollt).
  • Prôtos FBL -stretched- a un motor 5+4D 1.13mm 14P de torro [V-Stabi]|[V-Gov] | [YGE90LV] | [UweG-Taumelscheibe] | [ZyclicMod]
  • SuziJanis 700 UltraLight 3570g Abfluggewicht
  • Besessen: T-Rex 250SE, T-Rex 450L, T-Rex600EFL, TDR, Blade mSRX
  • nur Gebaut und eingeflogen: Blade700, Goblin500, TRex150 RKH, Blade 130X RKH, Vibe90
  • Heizkoffersteuerung "HeatBox"

[" 99 little bugs in the code | 99 little bugs in the code | Take one down, patch it around | 117 little bugs in the code "] - Alex Shchepetilnikov
Benutzeravatar
tracer
Operator
Operator
Beiträge: 63774
Registriert: 18.08.2004 18:50:03
Wohnort: Kollmar
Kontaktdaten:

#79 Re: Arduino im Modellbau

Beitrag von tracer »

the-fallen hat geschrieben:Definiert man eine Variable, nutzt sie aber nie, wird sie entfernt (falls ihr eigene Tests machen wollt).
Das machen Compiler seit (mindestens) 20 Jahren so. (gcc -Wall kenne ich seit meinen ersten Schritten auf Unix).

Die Arduino IDE ist halt sehr altbacken, kann in keiner Weise mit Xcode (in Kombination mit dem LLVM) mithalten, es ist viel Handarbeit angesagt, aber der GCC ist schon ganz brauchbar.
Benutzeravatar
the-fallen
Beiträge: 1976
Registriert: 07.03.2011 14:20:47
Wohnort: zwischen Augsburg und Landsberg a.L.

#80 Re: Arduino im Modellbau

Beitrag von the-fallen »

Habe es halt erwähnt wenn das ein Anfänger ausprobieren will, wie viel Speicher so belegt wird.

Die IDE ist sehr simpel, stimmt. Alt auch weil sie von einer der ersten Processing IDE abstammt. Man arbeitet aber Gerüchten zur Folge an der Implementation moderner Tools bzw an einer modernen IDE.

Es gibt ja auch alternative IDEs und kann z.B. auch Eclipse nutzen.
Ich halte die ArduinoIDE aber gut für den Einstieg geeignet weil viele hier doch ihre allerersten Berührungspunkte haben und was einfaches und sofort einsetzbares wollen.
  • Prôtos FBL -stretched- a un motor 5+4D 1.13mm 14P de torro [V-Stabi]|[V-Gov] | [YGE90LV] | [UweG-Taumelscheibe] | [ZyclicMod]
  • SuziJanis 700 UltraLight 3570g Abfluggewicht
  • Besessen: T-Rex 250SE, T-Rex 450L, T-Rex600EFL, TDR, Blade mSRX
  • nur Gebaut und eingeflogen: Blade700, Goblin500, TRex150 RKH, Blade 130X RKH, Vibe90
  • Heizkoffersteuerung "HeatBox"

[" 99 little bugs in the code | 99 little bugs in the code | Take one down, patch it around | 117 little bugs in the code "] - Alex Shchepetilnikov
Benutzeravatar
Husi
Beiträge: 2808
Registriert: 19.03.2007 20:06:17
Wohnort: Darmstadt
Kontaktdaten:

#81 Re: Arduino im Modellbau

Beitrag von Husi »

the-fallen hat geschrieben:Ich halte die ArduinoIDE aber gut für den Einstieg geeignet weil viele hier doch ihre allerersten Berührungspunkte haben und was einfaches und sofort einsetzbares wollen.
Stimmt, bei mir hat z.Z. alles auf Anhieb geklappt, so viele Knöpfe bzw. Menüeinträge hat die IDE ja auch nicht.

Gut der Serial-Monitor ist etwas zickig und wohin die includes zu legen / speichern sind habe ich auch noch nicht verstanden, bzw. wenn immer nur *.h Dateien eingebunden werden, warum auch *.cpp Dateien bzw. eine keywords.txt Datei in den Verzeichnissen rumdümpeln... :dontknow:
Wenn ich mit den Grundlagen mal irgendwann klar komme, dann werde ich mich auch mal nach anderen IDE's umschauen.

Viele Grüße
Mirko
Bild Bild Bild Bild
Benutzeravatar
Husi
Beiträge: 2808
Registriert: 19.03.2007 20:06:17
Wohnort: Darmstadt
Kontaktdaten:

#82 Re: Arduino im Modellbau

Beitrag von Husi »

tracer hat geschrieben:Die Arduino IDE ist halt sehr altbacken, kann in keiner Weise mit Xcode (in Kombination mit dem LLVM) mithalten, es ist viel Handarbeit angesagt, aber der GCC ist schon ganz brauchbar.
- Xcode
- LLVM
- GCC

was ist das? :shock:

Danke für eine :idea: (Erleuchtung)
Mirko
Bild Bild Bild Bild
Benutzeravatar
tracer
Operator
Operator
Beiträge: 63774
Registriert: 18.08.2004 18:50:03
Wohnort: Kollmar
Kontaktdaten:

#83 Re: Arduino im Modellbau

Beitrag von tracer »

Husi hat geschrieben:Xcode
Die IDE (http://de.wikipedia.org/wiki/Integriert ... gsumgebung) für OS X und iOS. Also quasi das, was Visual Studio für Windows ist.
(kann man aber auch für den Arduino verwenden: http://playground.arduino.cc/Main/EmbedXcode)
Husi hat geschrieben:- LLVM
Ein Compiler (http://de.wikipedia.org/wiki/LLVM), OK, etwas mehr, aber im Prinzip trifft es das.
Husi hat geschrieben:- GCC
Der Standardcompiler in der Linux-Welt, den nutzt Du auch für den Arduino (avr-gcc).

Grob gesagt:

Du hast Deine .c und .h Dateien.

Der Compiler baut daraus Object-Code (grob: Maschinensprache) und im nächsten Schritt linkt er den Object-Code mit den benötigten Libraries, damit Du ein ausführbares Programm hast, in Deinem Fall ein *.hex.

Unter Windows vergleichbar wäre als Ergebnis eine *.exe.
Benutzeravatar
the-fallen
Beiträge: 1976
Registriert: 07.03.2011 14:20:47
Wohnort: zwischen Augsburg und Landsberg a.L.

#84 Re: Arduino im Modellbau

Beitrag von the-fallen »

Husi hat geschrieben: Gut der Serial-Monitor ist etwas zickig und wohin die includes zu legen / speichern sind habe ich auch noch nicht verstanden, bzw. wenn immer nur *.h Dateien eingebunden werden, warum auch *.cpp Dateien bzw. eine keywords.txt Datei in den Verzeichnissen rumdümpeln... :dontknow:
Warum ist der SerialMonitor zickig?


Includes, also Bibliotheken, kommen in ein Unterverzeichnis namens "libraries" in deinem Sketchbook-Verzeichnis. Also z.B. nach C:\[mein Pfad]\sketchbook\libraries\.
Das sollte auch schon existieren.

So eine Bibliothek besteht immer MINDESTENS aus einem Verzeichnis XYZ und darin einer Header-Datei XYZ.h. Der Name muss über einstimmen damit Arduino das erkennt.

Die .h Datei ist eine Header-Datei und beinhaltet in der Regel ein paar Definitionen und Methodenköpfe als Bekanntmachung.

Die .cpp Datei beinhaltet dann nochmal diese Methoden, jedoch mit vollständigem Rumpf und Code.

Die keywords.txt beinhaltet Wörter die in der ArduinoIDE farbig dargestellt werden sollen, z.B. damit man sieht dass diese bereits Reserviert sind. Meistens sind das die Klassennamen. Hast bestimmt schon gesehen, dass manche Wörter orange dargestellt werden. Das sind solche Wörter.


In der .h Datei kann natürlich auch kompletter Code stehen, aber das macht man in der Regel nicht.
Es können auch noch weitere Dateien in dem Verzeichnis existieren, zum Beispiel weitere .cpp Dateien, etc.



Eingebunden werden nur die .h Dateien weil Arduino dann schon weis, wo er den Rest findet und der Kompiler auch die .cpp Datei dann findet. Das macht man in C halt so. In Java läd man Packages, hier eben .h Dateien.
Man kann aber auch weitere .ino Dateien einbinden, um z.B. seinen Code nicht in eine Datei unübersichtlich unterbringen zu müssen sondern um es aufteilen zu können.
  • Prôtos FBL -stretched- a un motor 5+4D 1.13mm 14P de torro [V-Stabi]|[V-Gov] | [YGE90LV] | [UweG-Taumelscheibe] | [ZyclicMod]
  • SuziJanis 700 UltraLight 3570g Abfluggewicht
  • Besessen: T-Rex 250SE, T-Rex 450L, T-Rex600EFL, TDR, Blade mSRX
  • nur Gebaut und eingeflogen: Blade700, Goblin500, TRex150 RKH, Blade 130X RKH, Vibe90
  • Heizkoffersteuerung "HeatBox"

[" 99 little bugs in the code | 99 little bugs in the code | Take one down, patch it around | 117 little bugs in the code "] - Alex Shchepetilnikov
Benutzeravatar
skysurfer
Beiträge: 5422
Registriert: 16.10.2004 10:59:08
Wohnort: Nürtingen (bei Stuttgart)

#85 Re: Arduino im Modellbau

Beitrag von skysurfer »

Moin,

auch wenn meine Arduino Projekte gerade ruhen .... muss ich mal einen herzlichen Dank, für die rege Diskussion 8) 8) , an Euch ausprechen :wink:
----------------------
Grüsse Hans-Peter

Logo 500 3D, Hughes mit T-Rex 450 5-Blatt Mini VStabi, Blade mCP X, Blade mQX, Blade 130x, Blade 130X Bo
Sender: MC-32 Hott + Spektrum Modul
helifan10
Beiträge: 102
Registriert: 11.11.2009 07:59:27

#86 Re: Arduino im Modellbau

Beitrag von helifan10 »

Hallo zusammen,

hatte heute auch mal kurz Zeit meinem Arduino Leben einzuhauchen.
Bin aber gleich über das erste Problem gestolpert.
So weit funzt eigentlich erst mal alles. ACL blinken schon und meine Positionslampen könnten auch schon
angeschlossen werden.
Jedoch raffe ich es nicht wie ich einen Schalter mit einem Ausgang verknüpfe.
Eingang ist auf Pin 12 mit Pullup Widerstand konfiguriert und soll vorerst auf Ausgang 7 wirken.
Hat von Euch jemand eine Idee? Vermutlich ist das jetzt voll der Anfängerfehler. Ich komme nur nicht drauf.
Übertragen kann ich das Programm. Jedoch will das Ganze nicht funzen.
Der Fehler ist in den if / else Zeilen.
Hier mal der aktuelle Code:

void setup()
{
pinMode(7,OUTPUT); // Legt Pin 7 als Ausgang für LED Dauerlicht fest
pinMode(8,OUTPUT); // Legt Pin 8 als Eingang für LED Beleuchtung fest
pinMode(9,OUTPUT); // Legt Pin 9 als Eingang für LED Beleuchtung fest
pinMode(10,OUTPUT); // Legt Pin 10 als Ausgang für LED ACL oben fest
pinMode(11,OUTPUT); // Legt Pin 11 als Ausgang für LED ACL oben fest
pinMode(12,INPUT_PULLUP); // Legt Pin 12 als Eingang für LED Beleuchtung fest
pinMode(13,INPUT_PULLUP); // Legt Pin 13 als Eingang für LED Beleuchtung fest
}
void loop() { // Loop starten

// Positionsbeleuchtungen einschalten,

if (digitalRead(12) == 0)
{
digitalWrite(7,HIGH);
}
else
{
digitalWrite(7,LOW);
}

// ACL einschalten und blinken lassen

digitalWrite(10,HIGH); // ACL oben einschalten,
delay(100); // Blitzdauer ACL oben,
digitalWrite(10,LOW); // ACL oben wieder ausschalten,
delay(1100); // Wartezeit ACL unten einschalten,
digitalWrite(11,HIGH); // ACL unen einschalten,
delay(100); // Blitzdauer ACL unten,
digitalWrite(11,LOW); // ACL unten wieder ausschalten,
delay(1100); // Wartezeit ACL oben einschalten,
}
Dateianhänge
IMG_1208.JPG
IMG_1208.JPG (596.91 KiB) 930 mal betrachtet
Benutzeravatar
the-fallen
Beiträge: 1976
Registriert: 07.03.2011 14:20:47
Wohnort: zwischen Augsburg und Landsberg a.L.

#87 Re: Arduino im Modellbau

Beitrag von the-fallen »

Kannst du schreiben wie der Schalter beschaltet ist?
Deinem Code nach sollte er beim Schließen (-) auf den DigitalEingang schalten.
  • Prôtos FBL -stretched- a un motor 5+4D 1.13mm 14P de torro [V-Stabi]|[V-Gov] | [YGE90LV] | [UweG-Taumelscheibe] | [ZyclicMod]
  • SuziJanis 700 UltraLight 3570g Abfluggewicht
  • Besessen: T-Rex 250SE, T-Rex 450L, T-Rex600EFL, TDR, Blade mSRX
  • nur Gebaut und eingeflogen: Blade700, Goblin500, TRex150 RKH, Blade 130X RKH, Vibe90
  • Heizkoffersteuerung "HeatBox"

[" 99 little bugs in the code | 99 little bugs in the code | Take one down, patch it around | 117 little bugs in the code "] - Alex Shchepetilnikov
helifan10
Beiträge: 102
Registriert: 11.11.2009 07:59:27

#88 Re: Arduino im Modellbau

Beitrag von helifan10 »

Hallo,

ja, ich schalte die Masse vom Eingangspin 12 (ungerade Adern am Flachbandkabel sind ja Masseanschlüsse) also die graue Ader über einen
Schließer über die rote Ader auf den Pin DI12. Das sollte also passen.
Wenn es so geproggt ist, dann geht der Ausgang 7 sofort an und lässt sich nicht schalten.
Benutzeravatar
the-fallen
Beiträge: 1976
Registriert: 07.03.2011 14:20:47
Wohnort: zwischen Augsburg und Landsberg a.L.

#89 Re: Arduino im Modellbau

Beitrag von the-fallen »

Ich habe deinen Code mal auf dieses hier reduziert (zum Testen):

Code: Alles auswählen

void setup() {
  pinMode(13,OUTPUT); // Legt Pin 11 als Ausgang für LED ACL oben fest
  pinMode(12,INPUT_PULLUP); // Legt Pin 12 als Eingang für LED Beleuchtung fest
}


void loop() { // Loop starten 
// Positionsbeleuchtungen einschalten,
  if (digitalRead(12) == LOW){
    digitalWrite(13,HIGH);
  }
    else 
  {
    digitalWrite(13,LOW);
  }
}
Läuft bei mir. Sobald ich Pin 12 mit GND verbinde geht die LED an Pin13 an. Check doch mal ob tatsächlich (-) an Schalter anliegt und ob er Schalter das auch durch schaltet.
  • Prôtos FBL -stretched- a un motor 5+4D 1.13mm 14P de torro [V-Stabi]|[V-Gov] | [YGE90LV] | [UweG-Taumelscheibe] | [ZyclicMod]
  • SuziJanis 700 UltraLight 3570g Abfluggewicht
  • Besessen: T-Rex 250SE, T-Rex 450L, T-Rex600EFL, TDR, Blade mSRX
  • nur Gebaut und eingeflogen: Blade700, Goblin500, TRex150 RKH, Blade 130X RKH, Vibe90
  • Heizkoffersteuerung "HeatBox"

[" 99 little bugs in the code | 99 little bugs in the code | Take one down, patch it around | 117 little bugs in the code "] - Alex Shchepetilnikov
helifan10
Beiträge: 102
Registriert: 11.11.2009 07:59:27

#90 Re: Arduino im Modellbau

Beitrag von helifan10 »

Hallo,
den Schalter habe ich schon durchgemessen. Das sollte passen.
Ich werde heute Abend mal deinen Code einfügen und bei mir testen.
Danke schon mal.
Antworten

Zurück zu „Arduino Tipps & Hilfe“