Show Posts
Pages: [1] 2
1  International / Deutsch / Re: Bluetooth bzw. serielle übertragungsfehler? on: September 28, 2014, 10:50:39 am
ich wollte nur sagen, ich nutze keine while schleife um auf die Daten zu warten. habe es hier so reingetippt, natürlich ist es "mySerial.available".
2  International / Deutsch / Re: Bluetooth bzw. serielle übertragungsfehler? on: September 28, 2014, 09:00:13 am
Ach gott. Nachricht mühsam und detailliert formuliert, nach dem Abschicken auf Fehler kontrollieren, da fällt das auf:
 
Die Methode isValidNumber bricht ja beim ersten validen Digit ab. Nur wenn ALLES KEINE Digits sind, endet die Schleife und es wird mit false beendet. Ich will aber abbrechen, sobald MIN. eines falsch ist.
sähe dann so aus:
Code:
boolean isValidNumber(String str){
  for(byte i=0;i<str.length();i++){
    if(!isDigit(str.charAt(i))) return false;//abbrechen, wenn ein zeichen keine Ziffer ist
  }
  return true; //wird nur erreicht, wenn ALLE Zeichen gültige Ziffern waren.
}

Hätte die Methode nicht aus einem Forum kopieren sollen. Hatte nach diesem isDigit gegoogelt und dachte, ich kanns mir sparen die 5 zeilen selbst zu schreiben... smiley-grin

