Dein Code ist ein Paradebeispiel dafür, wie man es nicht machen soll.
_delay_ms(15); bedeutet beim Umschalten: Du machst es von Hand - der
Computer kann es viel schneller. Wenn überhaupt, schon die
Umschaltsequenz benötigt ein paar Taktzyklen, Verzögerungen im Bereich
von µs.
_delay_ms(100) wozu?
Wenn ich mal die Ausgabezeiten vernachlässige (µs), so kommst Du bei der
Sequenz auf (4*15ms + 100ms) also einen Schritt pro 160ms.
Wenn ich mal unterstelle (darüber hast Du Dich ja ausgeschwiegen), das
Du einen Motor mit 200 Schritten (oft verwendet) pro Umdrehung hast, so
kommst Du nach meiner Rechnung auf ca. 0,03 U/s. Nicht unbedingt ein
Wert, bei dem einem schwindelig wird.
Du siehst also: Kopieren geht nicht immer über Studieren!
Natürlich kommst Du durch das herabsetzen der Verzögerungen auf bessere
Werte, da Du aber offensichtlich nicht weist, was Du tust, wirst Du
damit nicht glücklich werden.
Erkundige Dich mal was Anfahrrampen Bremsrampen und ähnliches bedeuten.
Übrigens: Der L293D gehört ins Museum und ins Lötauge. Heizt aber prima.