Show Posts
Pages: 1 ... 10 11 [12] 13 14 ... 24
166  International / Deutsch / Re: Arduino Mega und Ethernet on: January 25, 2013, 02:29:50 pm
Also wenn es das WizNet (W5100) Shield ist, dann läuft das bei mir (und auch bei anderen) einwandfrei auf dem Uno und Mega!
Zu dem ENC28J60 kann ich nix sagen.
167  International / Deutsch / Arduino Debugger on: January 25, 2013, 01:14:49 pm
Hi,

hat schon jemand Erfahrungen mit Debuggern?
Hab da einen von Visualmicro gefunden. Ich befürchte nur, daß ich zum Einarbeiten mehr Zeit brauche als für die Fehlersuche in den letzten paar Monaten.
Aber ich stell mir generell die Frage, ob diese Tools hilfreich sind. Irgendwas besseres wie die Ausgabe über serial.println wäre allerdings manchmal schon hilfreich.

gruß/hk007
168  International / Deutsch / Re: Erfahrungen mit I2C-LCD-Adaptern? on: January 25, 2013, 12:05:52 pm
Hi,

ich nutze bei meinem neuesten Projekt auch ein I2C-Interface. Allerdings hat dieses auch noch eine Anschlussmöglichkeit für ein Keypad, oder auch einzelne Tasten. (Sucht einfach in der Bucht nach "I2C keypad")
Das ist von Vorteil, da ich sowohl mein 20x4 als auch die Bedienelemente in der Fronttür habe, und alles nur mit 4 Leitungen verdrahten muss.
Was mir da besonders gefällt: Ich brauch mich nicht um das Entprellen der Tasten kümmern. Ich lese nur zyklisch den Puffer aus, und bekomme einmalig eine Zahl zurück, die der gedrückten Taste entspricht.

Gruß/hk007
169  International / Deutsch / Re: LCD-Ausgabe von Umlauten on: January 20, 2013, 05:52:25 pm
Hi Uwe,

weiss ich eigentlich alles.  smiley-razz
Ich wollte eigentlich wissen, ob ich meine drei Zeilen für die Ausgabe des Wortes "Rücklauf" irgendwie zusammenfassen kann.
170  International / Deutsch / LCD-Ausgabe von Umlauten on: January 20, 2013, 05:04:13 pm
Hi,

ich habe gerade ein "Problem" bei der Ausgabe auf ein Serielles I2C-Display.
Es soll der Text "Rücklauf" ausgegeben werden.
Allerdings ist bei dem Display das "ü" nicht wie in der Standard-ASCII-Tabelle bei 0x81 sondern bei 0xf5.

Bis jetzt hab ich nur folgenden (uneleganten) Weg gefunden:
Code:
  lcd.print("R");
  lcd.write(0xf5); 
  lcd.print("cklauf: "); 

Kann man das irgendwie in einen Zeile packen?

Gruß/hk007
171  International / Deutsch / Re: WR703n Openwrt Problem Luci fehlt on: January 06, 2013, 08:03:36 am
Folgendes Problem kriege ich nicht gelöst. Die Hardware ist folgendermaßen verbaut:

wan -> Speedport 700v -> lan -> WR703n -> Wlan -> Laptop -> Telnet
                                -> lan -> Pc
Ich kann per Telnet auf den Router(WR703n) zugreifen jedoch nur wenn ich am Laptop folgende Ip zuweise 192.168.1.2

dann kann ich per Telnet 192.168.1.1 auf Openwrt zugreifen. Jedoch hab ich dann kein Internet für das Luci Pakete.Weise ich keine Ip zu hab ich Internet.


Welche IP hat dein Speedport?
Welche IP hat der LAN-Port deine TPLink?
Welche IP hat der WLAN-Port des TP-Link?

Vllt. hängst du dein Notebook erst mal über den LAN-Port an dein Heimnetz. Dann musst du am TP_Link nicht 2 Netzwerkadapter handeln.


