PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : PWM im Interrupt



Ferdinand
02.03.2018, 08:17
Hallo gibt es die Möglichkeit ein PWM Signal zu generieren um eine Drehzahl für nen Motor zu stellen, das Signal soll aber im Interrupt erzeugt werden so dass das Hauptprogramm wenig beeinflusst wird wie wir das gemacht, früher hat man da ISR benutzt.

Ceos
02.03.2018, 08:34
nunja, da du keinen Controller nennst auf dem das laufen soll hat man erstmal wenig Spielraum für Empfehlung

aber Grundsätzlich würde ich das mit einem dafür vorgesehenen PWM Timer benutzen, dann braucht dein Hauptprogramm noch nicht mal für den Interrupt unterbrochen werden

Zusätzlich wäre ein Hinweis mit welchen Tools du den Controller programmierst noch wichtig, wenn du z.B. Atmel Produkte einsetzt und das Atmel-Framework bin ich z.B. gleich raus, ich finde das Framework kastriert einen aufs übelste und ausgegoren ist es noch lange nicht geschweige denn Bugfrei

Siro
02.03.2018, 10:33
Hallo Ferninand,

natürlich kann man eine PWM auch mit einem Interrupt (Timerinterrupt) erzeugen,
das ist aber absolut nicht mehr zeitgemäss, es gibt kaum noch Controller die keine
eingebaute PWM haben und diese sollte man dann auch benutzen, weil die völlig autark (eigenständig) läuft
und dein Hauptprogramm nicht weiter belastet.
Manchmal ist aber das Wort PWM garnicht im Datenblatt zu finden.
Das ist zum Beispiel beim LPC1347 Controller der Fall.
Der hat natürlich auch die Möglichkeit PWMs zu erzeugen,
das findet man dann meist bei der Beschreibung der Timer. (Capture/Compare/Match/event counter....)

Aber Du wirst uns sicher noch den Controller verraten, welchen Prozessor/Controller Du am Wickel hast....

@Ceos: ich finde Bibliotheken, Frameworks teilweise auch "grausam" und benutze NIE welche.
So schwierig ist das nun auch nicht, mal ein paar Register zu initialisieren.
Für Einsteiger ist das aber oft sehr hilfreich und unumgänglich, bis dann Probleme auftauchen.....

HaWe
02.03.2018, 11:15
hallo Leute....!?

Wir befinden uns hier im Arduino-Forum!!

Und Arduino hat für pwm-Erzeugung die universell verfügbare Funktion
analogWrite()
die auf den verschiedensten cores und boards läuft, vom simplen AVR (Uno, Nano, Micro, Mega) bis hin zu 32-bit ARM + ESP! (Zero, M0, MKR1000, Due, Teensy, esp8266, esp32) !!

http://www.arduino-tutorial.de/analog-out/
http://www.arduino-tutorial.de/befehle/
https://www.arduino.cc/reference/en/language/functions/analog-io/analogwrite/

nur auf die Pins muss man achten, weil die Pin-Nummern für pwm-Pins von Board zu Board variieren können.
Daher ist durchaus die Frage wichtig, welches Arduino-Board denn tatsächlich verwendet wird.

i_make_it
02.03.2018, 12:15
Hier mal die PWM Pins für die folgenden 4 Boards:
Nano: 3; 5; 6; 9; 10; 11
Uno: 3; 5; 6; 9; 10; 11
Due: 2; 3; 4; 5; 6; 7; 8; 9; 10; 11; 12; 13
Mega 2560: 2; 3; 4; 5; 6; 7; 8; 9; 10; 11; 12; 13

Und in diesem Post:
https://www.roboternetz.de/community/threads/71617-Alles-PWM-oder-wie/page3?p=642754&viewfull=1#post642754
ein einfaches Demoprogramm, das mit analogWrite() immer maximal 2 von 4 PWM setzt.
Die Randbedingungen gibt es weiter vorne im Thread und eine Demo bei der im Hauptprogramm feste Werte gesetzt werden gibt es in Post 35 des Thread.

Eventuell ist das hilfreich.

HaWe
02.03.2018, 12:42
Und in diesem Post:
https://www.roboternetz.de/community/threads/71617-Alles-PWM-oder-wie/page3?p=642754&viewfull=1#post642754
ein einfaches Demoprogramm, das mit analogWrite() immer maximal 2 von 4 PWM setzt.
Die Randbedingungen gibt es weiter vorne im Thread und eine Demo bei der im Hauptprogramm feste Werte gesetzt werden gibt es in Post 35 des Thread.

