Show Posts
Pages: 1 ... 86 87 [88] 89 90 ... 94
1306  International / Deutsch / Re: LCD Display am Schieberegister on: January 21, 2012, 11:45:34 am
hmm, natürlich nicht  smiley-roll
klarer fall von  smiley-cool
1307  International / Deutsch / Re: Verwendung der Library MenuBackend on: January 21, 2012, 09:53:47 am
Da wohl die meisten die Bibliothek nicht kennen, wäre ein Link hilfreich. Und ein wenig Code der schon vorhanden ist auch.
Ansonsten würde ich vorschlagen Du legst Dir eine Variable an, in der die aktuelle Zeit (millis()) gespeichert wird und schaust in jedem Durchlauf von loop() ob millis() -5000 (5 sekunden) größer ist als der gemerkte wert. (wenn ja ist die Zeit abgelaufen und Du kannst Dein Menü entsprechend anpassen)
jedesmal wenn eine taste betätigt wird, speicherst du den aktuellen wert den millis() in dieser variable ab, um die Zeit von vorn zählen zu lassen.
Ob sich das in Deinem Sketch so einfach umsetzen läßt, können wir ohne Code aber nicht sagen.
1308  International / Deutsch / Re: Anfaenger sucht sowas wie ne WAIT funktion on: January 21, 2012, 09:49:13 am
Ok, es gibt zwei Ansätze, die Du verfolgen kannst.

1) Alles Steps werden in einem Durchlauf der Funktion "loop()" abgearbeitet. Ist die Funktion durchgelaufen fängt alles wieder von vorn an.
    In diesem Fall würde ich den Clock-Code in eine Funktion packen und zwischendurch immer wieder aufrufen, da Du ja innerhalb von loop() immer wieder warten musst. GGf. per Timer-Interrupt. Allerdings halte ich das persönlich für die ungünstigere Lösung.

2) Pro Durchlauf von loop() wird nicht gewartet. Am Anfang wird einmal der Clock-Code ausgeführt und entsprechende Status-Variablen gesetzt. Zusätzlich merkst Du Dir in einer globalen Variable, welcher Step der aktuelle ist. Dazu kommen für die verschiedenen "Blink"- und Schalt-Stati die entsprechenden Zeiten die gespeichert werden müssen. In Abhängigkeit des ermittelten Status wird dann z.B.  entschieden im aktuellen Step die LED zu schalten, oder aufgrund des "Clock"-Status in den nächsten Step zu wechseln, also die Variable "step" um eins zu erhöhen. Es wird damit innerhalb von loop() immer nur der Code des aktuellen Steps ausgeführt und ggf. in den nächsten Step gewechselt. Da Du nur eine LED verwendest, musst Du Dir eigentlich nur zwei Variablen "greenLEDvalue (HIGH|LOW)" und "unsigned long greenLEDtime" für das Blinken anlegen. Letztere speichert die Zeit seit der letzen Änderung des Status. Bei jedem Step kannst Du nun vergleichen, ob millis() - "blinkzeit" >  greenLEDtime ist. Wenn ja, dann "greenLEDvalue = !greenLEDvalue;" und Wert auf das LED-Pin schreiben. Danach die aktuelle Zeit merken "greenLEDtime = millis()". Somit bekommst Du das Blinken ohne delay hin.
1309  International / Deutsch / Re: Arduino pingt auf IP on: January 21, 2012, 09:34:23 am
Was Du machen willst, ist ein ICMP Request (ping) http://de.wikipedia.org/wiki/Internet_Control_Message_Protocol
Leider bietet die Ethernet-Bibliothek dazu keine Funktion an, der WIZ5100 kann aber sehr wohl ICMP und beim ENC28J60 muss man eh alles selbst machen.
Vermutlich musst Du Dich ein wenig mit dem WIZ5100 auseinandersetzen, um einen ICMP Request abzusetzen. Auf die Schnelle hab ich bei google auch nix zum Arduino gefunden.
1310  International / Deutsch / Re: LCD Display am Schieberegister on: January 21, 2012, 09:21:32 am
Welche Version der IDE verwendest Du?
1311  International / Deutsch / Re: Anfaenger sucht sowas wie ne WAIT funktion on: January 21, 2012, 04:33:38 am
Ich denke du solltest die Struktur Deines Programms überdenken. Nach Möglichkeit keine delay() Aufrufe verwenden, sondern das durch Zeitdifferenzen lösen.
Desweitern ist mir folgendes in Deinem Code aufgefallen:
Code:
      gateState = LOW;                                          //

    digitalWrite(clockGateOut, gateState);                      //
  }