172  International / Deutsch / Re: Temperatur unter Wasser messen on: January 05, 2013, 03:46:06 am
Kauf den:
http://www.conrad.de/ce/de/product/184037/Temperatur-Sensor-Hygrosens-Temp-Fuehler-DS-1820-BT-Kabel-2-m-55-125-C-Gehaeuseart-Edelstahlgehaeuse/?ref=no_search_results&rtl=reco_search&rb=1

Oder bau ihn selber (wie ich):
Cu-Rohr. Am Ende eine CU-Plättchen aufgelötet, Sensor mit Wärmeleitpaste und angelötetem Kabel rein, und dann mit 2K-Epoxy ausgegossen. Fertig für 2-3 Euro.
173  International / Deutsch / Re: Wie heißen die Stecker, und woher bekomme ich diese? on: January 05, 2013, 03:42:12 am
Wenn mich nicht alles täuscht, dann sind das JST-Stecker.

Schau mal hier, ob der passende dabei ist:
http://www.jst-mfg.com/product/pageview/connector_e/pageview.html#page_num=1

Hast du das Posting gelesen???
Ob es die Stecker bei R und C überhaupt gibt, sei mal dahingestellt.
174  International / Deutsch / Probleme mit I2C-LCD/Keypad Adapter on: January 04, 2013, 07:06:13 pm
Hi,
Zur Ansteuerug eine 4x20 LCD-Displays hab ich mir einen I2C-LCD-Keypad Adapter organisiert.
--> http://www.ebay.de/itm/I2C-Serial-LCD-controller-keypad-control-Arduino-/230748741705?pt=LH_DefaultDomain_0&hash=item35b9b26049

Hat da schon jemand Erfahrungen damit?

Problem ist Folgendes: Man kann an die "Eingänge" für Taster entweder ein Matrix-Keypad (4x4) oder 8 einzelne Taster anschliessen.
Ich möchte die Variante mit 8 einzelnen Tastern verwenden. Ich habe alles nach Vorschrift verdrahtet, aber ich bekomme nicht mehr als 4 Taster eingelesen. Die anderen 4 werden nicht erkannt.
Ich benutze die "LCDI2Cw"-Bibliothek. Da das Gerät standardmässig auf 4x4 eingestellt ist, habe ich schon probiert mit folgender Sequenz auf den "8-Tasten-Modus" umzustellen:
Code:
  unsigned char mode = 0x01;
  lcd.keypadMode(mode);


Aber es sieht so aus, als ob er den Befehl gar nicht verarbeitet.
Da diese Funktion erst mit Firmware 1.4 aktiv sein soll, hab ich mal die Firmwareversion ausgelesen: Da bekomm ich den Wert "2" zurück?????
Sonst läuft das Interface wie erwartet, nur das mit den Tastern bring ich nicht hin :-(

Gruß/hk007


175  International / Deutsch / Re: 32Bit-Zahl als Bit-Array / --> Einlesen eines Absolutwertgebers on: January 02, 2013, 05:46:05 am
Hi,

komisch, hatte gestern nacht noch mal ein Posting mit Erfolgsmeldung nachgeschoben. Irgendwie ist das weg????
Zum OsziBild: Takt ist gelb (6 Pakete a 4 Takte) , Data ist blau. Leider sieht man auf dem Bild nur ca. 75% des gesamten Telegramms. Sonst wäre nichts zu erkennen gewesen.

Das deaktivieren des Interrupts hat nichts gebracht. Das mit den Neusetzen der Zeit in der Int hab ich auch mal probiert. Aber ich wollte in der Int so wenig Code wie möglich halten. Drum nur das Setzen des newdata

Die zündende Idee war wie folgt:

Ich hab am Ende der Loop noch ein delay(1) eingefügt. Dann war auf jeden Fall sicher gestellt, daß im Falle einer Datenübertragung einmal die Int-Routine durchlaufen wird.
Anscheinend gab es Zustände, wo das Hauptprogramm "zu schnell" war.
Der Code sieht jetzt so aus:

Code:
const int data = 3;
boolean newdata = LOW;
int ctr;
unsigned long time;
long distance = 0;
float Position;


void setup(){
  Serial.begin (57600);
  pinMode(data, INPUT);
  attachInterrupt(0, INT01, RISING);   //(UNO: Int0 = PIN 2)
}

void loop(){
  X_Achse();
  delay(1);
}

void X_Achse() {
  if (newdata) {
    time = millis();
  }
  newdata = LOW; 

  if ((millis() - time) >= 20 ) {
     if (ctr == 24) {
       distance = distance >>1;      // erstes Bit verwerfen
       if bitRead(distance,20) {     // negativer Wert??
         bitWrite(distance,20,0);
         Position = float(distance/-100.0);  // Wert auf mm normieren
       }
       else {
         Position = float(distance/100.0);
       }
      Serial.println (Position);
    }
    ctr = 0;
  } 
 
}

void INT01() {
  newdata = HIGH;
  bitWrite(distance, ctr, !digitalRead(data));
  ctr=ctr+1;
}

Jetzt bekomm ich alle 130 ms einen RICHTIGEN (24Bit langen) Wert :-)

