jup, ich habe dein code mal getestet an meinem roboter mit dem l293d.
der arduino und sanguino, kommen zeitlich(frequenzmässig) für dem pwm nicht zurecht mit dem l293d.
ich habe ihn mal laufen lassen am sanguino mit der pinbelegung wie ich ihn auch in bascom laufen habe(siehe mein code). nach ca 2x hin und zurück, fährt zurück nach ca 50ms und dann wieder ruckartig nach vorn , zurück..., dann geht es wieder 2x und dann spielt der timer wieder verrückt.
habe es auch mit dem arduino probiert, das gleiche verhalten.
weiterhin ist die frequenz zu niedrig von der pwm.
bis ca 110(geschwindigkeit) ist ein pfeifen des motors zu hören, was schädlich für den motor ist.
wiederum mit dem basom geht es von 0-255 ohne pfeifen des motors.
also vorsicht , wenn mit dem originalen code für die pwm ein motor angesteuert wird.
für leuctdioden schalten ist es einwandfrei aber nicht für die motoren.
es gibt für den arduino eine motoransteuerungsplatine, ob es eine preispolitik , das man den normalen l293d für die motorsteuerung nicht nutzen kann für die pwm ??? wäre dann eigentlich eine sauerei.
hier sollte man mal am code für die allgemeinheit arbeiten, das die pwm-frequent steuerbar ist.
sanguino(644p) :
/*
L293D zur Ansteuerung zweier Motoren
Pin 4, 5, 12, 13 an Masse
Pin 16 an Versorgungsspannung
Pin 3, 6 f r Motor A
Pin 11, 14 f r Motor B
*/
int enableA = 12; // Motor A, PWM-Pin - L293D, Pin 9
int enableB = 13; // Motor B, PWM-Pin - L293D, Pin 1
int out1A = 18; // Motor A, Steuerleitung 1 - L293D, Pin 15
int out2A = 19; // Motor A, Steuerleitung 2 - L293D, Pin 10
int out1B = 20; // Motor B, Steuerleitung 1 - L293D, Pin 7
int out2B = 21; // Motor B, Steuerleitung 2 - L293D, Pin 2
void setup() {
pinMode(enableA, OUTPUT);
pinMode(enableB, OUTPUT);
pinMode (out1A, OUTPUT);
pinMode (out2A, OUTPUT);
pinMode (out1B, OUTPUT);
pinMode (out2B, OUTPUT);
}
void loop() {
forwardA (130);
forwardB (130);
delay (1000);
forwardA (0);
forwardB (0);
delay (500);
backwardA (130);
backwardB (130);
delay (1000);
backwardA (0);
backwardB (0);
delay (500);
}
void forwardA (int vA) { // Motorgeschw. A
digitalWrite (out1A, HIGH);
digitalWrite (out2A, LOW);
analogWrite (enableA, vA);
}
void backwardA (int vA) { // Motorgeschw. A
digitalWrite (out1A, LOW);
digitalWrite (out2A, HIGH);
analogWrite (enableA, vA);
}
void forwardB (int vB) { // Motorgeschw. B
digitalWrite (out1B, HIGH);
digitalWrite (out2B, LOW);
analogWrite (enableB, vB);
}
void backwardB (int vB) { // Motorgeschw. B
digitalWrite (out1B, LOW);
digitalWrite (out2B, HIGH);
analogWrite (enableB, vB);
}
// ATMEL ATMEGA8 & 168 / ARDUINO
//
// +-/-+
// PC6 1| |28 PC5 (AI 5)
// (D 0) PD0 2| |27 PC4 (AI 4)
// (D 1) PD1 3| |26 PC3 (AI 3)
// (D 2) PD2 4| |25 PC2 (AI 2)
// PWM+ (D 3) PD3 5| |24 PC1 (AI 1)
// (D 4) PD4 6| |23 PC0 (AI 0)
// VCC 7| |22 GND
// GND 8| |21 AREF
// PB6 9| |20 AVCC
// PB7 10| |19 PB5 (D 13)
// PWM+ (D 5) PD5 11| |18 PB4 (D 12)
// PWM+ (D 6) PD6 12| |17 PB3 (D 11) PWM
// (D 7) PD7 13| |16 PB2 (D 10) PWM
// ( D 8) PB0 14| |15 PB1 (D 9) PWM
// +----+
// ATMEL ATMEGA644P / SANGUINO
//
// +---/---+
// INT0 (D 0) PB0 1| |40 PA0 (AI 0 / D31)
// INT1 (D 1) PB1 2| |39 PA1 (AI 1 / D30)
// INT2 (D 2) PB2 3| |38 PA2 (AI 2 / D29)
// PWM (D 3) PB3 4| |37 PA3 (AI 3 / D28)
// PWM (D 4) PB4 5| |36 PA4 (AI 4 / D27)
// MOSI (D 5) PB5 6| |35 PA5 (AI 5 / D26)
// MISO (D 6) PB6 7| |34 PA6 (AI 6 / D25)
// SCK (D 7) PB7 8| |33 PA7 (AI 7 / D24)
// RST 9| |32 AREF
// VCC 10| |31 GND
// GND 11| |30 AVCC
// XTAL2 12| |29 PC7 (D 23)
// XTAL1 13| |28 PC6 (D 22)
// RX0 (D 8) PD0 14| |27 PC5 (D 21) TDI
// TX0 (D 9) PD1 15| |26 PC4 (D 20) TDO
// RX1 (D 10) PD2 16| |25 PC3 (D 19) TMS
// TX1 (D 11) PD3 17| |24 PC2 (D 18) TCK
// PWM (D 12) PD4 18| |23 PC1 (D 17) SDA
// PWM (D 13) PD5 19| |22 PC0 (D 16) SCL
// PWM (D 14) PD6 20| |21 PD7 (D 15) PWM
// +--------+