Loading...
Pages: 1 [2]   Go Down
Author Topic: Problem mit Servo steuerung  (Read 792 times)
0 Members and 1 Guest are viewing this topic.
0
Offline Offline
Newbie
*
Karma: 0
Posts: 11
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ok,
ist doch noch ein entscheidender Fehler drin,
der hat mich gestern Abend noch einige Nerven gekostet.
Hinter der 'If' anweisung für den Servo fehlt ein {, und dementsprechend auch am Ende, dort muss nur ein } angefügt werden.
Hier der korrigierte Code:
Code:
//05/06/10
//sketch zur Ansteuerung eines Modellautos mit zwei Kanälen per Arduino
//sketch for controlling a model car with two channels with an arduino

#include <Servo.h>

Servo servo;  //Servo für die Lenkung /Servo for steering
Servo fahrt;  //Fahrtregler / speed controller
char inByte[12];
int i = 0;
char zeichen;
char fertig = 0;
int pos;

void setup(){
  servo.attach(4);  //Pin für den Servo / Pin for the servo
  servo.write(90);  
  fahrt.attach(3);  //Pin für den Fahrtregler / Pin for the speed controller
  fahrt.write(90);
  Serial.begin(9600);
  Serial.println("vehicle ready and waiting for instructions...");
}

void loop()
{
  // erst mal serielle Schnittstelle auswerten
  if(Serial.available()){
    zeichen = Serial.read();
    if((zeichen >='0') && (zeichen <='9') && (i < 10)) // numerisches Zeichen?
    {
      fertig = 0;
      inByte[i] = zeichen; // zeichen in den String uebernehmen
      inByte[i+1] = '\0'; // Ein String hat in C/C++ ein Nullbyte am Ende
      i++;
    }
    else fertig = 1; // ein nicht-numerisches Zeichen beendet die Zahl
}
  
  // Wenn von der Seriellen was kam kann das jetzt umgewandelt werden
  if((fertig == 1) && (i > 0)) // nur bei i>0 haben wir was gelesen!
  {
    pos = atoi(inByte);
    if(zeichen == 'A'){
    fahrt.write(pos);
    Serial.println("Fahrtregler auf ");
    Serial.println(pos);
  }
    if(zeichen == 'B'){
    servo.write(pos);
    Serial.println("Servo auf ");
    Serial.println(pos);
  }
    i = 0;
  }
  
  // hier kann evtl. weitere Verarbeitung erfolgen

}
Logged

0
Offline Offline
Jr. Member
**
Karma: 0
Posts: 90
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

na dass hört sich ja schon ganz Interessant an. Viel glück noch. Wie sendest du die Daten an dein Modell? Ich bin auch grade dabei sowas in der Art zuplanen mit einem Schiffmodell. Dazu habe ich mir 2 XBEEs besorgt. Sendest du die Daten über den Normalen sender der Fernbedienung?


philipp
Logged

0
Offline Offline
Newbie
*
Karma: 0
Posts: 11
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Vielen Dank!
Man könnte die Daten über den normalen Fernbedienungssender schicken, dann müsste man die Fernbedienung mit einem PPm Signal speisen, welches der Arduino aus den Seriellen daten generiert.
Doch das war nicht mein ziel, ich wollte die Fahrzeugelektronik direkt mit dem Arduino ansteuern, nicht über den ursprünglichen Empfänger.
Daher gehen die Daten momentan noch über USB an das Modell.
Bei der nächsten Pollin-Bestellung werde ich für ein paar euro noch jeweils einen Sender und Empfänger für serielle Dateb kaufen, die senden zwischen 400 und 900 MHz und kosten nur ca. 3 euro.
XBee's wären die ideallösung, sind mir aber arg teuer.
Endziel wird es wohl sein, einen WLAN-Router von ebay mit einer opensource firmware zu bespielen und dann da irgendwie ein Webcam-Stream vom fahrzeug einspeisen und eine Serielle verbindung zum Arduino herstellen.
Das wäre das genialste überhaupt, dann könnte man das fahrzeug über den nintendo DS, Ipod Touch, PC, Wii, PS3, Internet usw. steuern smiley-grin
Aber das geht nur, wenn ich gute Lösungen für den Router im netz finde. Aber man darf ja träumen^^

Für deine Lösung mit den XBee's:
ich denke ich hab da eine nette Spielerei für dich:


Das Programm gibt einen seriellen Datenstream aus, der zusammen mit dem Arduino programm aus meinem Letzten Post dazu genutz werden kann, ein beliebiges RC fahrzeug mit (bisher) 2 Kanälen vom PC aus mit einem Joystick zu steuern.
Ich werde das Programm wohl ab und an weiterentwickeln, es ist bis jetzt nicht sonderlich komplex. Solltest du Interesse daran haben, schicke ich es dir gerne per mail oder ICQ, das zip Archiv ist 190kb groß, ein Installer ist enthalten. Ich werde es auch wohl noch auf einige Kanäle erweitern und evtl. ein Arduino programm schreiben bzw. modifizieren, so dass es möglich ist, ein Signal in die Schüler/Lehrer Buchse an einer Fernbedienung einzuspeisen und so das Modell unberührt zu lassen. Das Thema interessiert mich sehr, ich hoffe ich komme in der nächsten zeit dazu, es weiter zu verfolgen.
lg, Philipp
Logged

0
Offline Offline
Jr. Member
**
Karma: 0
Posts: 90
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

mit welcher Sprache haste das Programm geschrieben? Ich habe mir 2 XBEE Pros bestellt bei Projet, da kosten die nur 24 Euro pro stück und nicht 40-50 Euro. Warum weiß ich nicht. Ich habe auchmal ein Programm mit VC# 2008 geschrieben mit dem ich einen Servo an nem Arduino über USB steuern kann.

Philipp
Logged

0
Offline Offline
Newbie
*
Karma: 0
Posts: 11
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ist in Visual Basic 2008 geschrieben,
was Desktopumgebungen angeht bin ich immer noch ein Visual Basic Symphatisant^^ Seit meinem 10ten Lebensjahr mit Visual basic 6.0 dabei, daher nehm ich es immer noch gerne. Quellcode kannste von mir aus haben, falls du dich mit Visual Basic arrangieren willst.
Die Programmierumgebung gibts ja kostenlos in der Express Version direkt von microsoft.
Logged

0
Offline Offline
Newbie
*
Karma: 0
Posts: 2
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hey thinkblue könntest du mal deine ICQ Nummer mir geben, habe da nähmlich noch ein paar Fragen bezüglich meines Projekts mit dem RC Car.
Danke.
Logged

Pages: 1 [2]   Go Up
Print
 
Jump to: