MultiWiiKopter-Konfigurationsprogramm für Arduino

Benutzeravatar
yacco
Beiträge: 4728
Registriert: 15.02.2009 19:27:59
Wohnort: Aßlar

#601 Re: MultiWiiKopter-Konfigurationsprogramm für Arduino

Beitrag von yacco »

Wenn wir schon mal dabei sind...

Update 2.8

Änderungen: minimal, ich hab den Code nur ein bisschen stromlinienförmiger gemacht, aus "1.7b" wurde "1.7", ausserdem gibt es eine Option STANDALONE, um das Programm als reinen Logger ohne LCD Ausgabe oder Tastatureingaben zu benutzen (ein bisschen quick & dirty, aber es sollte funktionieren).

Ansonsten sind mir auch bei längerem Praxiseinsatz keine größeren Bugs in der 2.7 aufgefallen. Ist also ein reines Prestige-Update zum Angeben auf dem Flugfeld ("oh, du hast schon die neue 2.8 auf dem LCD_Config... wow"). :mrgreen:
Dateianhänge
LCD_Config_280.zip
(82.21 KiB) 64-mal heruntergeladen
Ciao, Arnd
Benutzeravatar
JollyJoker
Beiträge: 139
Registriert: 31.01.2011 22:21:57
Wohnort: MS

#602 Re: MultiWiiKopter-Konfigurationsprogramm für Arduino

Beitrag von JollyJoker »

yacco hat geschrieben:Wenn wir schon mal dabei sind...

Update 2.8

Änderungen: minimal, ich hab den Code nur ein bisschen stromlinienförmiger gemacht, aus "1.7b" wurde "1.7", ausserdem gibt es eine Option STANDALONE, um das Programm als reinen Logger ohne LCD Ausgabe oder Tastatureingaben zu benutzen (ein bisschen quick & dirty, aber es sollte funktionieren).

Ansonsten sind mir auch bei längerem Praxiseinsatz keine größeren Bugs in der 2.7 aufgefallen. Ist also ein reines Prestige-Update zum Angeben auf dem Flugfeld ("oh, du hast schon die neue 2.8 auf dem LCD_Config... wow"). :mrgreen:
Jau, Danke Arnd,

läuft super, größtenteils in meinem Fall ;)

Leider habe ich immer noch das nervige Problem, daß meine "Enter" Taste nicht erkannt wird.
Anbei meine "Kommentare" im Sketch.
Wenn ich in den check_input Teil wechsle, wird mir der JS_SELECT_PIN als KEY auch mit Werten von -1019 auf 0014 bei gedrückt angezeigt, aber die Anzeige der erkannten Funktion zeigt R.
Hast Du da ne Idee, was ich richtig mache, daß alle anderen Falsch machen?
Wenn ich das define KEY_PIN auskommentiere, dann bekomme ich ne Fehlermedung, das KEY_PIN nicht definiert ist.

Code: Alles auswählen

// use Hardwarekeys connected to Ports
// [footprint: ~120 bytes]
//#define HWKEYS

// Input pins of the hardbuttons: (used when HWKEYS is defined)
#define HW_RIGHT    10
#define HW_UP        9
#define HW_DOWN     11
#define HW_LEFT      8
#define HW_SELECT    6

// Analog Input pin for cascading buttons
#define KEY_PIN      0

// ----------

// Use an analog Joystick (e.g., Sparkfun Thumb Joystick) instead of Keys (experimental!)
// Joystick and Buttons can be used simultaneously. The center position of the Joystick
// is calibrated during startup, so leave the stick in central position when switching on.
// [footprint: ~200 bytes]
#define JOYSTICK

// uncomment the following line to enable the joystick select key 
#define JS_SELECT_PIN A0
#define JS_HOR_PIN    A1
#define JS_VERT_PIN   A2

// Configuration of the Axes
#define JS_HOR_SIGN  -1 
#define JS_VERT_SIGN +1
#define JS_DEADBAND  48

// inverts the switch level of the SELECT key (default: high)
#define JS_INV_SELECT_KEY

// ----------

// includes a hidden state to check the joystick input. 
// activated by pressing the RIGHT key in state 0 for more than a second.
// [footprint: ~174 bytes]
#define CHECK_INPUT

// ----------
Gruß Peer
kleiner Exkurs zum PID tunig des MultiWiicopter: PID und zur GUI: GUI
Remember, it´s the man, not the machine;-)
Benutzeravatar
yacco
Beiträge: 4728
Registriert: 15.02.2009 19:27:59
Wohnort: Aßlar

#603 Re: MultiWiiKopter-Konfigurationsprogramm für Arduino

Beitrag von yacco »

Moin Peer,

