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
Wegbegrenzung für Schrittmotor
11.01.2019, 15:33
Beitrag #41
RE: Wegbegrenzung für Schrittmotor
Zwischen Spannungseingang und Signalausgang ist ein 10kOhm Widerstand.
Wo fehlen die Klammern? Sind doch eigentlich alle da.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
11.01.2019, 15:39
Beitrag #42
RE: Wegbegrenzung für Schrittmotor
Ich denke,daß es so muß:
if((duration1>1700)&&(Status1 == HIGH))
{digitalWrite(Ausgang1,HIGH);}

if((duration1>1700)&&(Status1 == HIGH));
habe ich noch nirgendwo gesehen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
11.01.2019, 16:58
Beitrag #43
RE: Wegbegrenzung für Schrittmotor
Ah, ok. Werde ich nachher mal ausprobieren. Wobei der Skatch weitesgehend funktioniert, wenn ich das ganze Gedöns mit den Endlagenschalter herausnehme.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
11.01.2019, 23:53
Beitrag #44
RE: Wegbegrenzung für Schrittmotor
Ich hab das mit den geschweiften Klammern mal ausprobiert, und.. funktioniert noch weniger.
Also hab ich weiter probiert und schließlich bin ich bei folgendem, so weit funktionierenden, Sketch gelandet. Allerdings habe ich erstmal nur zwei Hallsensoren angeschlossen/eingebunden, mir fehlten die Ein-/Ausgänge.
Code:
/***      4 Kanal      ***
*** RC Lichtsteuerung ***
***   by Mr.Medium    ***
***  edit by Scouter  */
int Eingang1 = 2; //Empfängerkanal 1
int Eingang2 = 3; //Empfängerkanal 2
int Eingang3 = 4; //Empfängerkanal 3
int Eingang4 = 5;  //Empfängerkanal 4
int Ausgang1 = 6;  //Relais 1
int Ausgang2 = 7;  //Relais 2
int Ausgang3 = 8;  //Relais 3
int Ausgang4 = 9;  //Relais 4
int Ausgang5 = A3; //Relais 5
int Ausgang6 = A0; //Relais 6
int Ausgang7 = A1; //Relais 7
int Ausgang8 = A2; //Relais 8
int Eingang5 = 10;  //Hallsensor1
int Eingang6 = 11;  //Hallsensor2
int Status1;   //Hallsensor1 Status
int Status2;   //Hallsensor2 Status
unsigned long duration1; //Pulslänge 1
unsigned long duration2; //Pulslänge 2
unsigned long duration3; //Pulslänge 3
unsigned long duration4; //Pulslänge 4
void setup(){
pinMode(Eingang1,INPUT);
pinMode(Eingang2,INPUT);
pinMode(Eingang3,INPUT);
pinMode(Eingang4,INPUT);
pinMode(Eingang5,INPUT);
pinMode(Eingang6,INPUT);
pinMode(Ausgang1,OUTPUT);
pinMode(Ausgang2,OUTPUT);
pinMode(Ausgang3,OUTPUT);
pinMode(Ausgang4,OUTPUT);
pinMode(Ausgang5,OUTPUT);
pinMode(Ausgang6,OUTPUT);
pinMode(Ausgang7,OUTPUT);
pinMode(A0,OUTPUT);
pinMode(A1,OUTPUT);
pinMode(A2,OUTPUT);
pinMode(A3,OUTPUT);
}
void loop(){
    Ueberwachen_Eingang1();
}
void Ueberwachen_Eingang1()
{
  duration1 = pulseIn(Eingang1,HIGH);
  Status1 = digitalRead(Eingang5);
  if(duration1>1700)
  digitalWrite(Ausgang1,HIGH);
  if((duration1<1700)&&(duration1>1200)||(Status1 == LOW))
  digitalWrite(Ausgang1,LOW);
  if(duration1<1300)
  digitalWrite(Ausgang2,HIGH);
  if((duration1>1200)&&(duration1<1700))
  digitalWrite(Ausgang2,LOW);
    Ueberwachen_Eingang2();
  }
