Go Down

Topic: Bürstenmotor mit ESC über Arduino steuern (Read 777 times) previous topic - next topic

dony

#30
Jan 22, 2018, 03:40 pm Last Edit: Jan 22, 2018, 04:37 pm by dony
Hallo,

In Deinem Code steht
Code: [Select]
int state; // stores incoming character from other device
Du verwendest allerdings Buchstaben (zB.: V).
Du musst das in
Code: [Select]
char state; // stores incoming character from other deviceändern.

int = Zahlen, char = BuchstabenUndZahlen
Ich bin allerdings der Meinung das 'int' zu lassen und die Buchstaben durch Zahlen zu ersetzen.

Was das Rückwärtsfahren angeht, fällt mir leider nichts mehr ein.

lg dony
Nachtrag: Ich hab gesehen das Du den HC-05 mit 9600 bps ansprichst. Hast Du den HC-05 konfiguriert? Ich sag das nur, weil ich nicht weiß ob die Bluetooth Verbindung bei Dir funktioniert und das könnte ein Grund sein. Die Voreingestellte Geschwindigkeit ist meistens: 38400 bps.
Newsticker:
Die Änderung meines Abschied Grußes ist Teil meiner Corporate Identity/Design Anpassung.

DollyBird

Hi,

das mit char und int hatte ich nicht bedacht, das muss ich dann noch in der App ändern.

Die Bluetoothverbindung funktioniert, da das Lenken über die App nach links, rechts und zur Mitte problemlos funktioniert. Als erstes hatte ich die LED auf dem Arduino ein- und ausgeschaltet und zu sehen ob die Bluetoothübertragung funktioniert.
Meinst du 9600 sind zu wenig für das HC-05? In verschiedenen Beispielen, in denen eine LED via Bluetooth ein- und ausgeschaltet wurde, wurde auch 9600 verwendet.

Tommy56

Hallo,

In Deinem Code steht
Code: [Select]
int state; // stores incoming character from other device
Du verwendest allerdings Buchstaben (zB.: V).
Du musst das in
Code: [Select]
char state; // stores incoming character from other device
ändern.

int = Zahlen, char = BuchstabenUndZahlen

Ich glaube, ganz so einfach, wie Du das darstellst, ist es nicht.
Die Methode read() von softserial gibt einen int zurück (Serial.read() übrigens auch).
Code: [Select]

int SoftwareSerial::read()


Gruß Tommy
"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)

dony

#33
Jan 22, 2018, 06:11 pm Last Edit: Jan 22, 2018, 06:29 pm by dony
Ich glaube, ganz so einfach, wie Du das darstellst, ist es nicht.
Das wusste ich nicht. Danke. Ich hatte nur ein Bauchgefühl  :o , deshalb die Bemerkung von mir, Zahlen zu nehmen.
Ich habe eigentlich erst durch das Arduino angefangen mich mit C/C++ zu beschäftigen. Früher hab ich viel in php und MySQL 'programmiert' aber C/C++ ist da nochmal was anderes, bin am lernen  ;)

edit: @DollyBird: Wenn alles funktioniert, lass es ruhig so. Das mit der Geschwindigkeit macht keinen Unterschied. IMHO
lg dony
Newsticker:
Die Änderung meines Abschied Grußes ist Teil meiner Corporate Identity/Design Anpassung.

Tommy56

Es ist meiner Meinung nach besser, sich zu vergewissern, bevor man einen Rat postet. Sonst setzt man einen Anfänger mit "Bauchgefühl" aufs falsche Pferd.

char ist übrigens auch eine Zahl von -128 bis +127. Das sind eigentlich Grundlagen.

Du brauchst programmieren bei php/MySQL nicht in Anführungszeichen setzen. Es ist nicht die Sprache, die Blödsinn programmiert, sonders das Problem vorm Monitor ;)

Man kann in jeder Sprache Sch... programmieren. Bei manchen Sprachen wird es für Einsteiger nur etwas erleichtert. Was meinst Du was man mit wilden Pointern für Unsinn anstellen kann.

Gruß Tommy
"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)

ElEspanol

Man sollte die Programmteile unabhängig voneinander implementieren (EVA -> Eingabe - Verarbeitung - Ausgabe)
Die App sollte also in der Lage sein, "Steuerbefehle" an den Arduino zu senden. Dieser empfängt selbige (Eingabe) und prüft sie auf Plausibilität. Am besten Datenpakete, z.B. alle 20ms.
Verarbeitung: Parsen der Datenpakete und Umrechnung auf "Servowerte" und "Motorwerte". Timeout einbauen für Notaus, wenn von der App länger als x ms nix mehr kommt.
Ausgabe: Schreiben der "Servowerte" und "Motorwerte" mittels der Servo Lib auf die passenden Ausgänge.

Mittels Potis kann beispielsweise die App simuliert wurden. Mittels serieller Ausgabe kann die App kontrolliert werden, etc.
Modular aufgebaut ist das debuggen wesentlich einfacher

dony

#36
Jan 22, 2018, 06:55 pm Last Edit: Jan 22, 2018, 07:26 pm by dony
Es ist meiner Meinung nach besser, sich zu vergewissern, bevor man einen Rat postet....
Da hast Du natürlich Recht!
Ich habe allerdings im Sketch gesehen das der TO ein 'int stat;' verwendet und dann ein 'if(stat == 'L')' und in dem Punkt war ich mir zu 100% sicher das, dass so nicht funktioniert.  ;)

Aber die Variablentypen zu lernen ist bei mir schon überfällig.  :o

lg dony
Newsticker:
Die Änderung meines Abschied Grußes ist Teil meiner Corporate Identity/Design Anpassung.

ElEspanol

#37
Jan 22, 2018, 07:11 pm Last Edit: Jan 22, 2018, 07:30 pm by ElEspanol
int stat;

stat='L';

if(stat == 'L') { mach was; }

geht doch.
*duck und wech*

dony

Ok, wieder was gelernt. Wie ich bereits sagte, Variablentypen lernen steht bei mir ganz oben.

Danke!
lg dony
Newsticker:
Die Änderung meines Abschied Grußes ist Teil meiner Corporate Identity/Design Anpassung.

Tommy56

int stat;

stat='L';

if(stat == 'L') { mach was; }

geht doch.
*duck und wech*
Klar, der Vergleich wird als int auf beiden Seiten ausgeführt.
Warum sollte das nicht gehen.

Gruß Tommy
"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)

ElEspanol

war auf post #36 bezogen. Obwohl ich mir sicher bin, dass das vom TE nicht so geplant war

dony

#41
Jan 22, 2018, 07:58 pm Last Edit: Jan 22, 2018, 08:00 pm by dony
Ich dachte: int = integer = ganze Zahl. (und bilde mir stark ein, das irgendwo gelesen zu haben, wahrscheinlich verwechsel ich das gerade mit MySQL) Wie auch immer... noch viel lernen, ich muss. ;)

lg dony
Newsticker:
Die Änderung meines Abschied Grußes ist Teil meiner Corporate Identity/Design Anpassung.

Tommy56

Dann tu das ;)

Intern sind es alles nur Bits.

Gruß Tommy
"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)

DollyBird

Ich kann bestätigen, dass es so geht wie ich es gepostet hab.

Um noch mal auf mein eigentliches Problem zurück zu kommen: Hat jemand eine Idee wieso das Rückwärtsfahren nicht funktioniert? Es ist definitv eingeschaltet, ich hab mich zweimal verbessert. Liegt es vielleicht an der Servo lib?

Go Up