//----------------------------------------------------------------

  // Step 1
  gateStatus = digitalRead(clockGateOut);
  if(gateStatus == HIGH) {
Du verwendest das Pin "clockGateOut" aus OUTPUT. In Deinem "Clock-Code" wird die Variable "gateStatus" nach dem Clock-Code aber per "digitalRead()" von einem als OUTPUT deklarierten Pin gelesen und in Abhängigkeit davon wird etwas gemacht. Das ergibt keinen Sinn.

Weiterhin verwendest Du die Variablen gateState and gateStatus für den auf einem Pin zu setzenden Wert, machst dann aber ein
Code:
    xz = gateStatus;                                           // hier soll die while-schleife
    while(xz == 1) {                                           // dafuer sorgen, das der naechste step erst
      xz = digitalRead(gateStatus);                            // augefuehrt wird wenn
   }
Also ein "digitalRead()" vom Wert, nicht vom Pin. Das der Compiler das akzeptiert, liegt daran das auch HIGH und LOW am Ende einfach nur 0 oder 1 sind. Leider verstehe ich auch nicht, was Du mit dem Programm eigentloch genau machen willst. Evtl. lieferst Du ja mal eine kurze Ablaufbeschreibung Deines Programms in Worten.
Mario.
1312  International / Deutsch / Re: Datei von SD über Ethernet übertragen on: January 21, 2012, 03:21:22 am
Aus dem geöffneten File liest Du zeichenweise, da wird nix automatisch in einen Puffer gelesen. Allerdings teilen sich SD und Ethernet-Schnittstelle den SPI Bus, daher könnte das die Ursache Deines Problems sein.
http://arduino.cc/en/Main/ArduinoEthernetShield:
Quote
Note that because the W5100 and SD card share the SPI bus, only one can be active at a time. If you are using both peripherals in your program, this should be taken care of by the corresponding libraries.

1313  International / Deutsch / Re: Serial.read() in HEX, XOR und andere Fragen on: January 20, 2012, 03:49:55 pm
Stimmt, Du denkst zu kompliziert :-)
per Serial.read() liest Du schon eine Zahl, die Du ja nur per String(WERT,HEX) in eine Zeichenkette umwandelst. Beim Rechnen mit Zahlen ist es wurscht in welchem Zahlensystem die sind, denn Dein Arduino kennt eh nur das Binärsystem :-)
1314  International / Deutsch / Re: LCD Display am Schieberegister on: January 20, 2012, 03:46:53 pm
Hier ein Sketch zum Display testen für meine Wetterstation:
Code:
// 2-wire connection to a HD44780-compatible LCD via shiftregister with:
//   Data (and Enable) on Arduino pin 12
//   Clock on Arduino pin 13
//
// Shiftregister bits #0 - #1 - not used (bit #0 must be set to zero)
// Shiftregister bit  #2 - connects to LCD RS (Register Select)
// Shiftregister bits #3 - #6 on LCD data inputs D4-D7.
// Shiftregister bit  #7 - used for enabling the Enable puls.
// LCD R/!W (or rw) hardwired to GND (write to LCD only, no reading from)
//
// USAGE: ShiftRegLCD LCDobjectvariablename(Datapin, Clockpin, Enablepin or TWO_WIRE [, Lines [, Font]]])
//   where Lines and Font are optional.
//     Enablepin: can be replaced by constant TWO_WIRE, if using only 2 wires.
//     Lines: 1 or 2 lines (or more if possible)
//     Font : 0 or 1, small or big font (8 or 10 pixel tall font, if available).

#include <ShiftRegLCD.h>

ShiftRegLCD srlcd(8, 9, 7,2,1);

void setup()
{
  // Print a message to the LCD.
  pinMode(10,OUTPUT);
  analogWrite(10,128);
}

void loop()
{
  showValues();
  delay(5000);
}


void showValues() {
  srlcd.setCursor(0, 0);
  srlcd.print("IN: ");
  srlcd.print(random(19,22));
  srlcd.write(223);
  srlcd.print("C   ");
  srlcd.setCursor(10, 0);
  srlcd.print("OUT: ");
  srlcd.print(random(0,15));
  srlcd.write(223);
  srlcd.print("C   ");

  srlcd.setCursor(0, 1);
  srlcd.print("IN: ");
  srlcd.print(random(60,75));
  srlcd.print(" %  ");
  srlcd.setCursor(10, 1);
  srlcd.print("OUT: ");
  srlcd.print(random(80,99));
  srlcd.print(" %  ");

  srlcd.setCursor(0, 2);
  srlcd.print("LD: ");
  srlcd.print(random(980,1040));
  srlcd.print(",");
  srlcd.print(random(0,99));
  srlcd.print(" hPa  ");

  srlcd.setCursor(0, 3);
  srlcd.print("W ");
  srlcd.print(random(10,25));
  srlcd.print(",");
  srlcd.print(random(0,9));
  srlcd.print("km/h  ");
 
  srlcd.setCursor(12, 3);
  srlcd.print("R ");
  srlcd.print(random(10,25));
  srlcd.print(" mm ");

}

Angeschlossen nach folgendem Schema:

Display ist ein 4x20.
1315  International / Deutsch / Re: Anfaenger sucht sowas wie ne WAIT funktion on: January 20, 2012, 01:02:45 pm
Außer Kraft setzen tut Dein while nichts. Aber ...

