Hallo habe den Roboter von AATIS nachgebaut. Bis jetzt ging alles super.
der Roboter steuert Schrittmotoren super. Nun wolte ich aber DC Motoren ansteuern und wenn ich die anschließe dann wechseln die schnell von einer Richtigung zur anderen hin und her. Wenn ich den Microcontroller runter mache und ein High Signal an den Eingang des L293D anlege dann dreht der Motor normal in eine Richtung so wie ich das eigendlich möchte.

Da hab ich mir gedacht das liegt ja dan wohl an dem Programm.
So da ich kein Plan davon habe wie und was ich da in dem Programm ändern muss, wolte ich fragen ob mir jemand da weiter helfen kann.

Möchte gerne die Demo 2 so das ich DC Motoren ansteuen kann + Geschwindigkeit ändern. Vorwärts und Rückwärts.

Demo 2

Code:
/*
	Titel:		Linienverfolgungsprogramm
	Funktion:	Roboter startet bei kurzem Druck auf Hindernissensoren
				und versucht, einer stark reflektierenden Linie auf
				dem Boden zu folgen. Beim Start muss sich der Sensor
				auf dieser Linie befinden; der Bereich außerhalb der
				Linie darf nur sehr wenig reflektieren.
	Autor:		Gunther May, DL3ABQ
	Datum:		01/2004
	Prozessor:	AT90S8535/ATMega8535
	Lizenz:		GNU Public License (gpl.txt)
*/

#include <io.h>
#include "..\lib\mydefs.h"
#include "..\lib\stepper.h"
#include "..\lib\sensor.h"

#define myspeed 40 //Verzögerung zwischen den Schritten

int main(void)
{
  unsigned char gndval;

  sens_initwall();
  sens_initgnd();

  while (sens_getwall()==0);

  stepper_on();

  while(1)                                    //Endlosschleife
  {
    gndval=sens_getgnd();
    
    switch(gndval)
    {
      case 0:                                 //ganz auf der Linie
      {
        stepper_go(FORWARD,1,myspeed);        //einen Schritt vorwärts
		sens_setLED(0,0);
		sens_setLED(1,0);
        break;
      }
      case 1:                                 //links von der Linie weg
      {
        stepper_go(RIGHT,1,myspeed);           //einen Schritt vorwärts
		sens_setLED(0,1);
		sens_setLED(1,0);
        break;
      }

      case 2:                                 //rechts von der Linie weg
      {
        stepper_go(LEFT,1,myspeed);          //einen Schritt vorwärts
		sens_setLED(0,0);
		sens_setLED(1,1);
        break;
      }
      case 3:                                 //ganz von der Linie weg
      {
        //Fehler! Roboter befindet sich außerhalb des Linienbereiches
        stepper_go(BACK,1,myspeed);
		sens_setLED(0,1);
		sens_setLED(1,1);
        break;
      }

    }
  }

  return 0;
}


hier die Unterprogramme
Code:
/*
	Titel:		Schrittmotor-Routinen für AATiS-Roboter
	Autor:		Gunther May, DL3ABQ
	Datum:		7/2002
	Prozessor:	AT90S8535/ATMega8535
	Lizenz:		GNU Public License (gpl.txt)
*/

#ifndef STEPPER_H
#define STEPPER_H

/*
** hier Motortyp auswählen
*/
#define BIPOLAR
//#define UNIPOLAR

/*
** Motorport auswählen
*/
#define STEPPER_PORT     PORTC
#define STEPPER_DDR      DDRC

#define FORWARD          0
#define BACK             1
#define RIGHT            2
#define LEFT             3

#define RIGHTANGLE       8

/* 
** Funktions-Prototypen 
*/

//Schrittmotoren in Haltepostition bringen
extern void stepper_on(void);

//Schrittmotoren komplett abschalten
extern void stepper_off(void);

//in Richtung <dir> <steps> Schritte mit einer Schrittverzögerung von <del> gehen 
extern void stepper_go(unsigned char dir, unsigned short steps, unsigned char del);



#endif //STEPPER_H


Code:
/*
	Titel:		Schrittmotor-Routinen für AATiS-Roboter
	Autor:		Gunther May, DL3ABQ
	Datum:		7/2002
	Prozessor:	AT90S8535/ATMega8535
	Lizenz:		GNU Public License (gpl.txt)
*/

#include <io.h>
#include "stepper.h"

/*
** Schrittmuster in Abhängigkeit vom Motortyp festlegen
*/

#ifdef BIPOLAR

	#define STEPPARTS 4

	const
		unsigned char step_pat[4][STEPPARTS] =	{{255-(5+5*16), 255-(9+6*16), 255-(10+10*16), 255-(6+9*16)},
												{255-(6+9*16), 255-(10+10*16), 255-(9+6*16), 255-(5+5*16)},
												{255-(5+5*16), 255-(6+6*16), 255-(10+10*16), 255-(9+9*16)},
												{255-(5+5*16), 255-(9+9*16), 255-(10+10*16), 255-(6+6*16)}};
#endif

#ifdef UNIPOLAR

	#define STEPPARTS 8

	const
		unsigned char step_pat[4][STEPPARTS] =	{{255-(1+(1+8)*16), 255-(1+2+8*16), 255-(2+(4+8)*16), 255-(2+4+4*16),
												255-(4+(2+4)*16), 255-(4+8+2*16), 255-(8+(1+2)*16), 255-(8+1+1*16)},
												{255-(1+8+1*16), 255-(8+(1+2)*16), 255-(4+8+2*16), 255-(4+(2+4)*16),
												255-(2+4+4*16), 255-(2+(4+8)*16), 255-(1+2+8*16), 255-(1+(8+1)*16)},
												{255-(1+8+(1+8)*16), 255-(8+8*16), 255-(4+8+(4+8)*16), 255-(4+4*16),
												255-(2+4+(2+4)*16), 255-(2+2*16), 255-(1+2+(1+2)*16), 255-(1+1*16)},
												{255-(1+1*16), 255-(1+2+(1+2)*16), 255-(2+2*16), 255-(2+4+(2+4)*16),
												255-(4+4*16), 255-(4+8+(4+8)*16), 255-(8+8*16), 255-(8+1+(8+1)*16)}};
#endif

/*
** Funktions-Deklarationen
*/

volatile unsigned char dummy;  //für Delay-Funktion

void stepdelay(unsigned char del)
{
  unsigned char i,k,l;

	dummy=17;
	for(i=0; i<del; i++) {
		for(k=0; k<2; k++) {
			for(l=0; l<255; l++) {
				dummy++;      
			}
		}
	}
}

void stepper_on()
{
	outp(0xFF, STEPPER_DDR);       /* all port bits as output */
	outp(0x11, STEPPER_PORT);
}/*stepper_on*/

void stepper_off()
{
	outp(0xFF, STEPPER_DDR);       /* all port bits as output */
	outp(0xFF, STEPPER_PORT);
}/*stepper_off*/


void stepper_go(unsigned char dir, unsigned short steps, unsigned char del)
{
	unsigned short i;
	unsigned char k;

	outp(0xFF, STEPPER_DDR);       /* all port bits as output */
	for(i=0; i<steps; i++) {
		for(k=0; k<STEPPARTS; k++) {
			outp(step_pat[dir][k], STEPPER_PORT);
			stepdelay(del);
		}
	}
}/*stepper_go*/
so des ist alles


könnt aber auch die ganzen demos auf der seite http://dl3abq.jufu.org/dl.html downloaden


please help me [-o<