wie du schon herausgefunden hast, wird KEY_PIN unbedingt benötigt, wenn keine HW_KEYS verwendet werden. Tasten-Eingaben haben Priorität vor Joystick-Eingaben, wenn also eine Taste gedrückt wird, werden die Joystickachsen und der JS_SELECT_PIN nicht mehr ausgelesen. Hast du sowohl Tasten als auch einen Joystick angeschlossen? Zeig doch mal ein Bild von deiner Hardware, damit ich mir das besser vorstellen kann.

Übrigens ist den Tasten SELECT und RIGHT in den meisten Fällen sowieso die gleiche Funktion zugeordnet, SELECT ist nur ein Shortcut, um z.B. bei der Mehrfach-Eingabe von Werten direkt zum Abspeichern des geänderten Werts zu kommen, ohne erst mit RIGHT zum letzten Wert wechseln zu müssen. Das Programm funktioniert also auch ohne SELECT.
Ciao, Arnd
Benutzeravatar
JollyJoker
Beiträge: 139
Registriert: 31.01.2011 22:21:57
Wohnort: MS

#604 Re: MultiWiiKopter-Konfigurationsprogramm für Arduino

Beitrag von JollyJoker »

yacco hat geschrieben:Zeig doch mal ein Bild von deiner Hardware, damit ich mir das besser vorstellen kann.
Hi Arnd,

das wollte ich eigentlich so lange wie möglich vermeiden :oops:
proxbeta.jpg
proxbeta.jpg (216.78 KiB) 985 mal betrachtet
Keine Ahnung warum, funktioniert doch. Und da die Box nicht mitfliegt, "darf" die, finde ich, auch etwas experimentell aussehen :mrgreen:

Gruß Peer

P.S.: Die Lötstellen sind mittlerweile nachgelötet (schön gemacht) Schei... Bleifreies Lötzeuch.
kleiner Exkurs zum PID tunig des MultiWiicopter: PID und zur GUI: GUI
Remember, it´s the man, not the machine;-)
Benutzeravatar
Hifly
Beiträge: 826
Registriert: 10.09.2009 10:39:23

#605 Re: MultiWiiKopter-Konfigurationsprogramm für Arduino

Beitrag von Hifly »

Hallo Peer,

wenn ich das richtig sehe, dann ist der Aufbau mit NC-Joystick?!
Wenn ja, ich hatte auch ein Problem mit der Erkennung der Eingabe (kann man mich aber nicht mehr genau erinnern, wie es scih geäußert hat). Geholfen hat aber auf jeden Fall folgenden Code auszukommentieren, da hier A0 abgefragt wird, welches auch für den Joystick - Select benötigt wird:

Code: Alles auswählen

#ifdef HWKEYS
  if      (digitalRead(HW_RIGHT) ==0) {result = KEY_RIGHT; }
  else if (digitalRead(HW_UP)    ==0) {result = KEY_UP;    }
  else if (digitalRead(HW_DOWN)  ==0) {result = KEY_DOWN;  }
  else if (digitalRead(HW_LEFT)  ==0) {result = KEY_LEFT;  }
  else if (digitalRead(HW_SELECT)==0) {result = KEY_SELECT;}
#else
  uint16_t input = analogRead(0);   // read the value from the sensor  
  for (uint8_t k = 0; result < 0 && k < NUM_KEYS; k++) {
    if (input < adc_key_val[k]) {
      result = k;
    }
  }
#endif
Ich hoffe, es hilft.
Gruß Holger

HK 450TT PRO - T-Rex 600ESP - Titan X50E - Hurricane 550 (i. R.) - WiiCopter: 2 x Quad+ (im Wiederaufbau)
Futaba FF7


What goes up must come down
Benutzeravatar
yacco
Beiträge: 4728
Registriert: 15.02.2009 19:27:59
Wohnort: Aßlar

#606 Re: MultiWiiKopter-Konfigurationsprogramm für Arduino

Beitrag von yacco »

Mmh, stimmt, wäre möglich, dass der "offene" KEY_PIN Eingang da irgendwelchen Murks einfängt und anzeigt. Holgers Patch sollte da helfen.
Ciao, Arnd
X-21
Beiträge: 110
Registriert: 19.01.2011 07:27:42

#607 Re: MultiWiiKopter-Konfigurationsprogramm für Arduino

Beitrag von X-21 »

Moin zusammen

@Yacco

So ich hab nochmal einiges kontrolliert:
1. Die SERIAL_COM_SPEED ist in beiden Sketches auf 115200 gesetzt.
2. Mein Kabel hatte ca. 60cm Länge. Das Neue hat nur noch 20cm.
3. Die SD Karte entfernt und dies wird durch Meldung No SD-Card found gemeldet.
4. Mit gesteckter SD das reading gecanceled und versucht zu loggen. Meldung Timeout Error
5. Deine neue LCD_Config280 aufgespielt.
6. Zweites Copterboard probiert, hier schafft er schon 56 der 84 Bytes.