Quote
Ausserdem sollten distance und ctr als volatile deklariert werden. ( Damit der compiler berücksichtigt, dass Takt() und loop() gleichzeitig laufen und er keine falschen Optimierungen vornimmt.)
OK.... sagt mir momentan nichts, werd mich aber mal zu volatile einlesen.


Danke für deine geduldigen Antworten.
Sorry nur nochmal dass das posting von gestern Nacht irgendwie weg war.
176  International / Deutsch / Re: Wie heißen die Stecker, und woher bekomme ich diese? on: January 01, 2013, 07:45:39 pm
Quote
Du mußt aber aufpassen, weil bei dieser buchse die anschlüsse verschieden lang sind......

Hmm.... ich glaub eher, dass alle gleich lang sind und beim Auslöten verrutscht sind. smiley-zipper
177  International / Deutsch / Re: Wie heißen die Stecker, und woher bekomme ich diese? on: January 01, 2013, 06:11:00 pm
Wenn mich nicht alles täuscht, dann sind das JST-Stecker.

Schau mal hier, ob der passende dabei ist:
http://www.jst-mfg.com/product/pageview/connector_e/pageview.html#page_num=1

178  International / Deutsch / Re: 32Bit-Zahl als Bit-Array / --> Einlesen eines Absolutwertgebers on: January 01, 2013, 05:02:15 pm
Ich glaub jetzt eher, daß ich meinen Code noch optimieren muss.
Mit dieser Änderung:
Code:
 if ((millis() - time) >= 20 [color=red]&& !newdata[/color]) {
    if (ctr > 0) {
     Serial.print (millis());
     Serial.print (": ");
     Serial.println (ctr);

sieht es schon wesentlich besser aus:
Code:
4483: 24
4615: 24
4748: 24
4881: 24
5014: 24
5147: 23
5251: 1
5280: 22
5412: 24
5545: 24
5679: 23
5812: 24

Aber es sind immer noch "Fehltelegramme".
Sieht aus, als ob es immer noch Timingprobleme beim Zusammenspiel zwischen Interruptroutine und Hauptprogramm gibt.
Den Int während der Auswertung im Hauptprogramm zu deaktivieren trau ich mich nicht, da ich dann fürchte einen Interrupt zu verpassen.
179  International / Deutsch / Re: 32Bit-Zahl als Bit-Array / --> Einlesen eines Absolutwertgebers on: January 01, 2013, 02:48:04 pm
Quote
Manchmal verwirft er bis zu 4 Pakete
"verwerfen" bedeutet, dass länger als 20 ms nichts mehr gekommen ist, aber ctr nicht bis 24 gezählt hatte, richtig?
Ja


Quote
Was passiert, wenn du statt
if (ctr >= 24) { ...   zum Test  if (ctr > 0) { ... nimmst und mitschreibst, wieviele Pulse gekommen sind ?
Code:
    if (ctr > 0) {
     Serial.print (millis());
     Serial.print (": ");
     Serial.println (ctr);
    }
--> Ergebnis:
19892: 24
20025: 23
20159: 24
20300: 24
20433: 24
20537: 1
20566: 22
20698: 24
20831: 23
20963: 24
21067: 1
21098: 22
21230: 24
Ich bin gerade am überlegen, ob ich vllt. ein Problem mit den Eingangssignal habe?
Zur Info: Die Signale kommen als 1,5V-Signal aus dem Geber. Damit ich es im Arduino einlesen kann, hab ich Sie durch eine Transistorbeschaltung verstärkt:
Gebersignal mit 5K an Basis des BC547C, 5V über 10K an Collector und Arduino-Eingang, Emitter an GND. (Schema wie im Bild, allerdings mit anderen Werten)
Da die Schaltung invertiert frag ich auch nach Rising und !digitalRead.
Im Anhang seht ihr mal ein Oszi-Bild des Signals.

Quote
Wenn der Clock - Puls nur zu lesen ist, ist shiftIn() übrigens nicht passend.
Soll heissen, dass dafür der CLK ein Ausgang sein soll?
Ne, bei mir sind beides Eingänge. Also der Geber sendet auf beiden Leitungen.
180  International / Deutsch / Re: 32Bit-Zahl als Bit-Array / --> Einlesen eines Absolutwertgebers on: January 01, 2013, 11:03:52 am
Quote
distance |= bit;  ist eine Kurzschreibweise für distance = distance | bit; // setze ein bit in distance
bit <<= 1;   ist eine Kurzschreibweise für   bit  = bit << 1; // schiebe bit eins nach links

Das geht mit anderen Operatoren  ( + , * , / usw.) auch, und wird oft direkt von der Hardware unterstützt.

Oh ja, mit "+" kenn ich das auch. aber "|=" war mir etwas zu kryptisch.

Quote
Ja, das stimmt. Mit 3 shiftIn Befehlen kriegst du 24 bit.
Hmm.... aber dann muss ich mich irgendwie drum kümmern, daß ich dann ins richtige der 3 Bytes schreibe, und daß ich die 3 Bytes am Ende dann zusammenfüge.
Oder denk ich da falsch?

Ich poste jetzt mal meinen Code. Ist vllt. etwas hölzern, aber geht.
Allerdings erkennt er nicht jedes Datenpaket :-( Manchmal verwirft er bis zu 4 Pakete, bis er eins dekodiert.  Darum dachte ich zunächst, daß die Int-Routine "Takt()" zeitlich an der Grenze ist.
Das mit den millis() hab ich eingebaut , damit ich erkenne wann ein neues Paket startet. Wenn seit 20ms kein Takt mehr da ist, weiss ich daß ich in den 120ms Pause bin, und bei der nächsten Flanke ein neues Paket beginnt.
Code:
// Takteingang: PIN2
// Dateneingang: PIN3
// Länge Paket: 24Bit in ca. 10ms
// Anschliessend ca. 120ms Pause
// Das erste Bit des Datenpakets wird verworfen

const int data = 3;
boolean newdata = LOW;
int ctr;
unsigned long time;
long distance = 0;


void setup(){
  Serial.begin (57600);
  pinMode(data, INPUT);
  attachInterrupt(0, Takt, RISING);   //(UNO: Int0 = PIN 2)
}

void loop(){
  if (newdata) {
    time = millis();
  }
  newdata = LOW;
  
  if ((millis() - time) >= 20) {
    if (ctr >= 24) {
     distance = distance >>1;
     Serial.println (distance);
    }
    ctr = 0;
  }
}

void Takt() {
  newdata = HIGH;
  bitWrite(distance, ctr, !digitalRead(data));
  ctr=ctr+1;
}




Pages: 1 ... 10 11 [12] 13 14 ... 24