Der "normale" Programmablauf ist so, das "loop()" immer wieder aufgerufen wird. Damit wird auch Dein Clock-Code immer wieder ausgeführt. Was Du mit Deinem while machts ist innerhalb der Funktion loop() mit dem while solange zu warten, bis das Ergebnis "digitalRead(gateStatus);" den Wert "1" liefert. Damit bleibt Dein Programm an dieser Stelle stehen, bis das eintritt.
1316  International / Deutsch / Re: Fehler bei Änderung einer Variable wo ist der Fehler on: January 20, 2012, 12:58:06 pm
Dein Problem ist das "int statusKlappe = 1" bzw. "int statusKlappe = 0"
Beispiel:
Code:
if (temperatur <= 50 && statusKlappe == 0)
      {
          digitalWrite (klappenSteuerung2, HIGH);
      }
    if (strom >= 250)
      {
        digitalWrite (klappenSteuerung2, LOW);
        digitalWrite (klappenSteuerung1, LOW);
        int statusKlappe = 1;
      }   

Durch das "int" vor dem Namen deklarierst Du eine lokale Varibale, welche die globale "überdeckt". Die lokale Variable ist aber bei jedem Durchlauf deiner loop-Funktion wieder "0". Lass das "int" weg und Du verwendest die globale Variable. Damit sollte es gehen.
1317  International / Deutsch / Re: arduino bluetooth iphone ohne jailbreak on: January 19, 2012, 02:17:23 pm
Ich glaube für Standardverbindungen / -profile braucht man bei Apple nix extra zu "kaufen". Ich habe eine einfache billig Bluetooth-Tastatur mit dem iPhone gekoppelt und das hat funktioniert. Solange also der verwendete BT Chip das HID oder ein anderes vom iPhone unterstütztes Profil kann, dann sollte das funktionieren. Dein Problem wird wohl er auf der Softwareseite des iPhone anfangen. Wenn Du nur die reine Kopplung (Gerät ist in der Nähe) brauchst, sollte das schon funktionieren, denn Du brauchst keine Interaktion vom iPhone. Wenn Du aber ein Programm auf dem iPhone brauchst, das auf Daten vom Arduino reagiert oder Daten an den Arduino schickt, dann mußt Du das programmieren und irgendwie auf Dein iPhone bekommen. Das geht aber nur, wenn Du eine iOS Developer "Lizenz" hast, die jährlich Geld kostet.
Es gibt auch spezielle HTML-Libs die auf dem iPhone verwendet werden können, wo man per Javascript z.B. auf die GPS Daten zugreifen kann, allerdings weiss ich nicht, ob man auch auf gekoppelte BT-Geräte zugreifen kann.
1318  International / Deutsch / Re: Ethernet GET on: January 19, 2012, 02:07:55 pm
Ok, so ganz klar ist das irgendwie nicht was Du machen willst.

1) Der Aufruf "http://arduino.tbspace.de/ctrl.php?vid=01011&did=2&ste=1" geht direkt auf den Arduino, der als Webserver läuft. Dann kannst Du Dir das ctrl.php sparen, denn Du führst kein PHP auf dem Arduino aus, es reichen die GET Parameter, die Du dann aus dem HTTP Request extrahieren musst.

2) Du sprichst einen Webserver an auf dem einem PHP-Script die Werte übergeben werden, die dann irgendwie an den Arduino übermittelt werden. z.B. über die serielle Konsole.

Außerdem sagst Du erst was von 3 dann von 4 Werten.

Für den Arduino gibt es verschiedene Shields und Erweiterungen, die eine Ethernet-Schnittstelle haben. Damit kannst Du einen einfachen Webserver aufsetzen, allerdings mußt Du immer daran denken, das Speicher und Leistung des Controllers begrenzt sind. Es gibt hier diverse Threads im Forum die sich mit den daraus resultierenden Problemen auseinandersetzen. Wenn Du schon einen Server hast, auf dem ein Webserver läuft, kannst Du an dessen USB-Schnittstelle evtl. den Arduino anschliessen und dem dann über die serielle Konsole die Daten Deines Scriptes schicken. Der Voreil hier wären zum einen die Kosten (kein zusätzliches Ethernet Shield) und die bessere Kontrolle über die Webdaten. Denn auf dem Arduino kommen dann nur die "gefilterten" Daten an.
Mario.
1319  International / Deutsch / Re: Neu hier und gleich ein paar Fragen on: January 19, 2012, 10:21:39 am
Was spricht gegen ein direktes Anschliessen der Hintergrundbeleuchtung an einen PWM Port?
1320  International / Deutsch / Re: Eclipse - Arduino Kommunikation on: January 19, 2012, 08:23:23 am
Dein Problem scheint schon ein Java-Problem zu sein. Wo bekommt die Methode "writeData()" denn das output her, das sie verwendet? Ist das denn überhaupt initialisiert? Poste am besten mal die dazugehörige Java-Klasse vollständig.
Mario.
Pages: 1 ... 86 87 [88] 89 90 ... 94