RoboterCC - Robotic Code Compiler
Forum Robot Kits NIBObee Motoren nach Umdrehungen Steuern

Welcome

Nachrichten

Sie sind nicht eingeloggt.

Werbung

Banner

Letzte Themen

  • Keine Beiträge vorhanden

Site-Statistic

  • 7433 private projects
  • 378 public projects
  • 16180353 lines compiled
  • 58212 builds
NIBO @ facebook YouTube Twitter
Willkommen, Gast
Benutzername: Passwort: Angemeldet bleiben:
  • Seite:
  • 1
  • 2

THEMA: Motoren nach Umdrehungen Steuern

Motoren nach Umdrehungen Steuern 9 Jahre 6 Monate her #3041

  • Arcanix
  • Arcanixs Avatar
  • OFFLINE
  • Senior Boarder
  • Beiträge: 96
So wie ich das sehe ist der Hase beim "while" vergraben, diese Zeile müsste so lauten:

while (1){

den Rest kann ich leider nicht prüfen.
Grüße, Arcanix
Der Administrator hat öffentliche Schreibrechte deaktiviert.

Motoren nach Umdrehungen Steuern 9 Jahre 5 Monate her #3051

  • mgollner
  • mgollners Avatar
  • OFFLINE
  • Fresh Boarder
  • Beiträge: 4
Ich habe jetzt alle Änderungen vorgenommen:

#include <nibobee/iodefs.h>
#include <nibobee/motpwm.h>
#include <nibobee/delay.h>

int main() {
motpwm_init();

while (1){
motpwm_setLeft(250);
motpwm_setRight(250);
delay(1000);
motpwm_setLeft(0);
motpwm_setRight(0);
}
return 0;
}

Allerdings dreht sich nur das linke Rad, es hört auch nicht nach 1 Sekunde auf. Es läuft endlos.
Der Administrator hat öffentliche Schreibrechte deaktiviert.

Motoren nach Umdrehungen Steuern 9 Jahre 5 Monate her #3052

  • BirgerT
  • BirgerTs Avatar
  • OFFLINE
  • Gold Boarder
  • Beiträge: 325
Hast Du schon mal die Tutorials ausprobiert (oder gelesen)?
Augenscheinlich fehlt da ein "enable_interrupts();"

Probier halt das hier mal aus
www.roboter.cc/index.php?option=com_nicaiwci&view=project&projectid=46&Itemid=41

und wenn das nicht funktioniert - vielleicht kannste damit etwas anfangen
www.roboter.cc/index.php?option=com_kunena&view=topic&catid=12&id=2322&limitstart=6&Itemid=20#2701
Der Administrator hat öffentliche Schreibrechte deaktiviert.

Motoren nach Umdrehungen Steuern 9 Jahre 5 Monate her #3053

  • mgollner
  • mgollners Avatar
  • OFFLINE
  • Fresh Boarder
  • Beiträge: 4
Ich hab's geschafft!

Danke für eure Hilfe!!!




#include <nibobee/iodefs.h>
#include <nibobee/motpwm.h>
#include <nibobee/delay.h>

int main() {
motpwm_init();

while (1==1){
enable_interrupts();
motpwm_setLeft(500);
motpwm_setRight(500);
delay(1000);
motpwm_setLeft(0);
motpwm_setRight(0);
delay(1000);
}
return 0;
}

Dank dem enable_interrupts(); drehen sich nun beide Motoren.

Noch ein Fehler war, dass ich nach dem ausschalten der Motoren kein delay hatte, denn der Motor beginnt immer von vorne, und wenn er nach dem ausschalten nicht warten soll, bist er wieder einschaltet, ist es ja logisch, dass er immer dreht.

Ich bin dann darauf gekommen, dass ich auch break; schreiben könnte, dann wird der Vorgang nicht mehr wiederholt:



#include <nibobee/iodefs.h>
#include <nibobee/motpwm.h>
#include <nibobee/delay.h>

int main() {
motpwm_init();

while (1==1){
enable_interrupts();
motpwm_setLeft(500);
motpwm_setRight(500);
delay(1000);
motpwm_setLeft(0);
motpwm_setRight(0); break;
}
return 0;
}
Der Administrator hat öffentliche Schreibrechte deaktiviert.

Motoren nach Umdrehungen Steuern 9 Jahre 5 Monate her #3054

  • Arcanix
  • Arcanixs Avatar
  • OFFLINE
  • Senior Boarder
  • Beiträge: 96
Hallo mgollner,

ein kleiner Schönheitsfehler ist noch drin und ein kleines Verständnisproblem:

Verständnisproblem:
Eine while-Schleife ist dazu da dass der Code in der schleife (also zwischen den eckigen Klammern) immer wieder ausgeführt wird. Wenn du am Ende der while-Schleife gleich ein break, einfügst brauchst du diese schleife auch gar nicht :)

Schönheitsfehler:
enable_interrupts();
dieser Befehl muss nur 1x ausgeführt werden und hat in einer Schleife nichts zu suchen sonst wird er immer wieder ausgeführt. Stört jetzt zwar nicht jedoch verbraucht es Rechenzeit die unnötig ist.

Der Anfang deines Codes sollte also so aussehen:


#include <nibobee/iodefs.h>
#include <nibobee/motpwm.h>
#include <nibobee/delay.h>

int main() {
motpwm_init();
enable_interrupts();

// ab hier kannst du dann z.B. eine Schleife einbauen, so kannst du ihn z.B. 10x nach vorne fahren lassen:

int i;

for (i=0; i<10; i++) //i++ ist das gleiche wie i=i +1
{
motpwm_setLeft(500);
motpwm_setRight(500);
delay(1000);
motpwm_setLeft(0);
motpwm_setRight(0);
delay(1000);
}
return 0;
}

Grüße, Marco

Tipp: Schau hier mal rein http://www.c-howto.de/
Letzte Änderung: 9 Jahre 5 Monate her von Arcanix.
Der Administrator hat öffentliche Schreibrechte deaktiviert.
  • Seite:
  • 1
  • 2
Ladezeit der Seite: 0.052 Sekunden

Werbung