Eventuell ist das hilfreich.

Bevor man so etwas einem Arduino-Anfänger als Anleitung gibt, der noch nicht einmal von analogWrite gehört hat, müsste zumindest vorher geklärt werden, wie denn überhaupt der Motor mit welchen H-Brücken-Treibern genau angesteuert werden soll.
Arduino-typisch für Standard-Setups (L293D u.a.) ist dein Code nämlich nicht, und schon gar nicht (didaktisch) "einfach", und auch für mich als Arduino- und RaspberryPi-User noch nicht einmal unbedingt intuitiv verständlich.

Warten wir also vlt erst einmal ab, ob der OP das mit analogWrite verstanden hat, und dann mal sehen....

i_make_it
02.03.2018, 12:54
und auch für mich als Arduino- und RaspberryPi-User noch nicht einmal unbedingt intuitiv verständlich.

Da sollte man jetzt nicht einfach pauschal von sich auf andere schließen.
Das hängt ja davon ab wie intuitiv das Verständniss von C++ und dem Zielsystem ist.
Das ist so wie bei Muttersprache und Femdsprache.
Was in der Muttersprache intuitiv geht, geht in einer Fremdsprache noch lange nicht, wenn man sie nicht entsprechend beherscht.
Bei jedem gibt es irgenwas was er nicht versteht, was für andere aber ganz einfach ist.


Die Randbedingungen gibt es weiter vorne im Thread

In Post 26 z.B. auch die beiden Links:
https://www.arduino.cc/en/Tutorial/PWM

https://www.arduino.cc/reference/en/...o/analogwrite/ (https://www.arduino.cc/reference/en/language/functions/analog-io/analogwrite/)
mit denen man PWM und analogWrite() verstehen kann.



int IN1 = 9;
int speed = 200;

void setup()
{
pinMode(IN1, OUTPUT);
}

void loop()
{
PWMDrive(speed); //einmal pro Durchlauf der Hauptschleife kann man die Geschwindigkeit ändern, wenn man will und den Wert vonspeed in der Hauptschleife verändert

//mach was ganz anderes
}

void PWMDrive(int speed){
analogWrite(IN1, speed);
}



Das wäre jetzt ein minimalistisches Beispiel

HaWe
02.03.2018, 13:05
int IN1 = 9;
int speed = 200;

void setup()
{
pinMode(IN1, OUTPUT);
}

void loop()
{
PWMDrive(speed); //einmal pro Durchlauf der Hauptschleife kann man die Geschwindigkeit ändern, wenn man will und den Wert vonspeed in der Hauptschleife verändert

//mach was ganz anderes
}

void PWMDrive(int speed){
analogWrite(IN1, speed);
}



Das wäre jetzt ein minimalistisches Beispiel

Über Arduino- und C/C++-Code kannst und brauchst du mir sicher nichts erzählen, aber das "minimalistische Beispiel" wird so auch nicht unbedingt funktionieren, denn mit analogWrite(pin, pwm) alleine kann man ja ohne weitere Hardware keinen Motor betreiben.
Aber bevor ich hier mein (bewährtes) Beispiel poste oder verlinke - wie gesagt:
Warten wir erst einmal ab, ob der OP das mit analogWrite verstanden hat, ob es ihm was nutzt, und welche Leistungsstufe oder H-Brücken mit welcher Logik er ggf verwendet, und dann mal sehen....

Ferdinand
02.03.2018, 14:00
Danke für die rege Diskussion und Anregungen, ich verwende das UNO was im übrigen unerheblich ist da ich eigentlich nur wissen will od die Funktion analogWrite(); schon in einem Interrupt arbeitet oder od ma das ganze in eine Interrupt Funktion auslagern kann damit das Hauptprogramm nicht so belastet wird auch wen ich es nicht wirklich brauche ich finde es einfach sauberer, auch die Treiber Stufe ist erstmal unerheblich ich verwende eine L298N. Warum wollt ihr wissen was für ein Treiber ich benutze Danke für die Hilfe.

HaWe
02.03.2018, 14:15
Danke für die rege Diskussion und Anregungen, ich verwende das UNO was im übrigen unerheblich ist da ich eigentlich nur wissen will od die Funktion analogWrite(); schon in einem Interrupt arbeitet oder od ma das ganze in eine Interrupt Funktion auslagern kann damit das Hauptprogramm nicht so belastet wird auch wen ich es nicht wirklich brauche ich finde es einfach sauberer, auch die Treiber Stufe ist erstmal unerheblich ich verwende eine L298N. Warum wollt ihr wissen was für ein Treiber ich benutze Danke für die Hilfe.