void Ueberwachen_Eingang2()
{
  duration2 = pulseIn(Eingang2,HIGH);
  Status2 = digitalRead(Eingang6);
  if(duration2>1700)
  digitalWrite(Ausgang3,HIGH);  
  if((duration2<1700)&&(duration1>1200)||(Status2 == LOW))
  digitalWrite(Ausgang3,LOW);
  if(duration2<1300)
  digitalWrite(Ausgang4,HIGH);
  if((duration2>1200)&&(duration1<1700))
  digitalWrite(Ausgang4,LOW);
  Ueberwachen_Eingang3();
}
void Ueberwachen_Eingang3()
{
  duration3 = pulseIn(Eingang3,HIGH);
  if(duration3>1800)
  digitalWrite(Ausgang5,HIGH);  
  if((duration3<1700)&&(duration3>1200))
  digitalWrite(Ausgang5,LOW);
  if(duration3<1200)
  digitalWrite(Ausgang6,HIGH);
  if((duration3>1200)&&(duration3<1700))
  digitalWrite(Ausgang6,LOW);
  Ueberwachen_Eingang4();
}
void Ueberwachen_Eingang4()
{
  duration4 = pulseIn(Eingang4,HIGH);
  if(duration4>1800)
  digitalWrite(Ausgang7,HIGH);  
  if((duration4<1700)&&(duration4>1200))
  digitalWrite(Ausgang7,LOW);
  if(duration4<1200)
  digitalWrite(Ausgang8,HIGH);
  if((duration4>1200)&&(duration4<1700))
  digitalWrite(Ausgang8,LOW);
}


Vielleicht könnte ein Kenner nochmal drüber schauen, ob man da das Eine oder Andere verbessern kann.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
03.02.2019, 00:55 (Dieser Beitrag wurde zuletzt bearbeitet: 03.02.2019 01:17 von Scouter.)
Beitrag #45
RE: Wegbegrenzung für Schrittmotor
So, nachdem Boards und Stepper eingetroffen sind und ich damit etwas experimentiert habe, bin ich zu dem Entschluss gekommen, dass diese kleinen Stepper für mich ungeeignet sind, da nicht genug Drehmoment. Gleiche Problematik, anderes Antriebskonzept=> DC-Getriebemotoren.
Auch damit hab ich mit dem Motorshield etwas experimentiert und bin von der Anfahr- und Bremsrampe, die ich in den Beispielen gefunden habe, fasziniert.
Ich hab mir u.a. aus den Beispielen und anderen Sketchen einiges zusammengewürfelt, nur bekomme ich für die letzte Programmzeile die Fehlermeldung, dass "i" nicht deklariert ist. Warum tritt der Fehler aber nicht in den andere "for"-Schleifen auf? Sind doch alle die Gleichen?

Code:
#include <Wire.h>
#include <Adafruit_MotorShield.h>

Adafruit_MotorShield AFMS = Adafruit_MotorShield();

// Select which 'port' M1, M2, M3 or M4. In this case, M1
Adafruit_DCMotor *AB_Drehen = AFMS.getMotor(1);
Adafruit_DCMotor *AB_Heben = AFMS.getMotor(2);
Adafruit_DCMotor *CD_Drehen = AFMS.getMotor(3);
Adafruit_DCMotor *CD_Heben = AFMS.getMotor(4);