Vielleicht hat ja trotzdem noch jemand einen Tipp was den Rest angeht. smiley
Ansonsten bitte ignorieren.
3  International / Deutsch / Bluetooth bzw. serielle übertragungsfehler? on: September 28, 2014, 08:51:13 am
Hallo,
Ich habe das btm222 Bluetooth Modul verlötet und an den Arduino angeschlossen. (Mit Spannungswandler-schaltung, da der btm mit 3,3V und der Arduino (zumindest auf den RX/TX Pins) mit 5V arbeitet.
Ich verwende einen Arduino Uno von Sainsmart.

Ich übertrage nun Werte mit dem Handy (Testfall: 1m Entfernung). Die Werte sind ints von 0-255. Die kommen am Arduino dann als String über die Serielle Schnittstelle (ich nutze Softwareserial auf den Pins 3 und 5, da ich bei Benutzung von 0 und 1 das USB Kabel jedes mal abstecken müsste)

Problem: ganz ab und zu, kommen solche Zeichen an:


Damit die Bits/bytes nicht durcheinander gewürfelt werden, habe ich keine
Code:
while(Serial.available)
verwendet, sondern lese jeden Loop-durchlauf die ankommenden bytes, und konkatiere sie in einem String namens rx :
Code:
character = btm222_serial.read();
rx.concat(character);

Egal wie schnell der Arduino, oder wie langsam die Übertragung mal ist, es wird somit gewartet bis alles da ist. Trennzeichen (wird vom Handy hinter Jede Nachricht gehängt, ist ein Fragezeichen: "?")
Auf dem Arduino so gelöst:
Code:
if(character=='?'){
verarbeite(rx);
rx = "";

Damit sollte nichts durcheinander geraten.
Die Zeichen treten trotzdem auf, müssten meiner Meinung nach also Fehler in der BT Übertragung sein. Sind recht selten, kann ich aber überhaupt nicht gebrauchen. Mir würde es reichen, diese Werte zu ignorieren, was ich mit dieser Methode versucht habe:
Code:
boolean isValidNumber(String str){
  for(byte i=0;i<str.length();i++){
    if(isDigit(str.charAt(i))) return true;
  }
  return false;
}

dazu natürlich
Code:
#include <ctype.h>
im Kopf eingefügt.

Manchmal funktioniert das, manchmal kommen die Zeichen aber unerkannt durch. vielleicht weil die bytes dann als "tiefgestellte 2" oder ähnlich erkannt werden... Das System darf solche Werte aber nicht bekommen. Ich will solche Werte filtern und ignorieren. Es kommen immernoch genug richtige Werte pro Sekunde an.

Habt ihr Tipps wie ich entweder die BT Übertragung (übrigens mit 38400 BAUD, vorher mit 19200, gleiches Problem) verbessern, oder die Werte richtig filtern kann?

Kann ich seitens des Handys (Android) etwas verbessern ? Sende einfach mit nem Outstream:
Code:
byte[] msgBuffer = message.getBytes();
try {
outStream.write(msgBuffer);

Falls es das schon 100x gab, bitte einfach den Link posten. Ich habe bereits stunden gegoogelt und konnte nichts finden, was mich wirlich weiterbringt.
4  International / Deutsch / Re: Quadcopter mit Arduino steuern - brauche ich Regler ? on: September 15, 2014, 09:33:36 am
Habe mich etwas belesen, (unter anderem deine Links) und denke, ihr habt recht. Ich werde das Rad nicht noch einmal erfinden und stattdessen auf bestehenden Lösungen aufbauen. (Multiwii etc)

Danke für die Infos smiley
5  International / Deutsch / Re: Quadcopter mit Arduino steuern - brauche ich Regler ? on: September 15, 2014, 08:31:33 am
Okay, danke. Aber die ESC Regler kann ich per PWM vom Arduino ansteuern, oder ?
6  International / Deutsch / Quadcopter mit Arduino steuern - brauche ich Regler ? on: September 15, 2014, 08:16:43 am
Hallo smiley
Ich spiele mit dem Gedanken einen Quadcopter zu bauen. Ich würde als Herz gerne einen Arduino verwenden. Jetzt frage ich mich, ob ich mir für jeden Motor einen Regler kaufen muss, oder einfach einen dicken Transistor per pwm steuern könnte.
Led-schläuche hab ich bereits über Transistoren gesteuert (Verstärkerschaltung, mit externer Stromquelle).

Geht das so einfach, oder machen die Regler (die man kaufen kann) noch etwas, von dem ich nichts weis?
7  International / Deutsch / Re: Analog Read spinnt on: February 04, 2014, 08:51:20 am
Danke für die Antworten, ich bastel dann mal ein wenig smiley
8  International / Deutsch / Re: Analog Read spinnt on: February 02, 2014, 04:19:43 pm
Danke für die Antworten.

@ playon: Entfernung ca 6m. Was meinst du mit Zusatzhardare ? Gehts um den Spannungsabfall bzw. die geringe Schaltleistung der output-pins ? Ich hab hier noch ein paar Transistoren rumliegen, alte Netzteile zu genüge. Könnte ich das Signal mit einem Netzteil und den Transistoren verstärken ?

@ Serenifly: Habe duemilanoves, denke die zählen als UNOs, oder ?

@ uwefed: Ich weis wie PWM funktioniert, ich drücke mich nur manchmal ungenau aus. Mir gings darum, dass die Spannung immer von HIGH zu LOW (und andersherum) springt. Die variablen Pausen dazwischen, habe ich unglücklicherweise mit "schnell" und "langsam" ausgedrückt.


Quote
Du kannst aus einem PWM-Signal mit einem RC-Glied Gleichstrom machen. Das Gleichstromsignal ändert sich dann aber nicht so schnell.

- Das war mein Grundgedanke mit dem Kondensator. Kannst du grob sagen, wie träge die Übertragung dann wird ? Die Aufladung eines Kondensators läuft ja, wenn ich mich jetzt richtig ausdrücke, immer als eine Näherung ab. Der Wert nähert sich der angelegten Spannung. Angenommen mir reicht eine genauigkeit von 80%, in welchem Bereich liegen die Verzögerungen ? <100ms ?, <500ms oder größer ?


Quote
Für die Übertragung kannst Du auch die Serielle TTL Schnittstelle benutzen. Dann kanst Du aber nicht ohne die Verbindung auszustöpseln ein Update des Sketches machen. Als Distanz sinh einige 10 m leicht machbar.
Das müsste dann ein ähnliches Problem sein, wie bei Bluetooth modulen. Die nutzen die RX und TX pins, dann muss man das Modul auch immer abklemmen um neuen Code zu laden.
Ich ändere den Code nicht häufig, daher wäre das egal.
Aber was mich an Bluetooth gestört hat (anderes Projekt) war, dass der Microcontroller neu startet, wenn die Bluetoothverbindung beendet wird. Da musste ich einen Kondensator an 2 Pins hängen, was auch nicht immer geholfen hat.
So etwas würde ich gern vermeiden.

edit: mir fällt gerade ein: Wenn die Spannung im USB kabel reicht, kann ich den Arduino A auch direkt neben den Arduino B stellen, dann bräuchte ich zwar ein 6m USB Kabel, aber dann hätte ich das Reichweitenproblem mit I2C/SPI nicht mehr.
9  International / Deutsch / Re: Analog Read spinnt on: February 02, 2014, 10:11:41 am
Aaaaah! wenn ich so über PWM nachdenke, völlig logisch ! da wird ein "analoges" Signal ja nur durch schnelles oder langsames springen simuliert...


hmm könnte ich das nicht einfach mit nem kleinen Kondensater glätten ? oder wird das dann zu träge ? ist quasi für ein ambilight-system. (vlc-player + atmoWin)


Eigentlich muss ich nur 3 Werte von arduino A nach arduino B schaffen. Ich kann die Serial verbindung aber nicht nutzen, die ist belegt.
10  International / Deutsch / Analog Read spinnt on: February 02, 2014, 10:03:42 am
Hallo liebes Forum,

Ich hab schon gegoogled, bin aber nicht wirklich schlau geworden.

Ich sende Werte 0..255 von einem Arduino A über AnalogWrite(pin,Wert) zu einem Arduino B über AnalogRead(pin).

Ich sende zum testen momentan feste Werte, die sich nicht ändern. Trotzdem erhalte ich willkürliche Zahlen zwischen 0 und 1023 aus AnalogRead. Die spanne 0..1023 ist nicht mein Problem.

Ich wüsste gern wieso das so "flackert". Ich hab zum Testen zusätzlich ne LED drangehängt, die reagiert auf Wertänderungen, "flackert" aber nie. Sprich: sind die Werte konstant, ist die Helligkeit konstant.

Bin mir sicher, ein Voltometer würde da auch keine Sprünge erkennen.

Denke es liegt am Read.

Arduino A bekommt Daten per Serial mit eine Baud von 38400, während Arduino B den Serial gar nicht benutzt. Hatte den zum Debuggen mal auf 9600, fänds aber komisch wenn DAS das Problem wäre. Hatte ihn auch mal auf 38400 gestellt, hat natürlich nichts gebracht.

Habe soeben einen Vorwiderstand eingebaut (10K). Zwischen den Arduinos. Hat nix gebracht :/
11  International / Deutsch / Verzweifle an indexOf... (Arduino Webserver) on: July 30, 2013, 11:39:11 am
Hi, habe hier einen Arduino duemilanove mit einem Ethernetshield.
Greife auf den Server zu: (ist alles aus einem veralteten Beispiel:http://jleopold.de/2010/08/10/arduino-als-webserver/)

das rufe ich dann quasi auf:
Quote

Und ich will jetzt den readString nach "ein" oder "aus" durchsuchen.
Nutze dafür indexOf wie folgt :

Code:
if (c == '\n') {  //if HTTP request has ended

Serial.print(readString.indexOf("ein"));
Serial.print(readString.indexOf("aus"));

Und nun folgendes Problem. Eine einzelne dieser Zeilen funktioniert, bekomme den Index des substrings. Wenn es 2 oder mehr sind (wie hier drüber zu sehen) bekomme ich für beide (oder mehr) Abfragen 0 zurück.

So kann ich nicht auswerten was ich da für Anfragen sende smiley-sad

Ich verzweifle da jetzt seit 3 Stunden dran und Google mag auch nicht helfen...

Wer ist so nett ?  smiley
12  International / Deutsch / Re: Auto Reset oder was ? on: October 06, 2012, 02:55:16 pm
Dankeschön.

In der Beschreibung hier :http://wp.yellowkazoo.com/?p=177
stand es eben anders.

Das Bluetooth modul musste man mit RX an TX vom Arduino und TX an den RX vom Arduino anschließen.
Nachdem dein Rat
Quote
Abhilfe schafft ein Elko zwischen RX und Masse
nicht funktionierte (ich konnte nichtmal schalten) habe ich ihn zwischen TX und Masse geklemmt und nun funktioniert es einwandfrei. Habe übrigens, weil ich wie erwähnt keinen anderen hatte, einen 22 µF Kondensator verwendet.

Vielen Dank smiley

PS: Steuer 2 Lampen in meinem Zimmer mit meinem Handy (Wechselschaltung, sodass es trotzdem noch mit dem normalen Schalter geht)
13  International / Deutsch / Auto Reset oder was ? on: October 06, 2012, 02:21:46 pm
Hallo liebes Forum.
Kurz und knapp:
Arduino duemilanove mit diesem Code:
Quote
int ledPin8 =  8;
int ledPin6 = 6;
char abc = '0';

void setup(){
  Serial.begin(9600);
  pinMode(ledPin8, OUTPUT); 
  pinMode(ledPin6, OUTPUT);
  abc = '0';
}
void loop(){
   if (Serial.available() > 0) {
     abc = Serial.read();
   }
     if(abc=='1'){
      digitalWrite(ledPin8, LOW);
     }
     if(abc=='2'){
      digitalWrite(ledPin8, HIGH);
     }
      if(abc=='3'){
      digitalWrite(ledPin6, LOW);
     }
      if(abc=='4'){
      digitalWrite(ledPin6, HIGH);
     }
}


Ich kenne auch switch-case anweisungen, ist nur provisorisch...

Die Seriell verbindung geschieht über ein bluetoothmodul (rx-tx anbindung)
"HIGH" und "LOW" schalten Relais für 2 Lampen.


Problem:
Ich sende verschiedene zahlen, (als chars interpretiert...) und beende dann die serielle verbindung (schließe die app auf meinem android phone) dann geschieht folgendes:
wenn beide an sind (also zuletzt 2 und 4 (oder andersrum) gesendet wurden.) gehen beide lichter aus. (beim beenden der seriellen verbindung)

Wenn eine von beiden an ist, bleibt sie an. (egal welche) wenn beide aus sind ändert sich auch nichts.


Ich vermute, dass das auto-reset beim serial-beenden mein Problem aufruft. (Habe gegoogelt)
Ich habe einen 120 OHM Widerstand auf "5V" und "RESET" gepackt. ging nicht, dann habe ich die andere Variante probiert:
10micro Farad Kondensator zwischen GND und RESET, hatte nur 22 micro farad, ging auch nicht.

Da es bei "eine lampe an/egal welche von beiden" geht, kann man den reset aber eigentlich ausschließen, oder ?

Ich hoffe auf eine einfache programm-änderung, die das behebt. Ich würde aber auch was löten, ich brauche den auto-reset nicht, er kann also ruhig permanent deaktivert werden, aber ich möchte vorher sicherstellen, dass es auch die richtige Lösung ist.

mit freundlichen Grüßen
14  International / Deutsch / Re: Bluetooth für Arduino ? on: June 01, 2012, 06:29:41 pm
Dankeschön smiley
15  International / Deutsch / Bluetooth für Arduino ? on: June 01, 2012, 01:43:32 pm
Hallo liebe Arduino Community!

Ich habe einen duemilanove (hoffe ich habs richtig geschrieben, bin ja kein Italiener). steckt über USB am pc.
desweiteren:
PC mit Bluetooth stick
Handy mit integriertem Bluetooth.

ein selbstgeschriebenes java-programm auf dem handy kommuniziert mit meinem selbstgeschriebenen java-programm auf dem pc, welches durch eine serielle usb verbindung den duemilanove anspricht, welcher ein relais schaltet. Bewirkt : Licht an / aus.


Wenn der pc aus ist (ich beispielsweise gerade ins Bett gehen möchte...) geht das natürlich nicht mehr.
Daher würde ich gern wissen, womit am besten (gibt ja mehrere BT shields) und wie einfach oder schwer ich das ganze jetzt umrüsten kann.

Ich will den pc auslassen, handy soll direkt arduino über bt ansprechen.

Hinweise, Tipps, codebeispiele und Tutorials, alles gern gesehen.

Wer Interesse an meinen Java programmen hat oder dabei Hilfe braucht, ist bei mir herzlich willkommen.
Pages: [1] 2