es kann sein, dass die pwm-Signatur für versch. Treiberstufen bei Richtungsumkehr evtl. invertiert werden muss (war bei mir aber bisher nie ein Thema), beim L298N ist das aber jedenfalls nicht der Fall, da geht alles ganz easy, logisch und identisch für beide Laufrichtungen, und auch automatisch ohne weitere Interrupts.

Wenn du dafür einen Arduino-Steuercode brauchst (3-pin-Logik für Richtung und Geschwindigkeit): sag Bescheid! 8)

i_make_it
02.03.2018, 15:05
Über Arduino- und C/C++-Code kannst und brauchst du mir sicher nichts erzählen, aber das "minimalistische Beispiel" wird so auch nicht unbedingt funktionieren, denn mit analogWrite(pin, pwm) alleine kann man ja ohne weitere Hardware keinen Motor betreiben.
Aber bevor ich hier mein (bewährtes) Beispiel poste oder verlinke - wie gesagt:
Warten wir erst einmal ab, ob der OP das mit analogWrite verstanden hat, ob es ihm was nutzt, und welche Leistungsstufe oder H-Brücken mit welcher Logik er ggf verwendet, und dann mal sehen....

Gibt es da nicht jemand bestimtmen, der sonst immer gerne auf "Keep it Simple" bzw. sogar KISS rumreitet, wenn ein anderer mehr beantwortet als gefragt wurde?
Das Argument sieht grade so aus als ob das je nach Tagesform wahlfrei wäre.

Aber dem TO ist ja mit dem einfachen Beispiel auf die einfache Frage erstmal geholfen worden.

HaWe
02.03.2018, 15:08
Gibt es da nicht jemand bestimtmen, der sonst immer gerne auf "Keep it Simple" bzw. sogar KISS rumreitet, wenn ein anderer mehr beantwortet als gefragt wurde?
Das Argument sieht grade so aus als ob das je nach Tagesform wahlfrei wäre.

Aber dem TO ist ja mit dem einfachen Beispiel auf die einfache Frage erstmal geholfen worden.

ich sehe nicht, wo ich vorschnell mehr "beantwortet" hätte, als gefragt war, im Gegensatz zu dir.... :rolleyes:

Ferdinand
02.03.2018, 17:21
Hi und Danke für deine Erklärung da ich mich neu in Arduino einarbeite bin ich für jede Hilfe dankbar und habe großes Interesse zu deinem Sketch.

- - - Aktualisiert - - -

Das ist jetzt mal eine Version, allerdings läuft sie noch nicht bin wohl noch ein wenig eingerostet. Kann mir einer helfen die Fehler aus zu bügeln


// 14-19
//Sensoren
const int V_LINKS = 14;
const int V_MITTE = 15;
const int V_RECHTS = 16;
const int H_LINKS = 17;;
const int H_MITTE = 18;;
const int H_RECHTS = 19;
//Motoren
const int LINKS = 6;
const int RECHTS = 5;
const int VOR = 4;
const int ZURUECK = 2;
const int PWM = 3;

int pwm 127;


void setup() {
// put your setup code here, to run once:

pinMode(V_LINKS, INPUT);
pinMode(V_MITTE, INPUT);
pinMode(V_RECHTS, INPUT);
pinMode(H_LINKS, INPUT);
pinMode(H_MITTE, INPUT);
pinMode(H_RECHTS, INPUT);

pinMode(LINKS, OUTPUT);
pinMode(RECHTS, OUTPUT);
pinMode(VOR, OUTPUT);
pinMode(ZURUECK, OUTPUT);
pinMode(PWM, OUTPUT);

}

void loop() {

analogWrite(PWM, pwm);




switch( digitalRead() )
{

case digitalRead(V_MITTE) : digitalWrite(ZURUECK, HIGH);

break;

case digitalRead(V_LINKS) : digitalWrite(ZURUECK, HIGH) | digitalWrite(RECHTS, HIGH) ;


break;

case digitalRead(V_RECHTS) : digitalWrite(ZURUECK, HIGH) | digitalWrite(LINKS, HIGH) ;


break;

case digitalRead(H_MITE) : digitalWrite(VOR, HIGH) ;


break;

case digitalRead(H_LINKS) : digitalWrite(VOR, HIGH) | digitalWrite(RECHTS, HIGH) ;



break;

case digitalRead(H_RECHTS) : digitalWrite(VOR, HIGH) | digitalWrite(LINKS, HIGH) ;


break;


default : digitalWrite(VOR, HIGH) | digitalWrite(ZURUECK, HIGH) ;

}


// put your main code here, to run repeatedly:


delay(30);


}