int Eingang1 = 12; //Empfängerkanal 1
int Eingang2 = 11; //Empfängerkanal 2
int Eingang3 = 10; //Empfängerkanal 3
int Eingang4 = 9; //Empfängerkanal 4
unsigned long duration1; //Pulslänge 1
unsigned long duration2; //Pulslänge 2
unsigned long duration3; //Pulslänge 3
unsigned long duration4; //Pulslänge 4
void setup(){
pinMode(Eingang1,INPUT);
pinMode(Eingang2,INPUT);
pinMode(Eingang3,INPUT);
pinMode(Eingang4,INPUT);
AFMS.begin();  // create with the default frequency 1.6KHz
  //AFMS.begin(1000);  // OR with a different frequency, say 1KHz
  
  // Set the speed to start, from 0 (off) to 255 (max speed)
  AB_Drehen->setSpeed(255);
  AB_Drehen->run(FORWARD);
  // turn on motor
  AB_Drehen->run(RELEASE);

  AB_Heben->setSpeed(255);
  AB_Heben->run(FORWARD);
  // turn on motor
  AB_Heben->run(RELEASE);

  CD_Drehen->setSpeed(255);
  CD_Drehen->run(FORWARD);
  // turn on motor
  CD_Drehen->run(RELEASE);

  CD_Heben->setSpeed(255);
  CD_Heben->run(FORWARD);
  // turn on motor
  CD_Heben->run(RELEASE);
}
void loop()
{
uint8_t i;  

Ueberwachen_Eingang1();
}
void Ueberwachen_Eingang1()
{
duration1 = pulseIn(Eingang1,HIGH);
if(duration1>1700)
AB_Drehen->run(FORWARD);
  for (i=0; i<255; i++) {
    AB_Drehen->setSpeed(i);  
    delay(8);}
if((duration1<1600)&&(duration1>1300))
for (i=255; i!=0; i--) {
    AB_Drehen->setSpeed(i);  
    delay(8);}
if(duration1<1300)
AB_Drehen->run(BACKWARD);
  for (i=0; i<255; i++) {
    myMotor->setSpeed(i);  
    delay(8);}
if((duration1<1600)&&(duration1>1300))
for (i=255; i!=0; i--) {
    AB_Drehen->setSpeed(i);  
    delay(8);}
Ueberwachen_Eingang2();
}
void Ueberwachen_Eingang2()
{
duration2 = pulseIn(Eingang2,HIGH);
if(duration2>1700)
AB_Heben->run(FORWARD);
  for (i=0; i<255; i++) {
    myMotor->setSpeed(i);  
    delay(8);}
if((duration2<1600)&&(duration2>1300))
for (i=255; i!=0; i--) {
    AB_Heben->setSpeed(i);  
    delay(8);}
if(duration2<1300)
AB_Heben->run(BACKWARD);
  for (i=0; i<255; i++) {
    AB_Heben->setSpeed(i);  
    delay(8);}
if((duration2<1600)&&(duration2>1300))
for (i=255; i!=0; i--) {
    AB_Heben->setSpeed(i);  
    delay(8);}
Ueberwachen_Eingang3();
}
void Ueberwachen_Eingang3()
{
duration3 = pulseIn(Eingang3,HIGH);
if(duration3>1700)
CD_Drehen->run(FORWARD);
  for (i=0; i<255; i++) {
    CD_Drehen->setSpeed(i);  
    delay(8);}
if((duration3<1600)&&(duration2>1300))
for (i=255; i!=0; i--) {
    CD_Drehen->setSpeed(i);  
    delay(8);}
if(duration3<1300)
CD_Drehen->run(BACKWARD);
  for (i=0; i<255; i++) {
    CD_Drehen->setSpeed(i);  
    delay(8);}
if((duration3<1600)&&(duration2>1300))
for (i=255; i!=0; i--) {
    CD_Drehen->setSpeed(i);  
    delay(8);}
Ueberwachen_Eingang4();
}
void Ueberwachen_Eingang4()
{
duration4 = pulseIn(Eingang4,HIGH);
if(duration4>1700)
CD_Heben->run(FORWARD);
  for (i=0; i<255; i++) {
    CD_Heben->setSpeed(i);  
    delay(8);}
if((duration4<1600)&&(duration4>1300))
for (i=255; i!=0; i--) {
    CD_Heben->setSpeed(i);  
    delay(8);}
if(duration4<1300)
CD_Heben->run(BACKWARD);
  for (i=0; i<255; i++) {
    CD_Heben->setSpeed(i);  
    delay(8);}
if((duration4<1600)&&(duration4>1300))
for (i=255; i!=0; i--) {
    CD_Heben->setSpeed(i);  
    delay(8);}
}

