PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Upload funktioniert ncht



Tigris
26.02.2015, 18:20
Hallo,

Ich habe eine Steuerung von einem Servo und einem Schrittmotor programmiert.
Alles funktioniert wunderbar.

Dann habe ich einen 2. Servo eingebaut. Immer noch alles prima. Dann auf einmal funktioniert das Upload nicht mehr.

COM port stimmt.
LED blinkt auch kurz nach dem Upload, aber das 16*2 Display zeigt nichts mehr an und das Programm lässt ich nicht ausführen.
Wenn ich das vorherige Programm uploade ist die Welt wieder in Ordnung. Ich habe das Gefühl, dass der Uno nicht bis ins Setup kommt.
Der Compiler zeigt bei beiden Softwareständen keinen Fehler.
Hat jemand einen Ratschlag für mich ?

Sisor
26.02.2015, 18:36
Kein Compilerfehler bedeutet nicht, dass ein Programm funktioniert, sondern nur, dass die Syntax korrekt ist.
Wenn beim Upload keine Fehlermeldung auftaucht, wird das Programm mit 99% Wahrscheinlichkeit ausgeführt.

Kannst du das Programm posten, dass die Probleme verursacht?

Tigris
26.02.2015, 18:51
Ich habe mal alles systematisch deaktiviert und herausgefunden, wenn ich myservo.. rausnehme funktionierts.

Du hast Rechts, der Compiler ist nicht alles. Grüße

void loop() {

myMotor->release();
// myservo1.write(0, 200, true);

Sisor
26.02.2015, 20:32
Die Anweisung
myservo1.write(0, 200, true);
ist nicht definiert. Eigentlich sollte der Compiler da meckern.
Die Funktion nimmt nur ein Parameter an, und zwar einen Ganzzahlwert zwischen 0 und 180, der den Winkel in Grad darstellt. Siehe hier (http://arduino.cc/en/pmwiki.php?n=Reference/ServoWrite)

Tigris
27.02.2015, 08:32
Ich dachte der 1.Wert =Winkel, 2. Wert = Geschwindigkeit, oder ?

Sisor
27.02.2015, 13:28
Ich beziehe mich auf die Arduino-Standard-Servo-Bibliothek (http://arduino.cc/en/Reference/Servo), die mit #include <Servo.h> eingebunden wird.

Deine Initialisierung sollte in etwa so aussehen:

#include <Servo.h>

Servo myservo1;

void setup()
{
myservo1.attach(9); // PIN 9
}

void loop() {
// ... irgendwas mit myservo1.write(winkel);
}

Tigris
27.02.2015, 14:57
Du hast absolut Recht.
Ich habe jedoch die VarSpeedServo eingebunden. Das konntest du ja nicht wissen.

#include <Wire.h>
#include <Adafruit_MotorShield.h>
#include "utility/Adafruit_PWMServoDriver.h"
Adafruit_MotorShield AFMS = Adafruit_MotorShield();
Adafruit_StepperMotor *myMotor = AFMS.getStepper(200, 2); //1,8 Grad / Stepp auf Klemme 3/4


#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
#include <VarSpeedServo.h>

Sisor
28.02.2015, 20:03
Du müsstest schon ein bischen mehr Code liefern. So ist imho nichts Verdächtiges zu sehen.
Könnte einiges sein, vllt. benutzen die Bibliotheken die gleichen Resourcen wie z.B. Timer und kommen sich ins Gehege.