und hier noch mein altes Programm das, wunderbar getan hat




//Motoren
#define VOR 0b00110100
#define ZURUECK 0b00101100
#define LINKS 0b00100110
#define RECHTS 0b00100101
#define GERADE 0b00100111
#define BREACK 0b00111111
#define PWM_DRIVE 0b00100000
#define PWM_LENKUNG 0b00000100
//Sensoren
#define V_MITE 0b00111101
#define V_LINKS 0b00111011
#define V_RECHTS 0b00111110
#define H_MITE 0b00101111
#define H_LINKS 0b00011111
#define H_RECHTS 0b00110111
//LED ROT, GREUN
#define LED_ROT 0b10000000
#define LED_GRUEN 0b01000000
#define LED_AUS 0b00000000




#include <avr/io.h>
#include <avr/interrupt.h>
#include "Roboter.h"

/*
#define DURCHLEUFE 256

volatile unsigned int wert=0;

//Timer 0
ISR(TIMER0_OVF_vect)
{
wert++;
TCNT0 = 256 -DURCHLEUFE;
}
*/

int main(void)
{

/*TCNT0 = 256 -DURCHLEUFE;
TCCR0 = (1 << CS02)|(1 << CS00);
TIMSK = (1 << TOIE0);

sei();
*/
DDRB = 0xFF; //Ausgang, Motoren
DDRC = 0b11000000; //Eingang, Sensoren


while (1)
{


switch( PORTC )
{

case V_MITE : PORTB = ZURUECK ;

break;

case V_LINKS : PORTB = ZURUECK | RECHTS ;


break;

case V_RECHTS : PORTB = ZURUECK | LINKS ;


break;

case H_MITE : PORTB = VOR ;


break;

case H_LINKS : PORTB = VOR | RECHTS ;



break;

case H_RECHTS : PORTB = VOR | LINKS ;


break;


default : PORTB = BREACK ;
PORTB = LED_ROT ;

}

}

return 0;
}

HaWe
02.03.2018, 17:59
Hi und Danke für deine Erklärung da ich mich neu in Arduino einarbeite bin ich für jede Hilfe dankbar und habe großes Interesse zu deinem Sketch.

gerne!
aber erst eine Frage vorab, damit es auch der richtige Code ist:
wie ist die Ansteuerung deiner L298N H-Brücke: mit 2 (dir+pwm) oder mit 3 Pins (in1, in2, pwm) ?

Ferdinand
02.03.2018, 18:21
ok einen fehler habe ich jetzt gefunden

int pwm 127;
Warum auch immer ich das so schreiben muss
int pwm = 127;

- - - Aktualisiert - - -

mit 3 pin beim antrib bei der lenkung brauch ich kein pwm da ist es direckt auf 5v also 2 pin
3 pin vor zurück + pwm,
2 pin lenkung links rechts

i_make_it
02.03.2018, 18:24
Das ist ja nett.
In Deinem alten Code arbeitest Du mit Ports, und Bitmasken, die du je nach Bitmuster am Port der Sensoren veroderst, um die entsprechenden Ausgänge zu setzen.

Dann ist das soweit ich das bei den Sensoren gesehen habe eine inverse Logik.
Sprich der Sensor der 0 ist bestimmt die Motoren Aktion.

Im neuen Code erwartet Switch eine Variable, aber bekommt eine leere Funktion.
Im alten Code war das Bitmuster des Ports die Variable, die mit den definierten Bitmustern verglichen wurde.
Im neuen Code vergleichts Du also eine leere Funktion mit einer Funktion, die Dir den Zustand eines Bits zurück gibt.

Bei der Aktion das selbe, da setzt eiine Funktion ein Bit und das ganze wird verodert mit einer anderen Funktion die auch ein Bit setzt.

So kann das leider nicht funktionieren.
Da müsstest du auch in Arduino direkte Bitmanipulationen durchführen oder aber dich auf die funktionen einlassen.

Bin bei dem was ich mir aus dme Post kopiert habe verrutscht und bei den Sensoren Pins gelandet. Das unten ist Mist


Ich vermute mal das du zwei Motoren hast, die mit PWM,IN1,IN2 angesteuert werden.
Auf Verdacht sage ich mal:
L_PWM=14
L_IN1=15
L_IN2=16
R_PWM=17
R_IN1=18
R_IN2=19