Alles in Allem schöne Sch....e.
Was soll das sein, jedes Teil allein spricht einwandfrei über die USB-Com mit der Arduino Soft.
Es lässt sich beides programmieren.
Das Copterboard wird in der GUI in allen Funktionen dargestellt.

Bleibt jetzt nur nochmal eine anderen Ardu in das LCD einzulöten.
Habe z.Zt. nur noch einen pro mini 328 mit 3,3V und 8MHz, geht der evtl. auch?
Sonst muss ich erst mal wieder was bei Watteroth bestellen.

Any Ideas :?:

Gruss

Uwe
mit Holm- und Rippenbruch

Uwe
Benutzeravatar
yacco
Beiträge: 4728
Registriert: 15.02.2009 19:27:59
Wohnort: Aßlar

#608 Re: MultiWiiKopter-Konfigurationsprogramm für Arduino

Beitrag von yacco »

Hi Uwe,

nur keine Panik, und noch keine unnötigen Bestellungen rausjagen, mit solchen Effekten hab ich schon öfters gekämpft. Ich schick dir heute abend mal mein Testprogramm, mit dem ich die serielle Kommunikation getestet hab. Hat die Kommunikation denn vorher mal funktioniert (ohne SD-Card)?

Du könntest mir auch mal das von dir konfigurierte LCD_Config Sketch mailen, vielleicht beissen sich da ein paar Optionen.
Mit gesteckter SD das reading gecanceled und versucht zu loggen. Meldung Timeout Error
Das funktioniert so nicht - nach dem Canceln läuft das LCD_Config im Offline-Modus, da wird nicht geloggt (was sollte es denn auch loggen, wenn keine Daten empfangen werden?).
Habe z.Zt. nur noch einen pro mini 328 mit 3,3V und 8MHz, geht der evtl. auch?
Wenn dein LCD und das SD Breakout mit den 3.3V klarkommen, sollte das funktionieren. Einfach mal ausprobieren. :D
Ciao, Arnd
X-21
Beiträge: 110
Registriert: 19.01.2011 07:27:42

#609 Re: MultiWiiKopter-Konfigurationsprogramm für Arduino

Beitrag von X-21 »

Danke Arnd,
Du machst mir Hoffnung daß ich in Zukunft doch ohne Netbook zum Fliegen gehen kann.
Die Progbox ist doch etwas handlicher.
yacco schrieb:
Hat die Kommunikation denn vorher mal funktioniert (ohne SD-Card)?
Eine Kommunikation zwischen den zwei Ardus hat noch nie richtig funktioniert.
Nur Kommunikation über USB-Com zum PC.
Ich schick Dir dann Gleich mal das LCD_Config Sketch.
Habe darin schon einiges mal versucht auszukommentieren, jedoch ohne Erfolg.
Es sind die Zeilen mit diesem Kommentar //+++++++++++++++++++++++++++++++++++++++++

Wie schon geschrieben lässt sich die Box im Test Modus bedienen.
Das Programm scheint also vollständig in der Box zu sein.
Das Copterboard tut es ja auch, allerdings alles ohne Progbox.

Gruss

Uwe
mit Holm- und Rippenbruch

Uwe
Benutzeravatar
yacco
Beiträge: 4728
Registriert: 15.02.2009 19:27:59
Wohnort: Aßlar

#610 Re: MultiWiiKopter-Konfigurationsprogramm für Arduino

Beitrag von yacco »

Uwe, eine Spezialversion for your eyes only ist in deinem Postfach.