EDIT: Hab den Fehler selber gefunden, nu muss ich nur noch die Hall-Sensoren und die Potis einbinden.
Für Ideen, was das Poti betrifft, bin ich offen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
03.02.2019, 14:22
Beitrag #46
RE: Wegbegrenzung für Schrittmotor
Funktioniert natürlich nicht, so wie ich das gerne hätte. Inzwischen hab ich mir vermutlich so viele Fehler in den Sketch eingebaut, dass das kein Wunder mehr ist.
Nochmal zur Aufgabenstellung:
Über eine RC-Fernsteuerung möchte ich vier Getriebemotore ansteuern, jeweils link- und rechtslauf. Die PPM-Signale lese ich über pulsIn aus. Nun möchte ich die Motore aber nicht nur "einfach" laufen lassen, sondern über eine Anfahr- bzw Bremsrampe. Also ich möchte den Motor nach links laufen lassen, solange ich den entsprechenden Schalter der Fernsteuerung gedrückt halte. Lasse ich den Schalter los, soll er über eine Bremsrampe zum Stillstand kommen. Erschwerend kommt (jedenfalls für mich) hinzu, dass die Motore eine Positionsbestimmung über ein Poti bekommen sollen und darüber auch die Endlagen deviniert werden sollen.
Mein Sketch sieht im Moment so aus, allerdings fehlt noch das Positionsblabla mit den Potis.

Code:
#include <Wire.h>
#include <Adafruit_MotorShield.h>

Adafruit_MotorShield AFMS = Adafruit_MotorShield();

// Select which 'port' M1, M2, M3 or M4. In this case, M1
Adafruit_DCMotor *AB_Drehen = AFMS.getMotor(4);
Adafruit_DCMotor *AB_Heben = AFMS.getMotor(3);
Adafruit_DCMotor *CD_Drehen = AFMS.getMotor(2);
Adafruit_DCMotor *CD_Heben = AFMS.getMotor(1);

