sketche

Hi,

ich habe zwei Sketche, die vom Aufbau her sehr ähnlich sind und ich möchte sie gerne zusammenfügen und gemeinsam auf meinen Arduino hochladen.

Jedoch habe ich das Prinzip nicht verstanden, wie ich in das Setup die weiteren Pins einfüge und im loop die weiter Ansteuerung.

Allgemein hat es auch nicht funktioniert ein neues Objekt zu erstellen.

Die Sketche sind zum einen da um einen Lenkservo anzusteuern und zum anderen um einen Fahrtenregler anzusteuern über den EMpfänger einer Fernsteuerung und dem Arduino.

Danke :slight_smile:

Sketch Lenkservo :

#include <Servo.h>

Servo lenkservo; // Servo Bibliothek einfügen
//short winkel; // Worfür ist die "winkel" Variable ???

void setup()
{
lenkservo.attach(2, 544, 2400); //Signal von Arduino (pin 2) an Servo
pinMode(12,INPUT); //Signal von FB-Empfänger an Arduino (pin 12)
Serial.begin(9600); //Datenrate (???)

}

void lenken(short winkel)
{

//Serial.println("lenken()");
Serial.print("Lenkservo angesteuert mit ");
Serial.println(winkel);
lenkservo.write(winkel);

}

/short winkelberechnen(short wert)
{
short ausgabe = (wert-1000)
(170/1000);
Serial.print("berechneter Winkel:");
Serial.println(ausgabe);
return ausgabe;
}*/

void loop()
{
short lenkWert; // Variable "lenkWert" initialisieren
lenkWert = pulseIn(12,HIGH); // Lenkwert von FB-Emfänger in "lenkWert" schreiben
Serial.print("Eingelesener Wert:");
Serial.println(lenkWert);

if(lenkWert < 1400) { // Wenn lenkWert < 1400, dann gibt lenkWert an den Servo weiter (Links)
lenken(lenkWert);
}else if(lenkWert > 1600) { // Wenn lenkWert > 1600, dann gibt lenkWert an den Servo weiter (Rechts)
lenken(lenkWert);
}else {
lenken(1500); // Ansonsten gibt 1500 an den Servo weiter. (Grundstellung)
}

}

Sketch Fahrtenregler

#include <Servo.h>

Servo lenkservo; // Servo Bibliothek einfügen
//short winkel; // Worfür ist die "winkel" Variable ???

void setup()
{
lenkservo.attach(3);
pinMode(11,INPUT);
Serial.begin(9600);

}

void lenken(short winkel)
{

//Serial.println("lenken()");
Serial.print("Lenkservo angesteuert mit ");
Serial.println(winkel);
lenkservo.write(winkel);

}

/short winkelberechnen(short wert)
{
short ausgabe = (wert-1000)
(170/1000);
Serial.print("berechneter Winkel:");
Serial.println(ausgabe);
return ausgabe;
}*/

void loop()
{
short lenkWert; // Variable "lenkWert" initialisieren
lenkWert = pulseIn(11,HIGH); // Lenkwert von FB-Emfänger in "lenkWert" schreiben

Serial.print("Eingelesener Wert:");
Serial.println(lenkWert);

if(lenkWert < 1400) { // Wenn lenkWert < 1400, dann gibt lenkWert an den Servo weiter (Links)
lenken(lenkWert);
}else if(lenkWert > 1600) { // Wenn lenkWert > 1600, dann gibt lenkWert an den Servo weiter (Rechts)
lenken(lenkWert);
}else {
lenken(1500); // Ansonsten gibt 1500 an den Servo weiter. (Grundstellung)
}

}

sketch_apr25a.ino (1.48 KB)

Zunächst solltest Du Deine Sketche in Code-Tags fassen, damit sie lesbar/scrollbar dargestellt werden. Außerdem könntest Du sie noch ein bisschen aufhübschen - z. B. überflüssige Leerzeilen raus.

Gruß

Gregor

GewitterimKopf:
ich habe zwei Sketche, die vom Aufbau her sehr ähnlich sind und ich möchte sie gerne zusammenfügen und gemeinsam auf meinen Arduino hochladen.

Jedoch habe ich das Prinzip nicht verstanden, wie ich in das Setup die weiteren Pins einfüge und im loop die weiter Ansteuerung.
.....

Wenn man sich auch nur um Copy & Paste kümmert, wird man es nie lernen.

Nur mal so als Vorschlag:
Definitionen und Setup zusammen kopieren, es dürfen keine doppelten Namen entstehen.
2. Loop als neue Funktion (neuer Name) einfügen und an geeigneter Stelle aus der ersten Loop aufrufen.

Den Rest solltest du durch probieren rausfinden.

Ob das allerdings bei deinen kopierten Teilen Sinn macht, kann ich nicht sehen.

Hallo,

Globale Variable hast Du ja nicht verwendet bei denen es wegen gleicher Namen zu Überschneidungen kommen könnte . Das was in den beiden Setups steht kann einfach zusammen kopiert werden.

Die in den beiden Loop´s verwendeten Variable kannst Du so lassen. Kopiere das was jeweils im loop steht in je eine eigene function, z.B sk_lenken , sk_fahren dann sind die Variablen darin jeweils lokal und können die gleichen Namen haben.
Allerdings hast Du zwei Servos, damit brauchst Du auch zwei unterschiedliche Servo Objekte. Dann hast du in jedem Sketch eine function void lenken(short winkel) da machst du zwei draus, damit du die beiden Servo Objekte auch aufrufen kannst.

Hier ein grobe Gerüst, wie man das machen kann. Es ist ein bischen quicki und so auch wirklich nicht schön gemacht, sollte aber so gehen.

Heinz

.
.

Servo lenkservo // objekt lenkservo erstellen
Servo fahrservo // objekt fahrservo erstellen

setup{

  lenkservo.attach(2, 544, 2400);  //Signal von Arduino (pin 2) an Servo
  pinMode(12,INPUT);    //Signal von FB-Empfänger an Arduino (pin 12)

  fahrservo.attach(3);  
  pinMode(11,INPUT);    

.
.
.

}

void sk_lenken(){

//code von  loop aus sketch1 mit aufruf der funktion lenken

}

void sk_fahren(){
//code von loop aus sketch 2 geändert mit aufruf der funktion fahren

}

void lenken(short winkel){   // function lenken

 // code lenken aus Sketch1
 .
 .

  lenkservo.write(winkel); // ausgabe an objekt lenkservo

}

void fahren(short winkel){  // function fahren
 .
 .
  fahrservo.write(winkel);// ausgabe geändert an objekt fahrservo
} 


loop{

  sk_lenken();
  sk_fahren();
}