Demnach hast Du für Vorwärts/Rückwärts IN1,IN2
und fürs Lenken PWM,IN1,IN2
???

Ferdinand
02.03.2018, 18:46
ok jetzt habe ich es mal so versucht



// 14-19
//Sensoren
const int V_LINKS = 14;
const int V_MITTE = 15;
const int V_RECHTS = 16;
const int H_LINKS = 17;;
const int H_MITTE = 18;;
const int H_RECHTS = 19;
//Motoren
const int LINKS = 6;
const int RECHTS = 5;
const int VOR = 4;
const int ZURUECK = 2;
const int PWM = 3;

int pwm = 127;


void setup() {
// put your setup code here, to run once:

pinMode(V_LINKS, INPUT);
pinMode(V_MITTE, INPUT);
pinMode(V_RECHTS, INPUT);
pinMode(H_LINKS, INPUT);
pinMode(H_MITTE, INPUT);
pinMode(H_RECHTS, INPUT);

pinMode(LINKS, OUTPUT);
pinMode(RECHTS, OUTPUT);
pinMode(VOR, OUTPUT);
pinMode(ZURUECK, OUTPUT);
pinMode(PWM, OUTPUT);

}

void loop() {

analogWrite(PWM, pwm);


if (V_MITTE == HIGH)
{
digitalWrite(ZURUECK, HIGH);
}
else if (V_LINKS == HIGH)
{
digitalWrite(ZURUECK, HIGH) | digitalWrite(RECHTS, HIGH);
}
else if (V_RECHTS == HIGH)
{
digitalWrite(ZURUECK, HIGH) | digitalWrite(LINKS, HIGH);
}
else if (H_MITE == HIGH)
{
digitalWrite(VOR, HIGH);
}

else if (H_LINKS == HIGH)
{
digitalWrite(VOR, HIGH) | digitalWrite(RECHTS, HIGH);
}
else if (H_RECHTS == HIGH)
{
digitalWrite(VOR, HIGH) | digitalWrite(LINKS, HIGH);
}

else
{
digitalWrite(VOR, HIGH) | digitalWrite(ZURUECK, HIGH) ;
}

delay(30);

}


das scheint auch nicht zu gehen

HaWe
02.03.2018, 18:48
mit 3 pin beim antrib bei der lenkung brauch ich kein pwm da ist es direckt auf 5v also 2 pin
3 pin vor zurück + pwm,
2 pin lenkung links rechts

du hast doch oben nach pwm gefragt...?
wenn du jetzt kein pwm brauchst, dann brauchst du auch kein analogWrite(), dann nützt dir auch mein L293/L298 Code nichts.

Ferdinand
02.03.2018, 21:12
für die lenkung brauch ich kein PWM aber für vor und zurück brauche ich PWM

- - - Aktualisiert - - -

So habe es jetzt ohne fehler danke für die hinweise auch dafür das meine sensoren ja invertirt sind habe ich ganz vergesse hir men code


// 14-19
//Sensoren
const int V_LINKS = 14;
const int V_MITTE = 15;
const int V_RECHTS = 16;
const int H_LINKS = 17;;
const int H_MITTE = 18;;
const int H_RECHTS = 19;
//Motoren
const int LINKS = 6;
const int RECHTS = 5;
const int VOR = 4;
const int ZURUECK = 2;
const int PWM = 3;

int pwm = 127;


void setup() {
// put your setup code here, to run once:

pinMode(V_LINKS, INPUT);
pinMode(V_MITTE, INPUT);
pinMode(V_RECHTS, INPUT);
pinMode(H_LINKS, INPUT);
pinMode(H_MITTE, INPUT);
pinMode(H_RECHTS, INPUT);

pinMode(LINKS, OUTPUT);
pinMode(RECHTS, OUTPUT);
pinMode(VOR, OUTPUT);
pinMode(ZURUECK, OUTPUT);
pinMode(PWM, OUTPUT);

}