int Eingang1 = 12; //Empfängerkanal 1
int Eingang2 = 11; //Empfängerkanal 2
int Eingang3 = 10; //Empfängerkanal 3
int Eingang4 = 9; //Empfängerkanal 4
int Eingang5 = 8; //Hallsensor 1
int Eingang6 = 7; //Hallsensor 2
int Eingang7 = A0; //Poti 1
int val_1 = 0;
int Eingang8 = A1; //Poti 2
int val_2 = 0;
unsigned long duration1; //Pulslänge 1
unsigned long duration2; //Pulslänge 2
unsigned long duration3; //Pulslänge 3
unsigned long duration4; //Pulslänge 4
void setup(){
Serial.begin(9600);          //  setup serial  
pinMode(Eingang1,INPUT);
pinMode(Eingang2,INPUT);
pinMode(Eingang3,INPUT);
pinMode(Eingang4,INPUT);
pinMode(Eingang5,INPUT);
pinMode(Eingang6,INPUT);
pinMode(Eingang7,INPUT);
pinMode(Eingang8,INPUT);
AFMS.begin();  // create with the default frequency 1.6KHz
  //AFMS.begin(1000);  // OR with a different frequency, say 1KHz
  
  // Set the speed to start, from 0 (off) to 255 (max speed)
  AB_Drehen->setSpeed(255);
  AB_Drehen->run(FORWARD);
  // turn on motor
  AB_Drehen->run(RELEASE);

  AB_Heben->setSpeed(255);
  AB_Heben->run(FORWARD);
  // turn on motor
  AB_Heben->run(RELEASE);

  CD_Drehen->setSpeed(255);
  CD_Drehen->run(FORWARD);
  // turn on motor
  CD_Drehen->run(RELEASE);

  CD_Heben->setSpeed(255);
  CD_Heben->run(FORWARD);
  // turn on motor
  CD_Heben->run(RELEASE);
}
void loop()
{
Ueberwachen_Eingang1();
}
void Ueberwachen_Eingang1()
{
  uint8_t (i);
duration1 = pulseIn(Eingang1,HIGH);
val_1 = analogRead(Eingang7);
delay(100);// debug value
if((duration1>1700)&&(val_1>=0));
AB_Drehen->run(FORWARD);
  {for (i=0; i<255; i++)
  delay(8);
  AB_Drehen->setSpeed(i);  
    }
if((duration1<1600)&&(duration1>1300))
if((val_1=0)&&(val_1=1023));
{for (i=255; i!=0; i--)
    AB_Drehen->setSpeed(i);  
    delay(8);}
if((duration1<1300)&&(val_1<=1023))
AB_Drehen->run(BACKWARD);
  for (i=0; i<255; i++)
  delay(8);
  {
    AB_Drehen->setSpeed(i);  
    }
if((duration1<1600)&&(duration1>1300))
for (i=255; i!=0; i--) {
    AB_Drehen->setSpeed(i);  
    delay(8);}
Ueberwachen_Eingang2();
}
void Ueberwachen_Eingang2()
{
  uint8_t (i);
duration2 = pulseIn(Eingang2,HIGH);
if(duration2>1700)
AB_Heben->run(FORWARD);
  for (i=0; i<255; i++) {
    AB_Heben->setSpeed(i);  
    delay(8);}
if((duration2<1600)&&(duration2>1300))
for (i=255; i!=0; i--) {
    AB_Heben->setSpeed(i);  
    delay(8);}
if(duration2<1300)
AB_Heben->run(BACKWARD);
  for (i=0; i<255; i++) {
    AB_Heben->setSpeed(i);  
    delay(8);}
if((duration2<1600)&&(duration2>1300))
for (i=255; i!=0; i--) {
    AB_Heben->setSpeed(i);  
    delay(8);}
Ueberwachen_Eingang3();
}
void Ueberwachen_Eingang3()
{
  uint8_t (i);
duration3 = pulseIn(Eingang3,HIGH);
if(duration3>1700)
CD_Drehen->run(FORWARD);
  for (i=0; i<255; i++) {
    CD_Drehen->setSpeed(i);  
    delay(8);}
if((duration3<1600)&&(duration2>1300))
for (i=255; i!=0; i--) {
    CD_Drehen->setSpeed(i);  
    delay(8);}
if(duration3<1300)
CD_Drehen->run(BACKWARD);
  for (i=0; i<255; i++) {
    CD_Drehen->setSpeed(i);  
    delay(8);}
if((duration3<1600)&&(duration2>1300))
for (i=255; i!=0; i--) {
    CD_Drehen->setSpeed(i);  
    delay(8);}
Ueberwachen_Eingang4();
}
void Ueberwachen_Eingang4()
{
  uint8_t (i);
duration4 = pulseIn(Eingang4,HIGH);
if(duration4>1700)
CD_Heben->run(FORWARD);
  for (i=0; i<255; i++) {
    CD_Heben->setSpeed(i);  
    delay(8);}
if((duration4<1600)&&(duration4>1300))
for (i=255; i!=0; i--) {
    CD_Heben->setSpeed(i);  
    delay(8);}
if(duration4<1300)
CD_Heben->run(BACKWARD);
  for (i=0; i<255; i++) {
    CD_Heben->setSpeed(i);  
    delay(8);}
if((duration4<1600)&&(duration4>1300))
  for (i=255; i!=0; i--) {
    CD_Heben->setSpeed(i);  
   delay(8);}
}

Kann mir da jemand weiterhelfen?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
03.02.2019, 15:39
Beitrag #47
RE: Wegbegrenzung für Schrittmotor
Hallo,
der Sketch ist etwas schlecht zu überblicken weil Du wohl händisch eingerückt hast.
Lass das die IDE für Dich tun, gebe dazu ein Strg+T ein.
Schlecht ist auch dass du in loop() nur "Ueberwachen_Eingang1();" aufrufst.
Aus "Ueberwachen_Eingang1();" dann "Ueberwachen_Eingang2();" u.s.w.

Das geht eleganter mit:
Code:
void loop() {
  Ueberwachen_Eingang1();
  Ueberwachen_Eingang2();
  Ueberwachen_Eingang3();
  Ueberwachen_Eingang4();
}
Dann natürlich den Aufruf von "Ueberwachen_Eingang2();" aus "Ueberwachen_Eingang1();" u.s.w. heraus nehmen.

Gruß Arne
Mit zunehmender Anzahl qualifizierter Informationen bei einer Fragestellung, erhöht sich zwangsläufig die Gefahr auf eine zielführende Antwort.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
03.02.2019, 16:55
Beitrag #48
RE: Wegbegrenzung für Schrittmotor
Danke schonmal für den Tipp, dann sieht es jetzt so aus.

Code:
#include <Wire.h>
#include <Adafruit_MotorShield.h>

Adafruit_MotorShield AFMS = Adafruit_MotorShield();

// Select which 'port' M1, M2, M3 or M4. In this case, M1
Adafruit_DCMotor *AB_Drehen = AFMS.getMotor(4);
Adafruit_DCMotor *AB_Heben = AFMS.getMotor(3);
Adafruit_DCMotor *CD_Drehen = AFMS.getMotor(2);
Adafruit_DCMotor *CD_Heben = AFMS.getMotor(1);

int Eingang1 = 12; //Empfängerkanal 1
int Eingang2 = 11; //Empfängerkanal 2
int Eingang3 = 10; //Empfängerkanal 3
int Eingang4 = 9; //Empfängerkanal 4
int Eingang5 = 8; //Hallsensor 1
int Eingang6 = 7; //Hallsensor 2
int Eingang7 = A0; //Poti 1
int val_1 = 0;
int Eingang8 = A1; //Poti 2
int val_2 = 0;
unsigned long duration1; //Pulslänge 1
unsigned long duration2; //Pulslänge 2
unsigned long duration3; //Pulslänge 3
unsigned long duration4; //Pulslänge 4
void setup() {
  Serial.begin(9600);          //  setup serial
  pinMode(Eingang1, INPUT);
  pinMode(Eingang2, INPUT);
  pinMode(Eingang3, INPUT);
  pinMode(Eingang4, INPUT);
  pinMode(Eingang5, INPUT);
  pinMode(Eingang6, INPUT);
  pinMode(Eingang7, INPUT);
  pinMode(Eingang8, INPUT);
  AFMS.begin();  // create with the default frequency 1.6KHz
  //AFMS.begin(1000);  // OR with a different frequency, say 1KHz

  // Set the speed to start, from 0 (off) to 255 (max speed)
  AB_Drehen->setSpeed(255);
  AB_Drehen->run(FORWARD);
  // turn on motor
  AB_Drehen->run(RELEASE);

  AB_Heben->setSpeed(255);
  AB_Heben->run(FORWARD);
  // turn on motor
  AB_Heben->run(RELEASE);

  CD_Drehen->setSpeed(255);
  CD_Drehen->run(FORWARD);
  // turn on motor
  CD_Drehen->run(RELEASE);

  CD_Heben->setSpeed(255);
  CD_Heben->run(FORWARD);
  // turn on motor
  CD_Heben->run(RELEASE);
}
void loop()
{
  Ueberwachen_Eingang1();
  Ueberwachen_Eingang2();
  Ueberwachen_Eingang3();
  Ueberwachen_Eingang4();
}
void Ueberwachen_Eingang1()
{
  uint8_t (i);
  duration1 = pulseIn(Eingang1, HIGH);
  val_1 = analogRead(Eingang7);
  delay(100);// debug value
  if ((duration1 > 1700) && (val_1 >= 0));
  AB_Drehen->run(FORWARD);
  { for (i = 0; i < 255; i++)
      AB_Drehen->setSpeed(i);
    //delay(8);
  }
  if ((duration1 < 1600) && (duration1 > 1300))
    if ((val_1 = 0) && (val_1 = 1023));
  { for (i = 255; i != 0; i--)
      AB_Drehen->setSpeed(i);
    //delay(8);
  }
  if ((duration1 < 1300) && (val_1 <= 1023))
    AB_Drehen->run(BACKWARD);
  { for (i = 0; i < 255; i++)
      //delay(8);
    AB_Drehen->setSpeed(i);
  }
  if ((duration1 < 1600) && (duration1 > 1300))
    for (i = 255; i != 0; i--) {
      AB_Drehen->setSpeed(i);
      //delay(8);
    }
}
void Ueberwachen_Eingang2()
{
  uint8_t (i);
  duration2 = pulseIn(Eingang2, HIGH);
  if (duration2 > 1700)
    AB_Heben->run(FORWARD);
  for (i = 0; i < 255; i++) {
    AB_Heben->setSpeed(i);
    delay(8);
  }
  if ((duration2 < 1600) && (duration2 > 1300))
    for (i = 255; i != 0; i--) {
      AB_Heben->setSpeed(i);
      delay(8);
    }
  if (duration2 < 1300)
    AB_Heben->run(BACKWARD);
  for (i = 0; i < 255; i++) {
    AB_Heben->setSpeed(i);
    delay(8);
  }
  if ((duration2 < 1600) && (duration2 > 1300))
    for (i = 255; i != 0; i--) {
      AB_Heben->setSpeed(i);
      delay(8);
    }
}
void Ueberwachen_Eingang3()
{
  uint8_t (i);
  duration3 = pulseIn(Eingang3, HIGH);
  if (duration3 > 1700)
    CD_Drehen->run(FORWARD);
  for (i = 0; i < 255; i++) {
    CD_Drehen->setSpeed(i);
    delay(8);
  }
  if ((duration3 < 1600) && (duration2 > 1300))
    for (i = 255; i != 0; i--) {
      CD_Drehen->setSpeed(i);
      delay(8);
    }
  if (duration3 < 1300)
    CD_Drehen->run(BACKWARD);
  for (i = 0; i < 255; i++) {
    CD_Drehen->setSpeed(i);
    delay(8);
  }
  if ((duration3 < 1600) && (duration2 > 1300))
    for (i = 255; i != 0; i--) {
      CD_Drehen->setSpeed(i);
      delay(8);
    }
}
void Ueberwachen_Eingang4()
{
  uint8_t (i);
  duration4 = pulseIn(Eingang4, HIGH);
  if (duration4 > 1700)
    CD_Heben->run(FORWARD);
  for (i = 0; i < 255; i++) {
    CD_Heben->setSpeed(i);
    delay(8);
  }
  if ((duration4 < 1600) && (duration4 > 1300))
    for (i = 255; i != 0; i--) {
      CD_Heben->setSpeed(i);
      delay(8);
    }
  if (duration4 < 1300)
    CD_Heben->run(BACKWARD);
  for (i = 0; i < 255; i++) {
    CD_Heben->setSpeed(i);
    delay(8);
  }
  if ((duration4 < 1600) && (duration4 > 1300))
    for (i = 255; i != 0; i--) {
      CD_Heben->setSpeed(i);
      delay(8);
    }
}

Nur mit den Anfahr- und Bremsrampen funzt das immer noch nicht. Ich könnte Wahnsinnig werden.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Projekt Portionierer mit Schrittmotor, Bluetooth hilfe Flieger 3 826 09.08.2018 13:02
Letzter Beitrag: Hilgi
  Endschalter für Schrittmotor clemens5555 10 2.635 18.04.2018 14:37
Letzter Beitrag: Tommy56
  Schrittmotor mit Puls/Richtung Steuern Günni 6 2.050 19.01.2018 10:30
Letzter Beitrag: Tommy56
  Schrittmotor Geschwindigkeit mit Wägezelle + HX711 Modul steuern Schrittmotor 10 3.596 30.08.2017 23:45
Letzter Beitrag: hotsystems
  Schrittmotor mit l298n Sequenz huber5093 10 2.949 26.04.2017 15:06
Letzter Beitrag: huber5093
  Haltestrom Schrittmotor reduzieren TimF 3 2.719 24.10.2016 12:33
Letzter Beitrag: Binatone
  Schrittmotor Clemens55555 9 3.952 25.08.2016 10:15
Letzter Beitrag: Binatone
  Schrittmotor soll auf Tasterdruck bis zum Endschalter fahren Wurstbemme 11 7.410 08.01.2016 11:56
Letzter Beitrag: hotsystems
  Piezosummer und Schrittmotor Gilbert Neon 0 1.246 20.12.2015 15:40
Letzter Beitrag: Gilbert Neon
  Problem mit 2 Potis und Schrittmotor Sven90 1 1.812 24.09.2015 10:19
Letzter Beitrag: Bitklopfer

Gehe zu:


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