INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Anfänger hat Probleme
30.11.2013, 19:21 (Dieser Beitrag wurde zuletzt bearbeitet: 30.11.2013 19:21 von gagafurtz.)
Beitrag #1
Anfänger hat Probleme
Hey Leute,

bin neu hier. Folgendes haben nur wenig Erfahrung im Programmieren und hab da ein Projekt im Kopf bei dem ich etwas Hilfe brauchen könnte.

Folgendes 2 Servo sollen mit einem Taster gesteuert werden.

Taster soll gedrückt werden, Servo 1 bewegt sich von Position 1 auf Position 2. Wenn Servo 1 auf Position 2 steht soll sich Servo 2 von Position 1 auf Position 2 bewegen und dort verweilen.

Alle Servos sollen auf Position 2 stehen und auf Taster Eingabe warten.

Taster wird gedrückt, Servo 2 soll von Position 2 auf Position 1 fahren. Wenn Servo 2 auf Position 1 steht soll Servo 1 von Position 2 auf Position 1 fahren.

Dort sollen dann beide Servos verweilen und auf Tasten Befehl warten um dann wieder den ersten Zyklus auszuführen.


So habe ein Arduino UNO und zwei Modellbauservo zu Verfügung welche ich auch zu Feedback abfrage umrüsten könnt.

Ich denke es wäre aber besser das mit Micro Endschalten durchzuführen.

Jetzt ist die frage ist das Machbar und wenn ja könnte mir da jemand helfen oder zumindest ein paar Tipps geben.

Jetzt schon mal Danke
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
01.12.2013, 14:51
Beitrag #2
RE: Anfänger hat Probleme
Moin gagafurtz (what a nameBig Grin ),
Zitat:Jetzt ist die frage ist das Machbar
Na auf alle Fälle!
Zitat:und wenn ja könnte mir da jemand helfen oder zumindest ein paar Tipps geben.
Sicher auch... ich weiß nicht,erwartest du jetzt, dass jemand den kompletten Code für dich schreibt? Selbst wenn das jemand machen wollte/sollte, fehlen noch etliche Angaben, zB. welche Servos du einsetzt. Ich gehe mal davon aus, dass du die Servos über ein Shield anschließt. Ohne wird eher nicht gehen!
Hast du schon ein Stück Code? Wenn ja, stell es mal rein. Dann kann man weitersehen.
Grüße Ricardo

Nüchtern betrachtet...ist besoffen besser Big Grin
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
01.12.2013, 20:50
Beitrag #3
RE: Anfänger hat Probleme
Also einen vorzeigbaren Programm Code hab ich noch nicht!!

Servo
http://www.conrad.at/ce/de/product/23375...R?ref=list

Hätte geplant das ganze ohne MotorShield hätte ich nicht unbeding verwenden wollen da ich 2 Servos ohne zum laufen gebracht habe.

Erwartungen das mir jemand einen kompletten Code schreibt hatte ich nicht (wär aber auch nicht unangenehm)

Ein paar Tipps für die richtige Code Richtung wären echt nett.

bin zwar Handwerklich begabt ( Maschinenbaumeister) aber von Elektrik hab ich nur Grundkenntnisse und vom Programmieren naja ich bekomme es zusammen ein Programm zum umschreiben.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
01.12.2013, 21:02 (Dieser Beitrag wurde zuletzt bearbeitet: 01.12.2013 21:03 von rkuehle.)
Beitrag #4
RE: Anfänger hat Probleme
Moin nochmal,

ich weiß nicht wieviel mA die Servos unter Last ziehen, daher der Hinweis auf ein Servo-Shield. Die Arduino-Pins geben max. 40 mA raus.

Hier mal ein Einstieg-Code um die Teile zu testen:
http://arduino.cc/en/Tutorial/Sweep
Über die referenz (unten auf der Site) kann man alle notwendigen Befehle/Funktionen erreichen um die Servos zu steuern.

Grüße Ricardo