void loop() {

analogWrite(PWM, pwm);


if (digitalRead(V_MITTE) == LOW)
{
digitalWrite(ZURUECK, HIGH);
}
else if (digitalRead(V_LINKS) == LOW)
{
digitalWrite(ZURUECK, HIGH);
digitalWrite(RECHTS, HIGH);
}
else if (digitalRead(V_RECHTS) == LOW)
{
digitalWrite(ZURUECK, HIGH);
digitalWrite(LINKS, HIGH);
}
else if (digitalRead(H_MITTE) == LOW)
{
digitalWrite(VOR, HIGH);
}

else if (digitalRead(H_LINKS) == LOW)
{
digitalWrite(VOR, HIGH);
digitalWrite(RECHTS, HIGH);
}
else if (digitalRead(H_RECHTS) == LOW)
{
digitalWrite(VOR, HIGH);
digitalWrite(LINKS, HIGH);
}

else
{
digitalWrite(VOR, HIGH);
digitalWrite(ZURUECK, HIGH);
}

delay(30);

}


jetzt muss ich nur noch alles zusammen stecken und testen

- - - Aktualisiert - - -

der volsteligkeitshalber hir noch mein vertiger code










// 14-19
//Sensoren
const int V_LINKS = 14;
const int V_MITTE = 15;
const int V_RECHTS = 16;
const int H_LINKS = 17;;
const int H_MITTE = 18;;
const int H_RECHTS = 19;
//Motoren
const int LINKS = 6;
const int RECHTS = 5;
const int VOR = 4;
const int ZURUECK = 2;
const int PWM = 3;

int pwm = 80;


void setup() {
// put your setup code here, to run once:

pinMode(V_LINKS, INPUT);
pinMode(V_MITTE, INPUT);
pinMode(V_RECHTS, INPUT);
pinMode(H_LINKS, INPUT);
pinMode(H_MITTE, INPUT);
pinMode(H_RECHTS, INPUT);

pinMode(LINKS, OUTPUT);
pinMode(RECHTS, OUTPUT);
pinMode(VOR, OUTPUT);
pinMode(ZURUECK, OUTPUT);
pinMode(PWM, OUTPUT);

}

void loop() {

analogWrite(PWM, pwm);


if (digitalRead(V_MITTE) == LOW)
{
digitalWrite(ZURUECK, HIGH);
digitalWrite(VOR, LOW);
digitalWrite(LINKS, HIGH);
digitalWrite(RECHTS, HIGH);
}
else if (digitalRead(V_LINKS) == LOW)
{
digitalWrite(ZURUECK, HIGH);
digitalWrite(VOR, LOW);
digitalWrite(RECHTS, HIGH);
digitalWrite(LINKS, LOW);
}
else if (digitalRead(V_RECHTS) == LOW)
{
digitalWrite(ZURUECK, HIGH);
digitalWrite(VOR, LOW);
digitalWrite(LINKS, HIGH);
digitalWrite(RECHTS, LOW);
}
else if (digitalRead(H_MITTE) == LOW)
{
digitalWrite(VOR, HIGH);
digitalWrite(ZURUECK, LOW);
digitalWrite(LINKS, HIGH);
digitalWrite(RECHTS, HIGH);
}

else if (digitalRead(H_LINKS) == LOW)
{
digitalWrite(VOR, HIGH);
digitalWrite(ZURUECK, LOW);
digitalWrite(RECHTS, HIGH);
digitalWrite(LINKS, LOW);
}
else if (digitalRead(H_RECHTS) == LOW)
{
digitalWrite(VOR, HIGH);
digitalWrite(ZURUECK, LOW);
digitalWrite(LINKS, HIGH);
digitalWrite(RECHTS, LOW);
}

else
{

digitalWrite(VOR, HIGH);
digitalWrite(ZURUECK, LOW);
digitalWrite(LINKS, HIGH);
digitalWrite(RECHTS, HIGH);
}

//delay(30);

}


leider tut der nicht so wie ich möchte trozdem danke fr eure hilfe

das mit dem PWM funktionirt super häte ich so nicht gedacht

i_make_it
02.03.2018, 21:51
Als erstes würde ich im Code überall pwm ersetzten, z.B. durch pwmm.
Und PWM ebenfalls, z.B. durch PWMM.

Wenn ich Deinen Code in meine Arduino IDE stecke mosert er mir die beiden sofort an.
Variablen werden normalerweise schwarz dargestellt, pwm wird braun und PWM blau dargestellt.
Das heist die IDE erkennt die also bei mir als Keywords.

HaWe
03.03.2018, 08:32
für die lenkung brauch ich kein PWM aber für vor und zurück brauche ich PWM
ok, dann ist die pwm-Sache ja gelöst, oder? Denn mein 3-pin L293/L298-Beispiel war ja nur der aller-einfachste Basis-Code nur fürs erste, grundlegende Verständnis.
http://www.mindstormsforum.de/viewtopic.php?f=78&t=8491&start=45#p68840