Welche Pins hast du eigentlich mit deinem Kabel verbunden (guckst du http://www.rchelifan.org/viewtopic.php? ... 6#p1165971)?
Ciao, Arnd
X-21
Beiträge: 110
Registriert: 19.01.2011 07:27:42

#611 Re: MultiWiiKopter-Konfigurationsprogramm für Arduino

Beitrag von X-21 »

Hi Arnd
war so beschäftigt mit dem "for your eyes only" dass ich Deinen Beitrag eben erst gesehen habe.
Es ist eine 1 zu 1 6adrige Verbindung mit Rx-Tx gekreuzt, DTR läuft mit.
Ungekreuzt geht gar nicht.

Uwe
mit Holm- und Rippenbruch

Uwe
X-21
Beiträge: 110
Registriert: 19.01.2011 07:27:42

#612 Re: MultiWiiKopter-Konfigurationsprogramm für Arduino

Beitrag von X-21 »

Hi Arnd
hab mal schnell´ne 4Draht Verbindung probiert ( +-RxTx) natürlich gekreuzt.
Das ist Mur :mrgreen: phy.



Geht auch nicht
mit Holm- und Rippenbruch

Uwe
Benutzeravatar
JollyJoker
Beiträge: 139
Registriert: 31.01.2011 22:21:57
Wohnort: MS

#613 Re: MultiWiiKopter-Konfigurationsprogramm für Arduino

Beitrag von JollyJoker »

Hifly hat geschrieben:Hallo Peer,

wenn ich das richtig sehe, dann ist der Aufbau mit NC-Joystick?!
Wenn ja, ich hatte auch ein Problem mit der Erkennung der Eingabe (kann man mich aber nicht mehr genau erinnern, wie es scih geäußert hat). Geholfen hat aber auf jeden Fall folgenden Code auszukommentieren, da hier A0 abgefragt wird, welches auch für den Joystick - Select benötigt wird:

Code: Alles auswählen

#ifdef HWKEYS
  if      (digitalRead(HW_RIGHT) ==0) {result = KEY_RIGHT; }
  else if (digitalRead(HW_UP)    ==0) {result = KEY_UP;    }
  else if (digitalRead(HW_DOWN)  ==0) {result = KEY_DOWN;  }
  else if (digitalRead(HW_LEFT)  ==0) {result = KEY_LEFT;  }
  else if (digitalRead(HW_SELECT)==0) {result = KEY_SELECT;}
#else
  uint16_t input = analogRead(0);   // read the value from the sensor  
  for (uint8_t k = 0; result < 0 && k < NUM_KEYS; k++) {
    if (input < adc_key_val[k]) {
      result = k;
    }
  }
#endif
Ich hoffe, es hilft.
Hi Holger,

erst mal Danke dafür. Leider funzt das auch nicht richtig?
Es sollte sich ja sowieso um einen inaktiven Teil handeln, da ich ja HWKEYS auskommentiert habe.
Allerdings bekomme ich überhaupt gar keine Regung vom Joystick mehr (ex-X-Box 360 Controller) wenn ich den, von Dir genannten Teil im Code, auskommentiere.
Auch das "Umlegen" des Ports hatte eine Totalverweigerung des Knüppels zur Folge. Nun habe ich es aufgegeben.

Ist aber, wie Arnd schon richtig bemerkte, gar nicht so schlimm, es geht auch ohne die Enter-Taste. Nervt mich halt nur etwas, daß es nicht geht.

Also Dank Euch Jungs.

Gruß Peer
kleiner Exkurs zum PID tunig des MultiWiicopter: PID und zur GUI: GUI
Remember, it´s the man, not the machine;-)
Benutzeravatar
yacco
Beiträge: 4728
Registriert: 15.02.2009 19:27:59
Wohnort: Aßlar

#614 Re: MultiWiiKopter-Konfigurationsprogramm für Arduino

Beitrag von yacco »

Versuch mal In dem Codesegment oben die Zeile

Code: Alles auswählen

uint16_t input = analogRead(KEY_PIN); 
gegen

Code: Alles auswählen

uint16_t input = 1023; 
zu ersetzen.

Ich werde in der nächsten Version die über Widerstände angeschlossenen Tasten auch optional machen, dann sollte das weg sein.
Ciao, Arnd
Benutzeravatar
Hifly
Beiträge: 826
Registriert: 10.09.2009 10:39:23

#615 Re: MultiWiiKopter-Konfigurationsprogramm für Arduino

Beitrag von Hifly »

JollyJoker hat geschrieben:Nun habe ich es aufgegeben.
Wir aber nicht! :mrgreen:
JollyJoker hat geschrieben:Es sollte sich ja sowieso um einen inaktiven Teil handeln, da ich ja HWKEYS auskommentiert habe.
Der zweite Teil nach dem #else wird durchlaufen (ist eigenlich für die kaskadierten Widerstände), sollte aber nicht in Deinem Fall, daher das Auskommentieren des von mir genannten Bereiches.
Neuer Versuch:
Was mir nun noch auffällt ist, dass Du oben beschrieben hast, dass wenn Du die Taste drückst ein Wert von 0014 angezeigt wird.
Wenn dass so ist, dann würde hier der Wert sel auf 1010 berechnet (Du hast ja JS_INV_SELECT_KEY aktiviert), KEY_SELECT aber nur zurückgegeben, wenn der Wert über 1020 ist. Einfach Abfrage if (sel > 1020) mal auf z.B. if (sel > 950) ändern.

Code: Alles auswählen

#ifdef JOYSTICK
 #ifdef JS_SELECT_PIN
  int sel  = analogRead(JS_SELECT_PIN);

  #ifdef JS_INV_SELECT_KEY
  sel = 1024 - sel;
  #endif
  
  if (sel > 1020) {
    return KEY_SELECT;
  }
 #endif
Gruß Holger

HK 450TT PRO - T-Rex 600ESP - Titan X50E - Hurricane 550 (i. R.) - WiiCopter: 2 x Quad+ (im Wiederaufbau)
Futaba FF7


What goes up must come down
Antworten

Zurück zu „Allgemeines“