Nüchtern betrachtet...ist besoffen besser Big Grin
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
05.12.2013, 22:26
Beitrag #5
RE: Anfänger hat Probleme
So hab mal ein wenig Getestet
bin aber noch nicht am Ziel angekommen muss mir einen neuen Servo kaufen da ich einen gekillt habe.

ZUM CODE
Bitte nicht gleich Schimpfen wenn es nicht perfekt ist und auch sicher noch falsch aber komm schon in die richtige Richtung


const int taster=12;
const int servo1=9;
const int servo2=8;


int pwm;
int tasterVal=0;


int Stellung1=10;
int Stellung2=175;
int Stellung3=10;
int Stellung4=175;

void Servo_move(int servo1,int Stellung1)
{
pwm=(Stellung1*11)+500;
digitalWrite(servo1,HIGH);
delayMicroseconds(pwm);
digitalWrite(servo1,LOW);
delay(10);
}

void Servo_move2(int servo2,int Stellung1)
{
pwm=(Stellung1*11)+500;
digitalWrite(servo2,HIGH);
delayMicroseconds(pwm);
digitalWrite(servo2,LOW);
delay(10);
}

void setup()
{
pinMode(taster,INPUT);

digitalWrite(taster,HIGH);
pinMode(servo1,OUTPUT);



}

void loop()
{
tasterVal=digitalRead(taster);


if (tasterVal==1)
{
Servo_move(servo1,Stellung1);
if (servo1==Stellung1){
Servo_move2(servo2,Stellung1);
}




}
else
{
Servo_move(servo1,Stellung2);
if (servo1 == Stellung2){
Servo_move2(servo2,Stellung2);
}
}
}



Bin gerne offen für Verbesserungen momentan geht leider nur ein Servo solange ich den taster halte was ich ja nicht möchte

ist aber mal ein AnfangBig Grin
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
06.12.2013, 10:31
Beitrag #6
RE: Anfänger hat Probleme
Moin gaga...,

Zitat:Bitte nicht gleich Schimpfen wenn es nicht perfekt ist
Ich sag mal so: Wir sind hier nicht bei Microcontroller.net!
Dort haben einige Forenmitglieder einen Ton...naja, ich würd die nicht mal über die Türschwelle lassen.

Dein Code habe ich mal aufgeräumt.
Die move-Funktionen machen ja beide das gleiche. Daher nur noch eine move-Funktion.
Code:
const int taster = 12;
const int servo1 = 9;
const int servo2 = 8;

int pwm;
int tasterVal = 0;

int Stellung1 = 10;
int Stellung2 = 175;

void Servo_move(int servo, int Stellung)
{
  pwm = (Stellung * 11) + 500;
  digitalWrite(servo, HIGH);
  delayMicroseconds(pwm);
  digitalWrite(servo, LOW);
  delay(10);
}

void setup()
{
  pinMode(taster, INPUT);

  digitalWrite(taster, HIGH);
  pinMode(servo1, OUTPUT);
}

void loop()
{
  tasterVal = digitalRead(taster);
  if (tasterVal == 1)
  {
    Servo_move(servo1, Stellung1);
    if (servo1 == Stellung1)
    {
      Servo_move(servo2, Stellung1);
    }
  }
  else
  {
    Servo_move(servo1, Stellung2);
    if (servo1 == Stellung2)
    {
      Servo_move(servo2, Stellung2);
    }
  }
}
Wenn ich das richtig sehe macht der Code zur Zeit den 1. Teil der Beschreibung:
Servo1 von Stellung1 nach Stellung2, dann Servo2 von Stellung1 nach Stellung2.
Ich weiß jetzt nicht ob man über z.B.
Code:
if (servo1 == Stellung1)
die Position des Servos abfragen kann (habe ich keinen Schimmer von). Wenn das geht dann einfach am Ende des Sketches die umgekehrte Reihenfolge abarbeiten. Ist nicht elegant, sollte aber funktionieren.

Grüße Ricardo

Nüchtern betrachtet...ist besoffen besser Big Grin
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
06.12.2013, 12:14
Beitrag #7
RE: Anfänger hat Probleme
Danke
das es nicht Elegant ist mir Bewusst ist ja auch einer der ersten Versuche.
Ich werde das mal testen hab jetzt einen 2ten Funktionierenden Servo.
solte eine abfrage nicht funktionieren muss ich mit Endschaltern arbeiten ist zwar auch nicht schön aber an ein ziel kann ich so auch kommen
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
06.12.2013, 19:28
Beitrag #8
RE: Anfänger hat Probleme
So bin wieder ein etwas weiter hab also ich hab schon mal hin bekommen das wenn ich den Taster drücke fährt mal ein Servo auf passende Position dam der zweite mit dem Rückstellen ist noch nicht so aber kommt zeit kommt Rat.

zum code


#include <Servo.h>


Servo steckerServo;
Servo klappenServo;

int tasterPin=12;
int tasterWert=0;
int vorherTasterWert=0;
int zaehler=0;

int gradsteckerZu=175;
int gradsteckerAuf=0;

int klappeZu=0;
int klappeAuf=175;

int servoSpeed=10;

boolean klappeOffen = false;
boolean steckerOffen= false;
int i;


void setup()

{
steckerServo.attach(9);
klappenServo.attach(8);


steckerServo.write(gradsteckerZu);
klappenServo.write(klappeZu);

pinMode(tasterPin,INPUT);
digitalWrite(tasterPin,HIGH);

}

void loop()
{
tasterWert=digitalRead(tasterPin);
if (vorherTasterWert!=tasterWert)
{
if(tasterWert== LOW);{
zaehler++;
}
}
vorherTasterWert=tasterWert;

if(zaehler%2==0)
{
boolean completed = setServoAngle(steckerServo, gradsteckerAuf);
if(completed)
{
klappenServo.write(klappeAuf);
}
}}



boolean setServoAngle(Servo s, int endAngle)
{
boolean completed = false;
int startAngle = s.read();

if (startAngle<=endAngle, i++)
{{
s.write(i);
delay(servoSpeed);
}
completed = true;
}

else if (startAngle > endAngle) {

for (int i=startAngle; i>=endAngle; i--)
{
s.write(i);
delay(servoSpeed);
}
completed =true;
}
return completed;
}
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Anfänger sucht Rat MKnet83 27 4.895 28.01.2016 17:13
Letzter Beitrag: MKnet83
  Anfänger baut CNC Fräse und braucht Hilfe danieljan 6 1.954 13.01.2016 22:48
Letzter Beitrag: danieljan
  Anfänger mit großem Bau Projekt (Useless Box 3.0) Wambo 7 4.162 02.10.2015 16:36
Letzter Beitrag: Klaus(i)
  Ardunio Anfänger mit vielen Fragen zu einem Design Projekt (mit Bildern) farbexot 0 1.545 01.08.2015 13:03
Letzter Beitrag: farbexot
  Anfänger: Garten Beleuchtung + Steuerung CoreXY 13 4.503 14.07.2015 13:34
Letzter Beitrag: Hilgi
  Anfänger Fahrzeug MeRo113 6 2.784 22.04.2015 17:45
Letzter Beitrag: MeRo113
Question Heizölstand messen - Probleme dave1204 11 4.476 07.01.2015 09:02
Letzter Beitrag: Thorsten Pferdekämper
Shocked Anfänger braucht Hilfe!!!!! Jensus 0 1.716 15.11.2014 17:02
Letzter Beitrag: Jensus
  Altimeter - lernwilliger Anfänger braucht Hilfe Rado 5 3.341 24.06.2014 20:28
Letzter Beitrag: Tropaion
Sad C# - Ard. Leonardo - SerialWrite USB Probleme hansjürgen1964 6 2.014 07.06.2014 11:08
Letzter Beitrag: hansjürgen1964

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste