Show Posts
Pages: 1 2 3 [4] 5 6 ... 94
46  International / Deutsch / Re: Frage zu AnalogRead() on: December 24, 2013, 10:27:16 am
Leider kann das so nicht funktionieren. Da Du nur einen Widerstand hast, fallen die 5V IMMER über dem Widerstand ab, egal welche Größe der gerade aufgrund des Lichteinfalls hat.
Was Du brauchst ist ein Spannungsteiler (siehe Wikipedia).
Also 2 Widerstände, einen festen und den lichtempfindlichen. Die Spannung misst Du dann über dem veränderlichen Widerstand.
Siehe auch hier:
http://www.arduino-tutorial.de/2010/06/analog-in/
Mario.

Hehe: 12 Sekunden zu langsam :-)
47  International / Deutsch / Re: Weihnachts Grüße............................. on: December 24, 2013, 10:23:16 am
Auch von mir die besten Wünsche zum Weihnachtsfest. Lasst Euch reich mit kleinen blinkenden Dingen beschenken :-)
Mario.
48  International / Deutsch / Re: Dynamische Speicherallozierung on: December 23, 2013, 09:20:08 am
Klingt plausibel, passt aber nicht zu folgender Ausgabe:
Code:
void setup()
{
Serial.begin(9600);
uint8_t* ptr1 = (uint8_t*) malloc(32);
uint8_t* ptr2 = (uint8_t*) malloc(32);
uint8_t* ptr3 = (uint8_t*) malloc(32);
uint8_t* ptr4 = (uint8_t*) malloc(32);
Serial.print((word)ptr1,HEX);
        Serial.print(" @ ");
Serial.println((word)&ptr1,HEX);
Serial.print((word)ptr2,HEX);
        Serial.print(" @ ");
Serial.println((word)&ptr2,HEX);
Serial.print((word)ptr3,HEX);
        Serial.print(" @ ");
Serial.println((word)&ptr3,HEX);
Serial.print((word)ptr4,HEX);
        Serial.print(" @ ");
Serial.println((word)&ptr4,HEX);
}
void loop()
{

}
Quote
1D3 @ 8EC
1F5 @ 8EE
217 @ 8F0
239 @ 8F2
Wie man sieht, liegen die Variablen ptr1 bis ptr4 ganz woanders.

Mario.
49  International / Deutsch / Re: Dynamische Speicherallozierung on: December 23, 2013, 07:12:54 am
Spannend finde ich, das die einzelnen Bereiche noch 2 Bytes auseinander liegen. Sprich zwischen den Pointern liegen 34 Bytes, nicht 32. Somit werden jedesmal 2 Byte verschwendet. Wäre interessant zu wissen, wofür die gebraucht werden.
Mario.
50  International / Deutsch / Re: UDP Befehle Senden on: December 23, 2013, 07:06:12 am
Poste mal den vollständigen Code mit dem Du sendest. UDP ist eigentlich kein "Hexenwerk". :-)
51  International / Deutsch / Re: Dynamische Speicherallozierung on: December 23, 2013, 07:05:14 am
Naja, "*ptr" liefert aber das erste Byte Deines Puffers, nicht den Pointer selbst. Der "*" vor dem Variablennamen dient zum "dereferenzieren" des Pointers.
Folgender Code liefert die Adressen der Pointer:
Code:
void setup()
{
Serial.begin(9600);
uint8_t* ptr1 = (uint8_t*) malloc(32);
uint8_t* ptr2 = (uint8_t*) malloc(32);
uint8_t* ptr3 = (uint8_t*) malloc(32);
uint8_t* ptr4 = (uint8_t*) malloc(32);
Serial.println((word)ptr1,HEX);
Serial.println((word)ptr2,HEX);
Serial.println((word)ptr3,HEX);
Serial.println((word)ptr4,HEX);
}
void loop()
{

}
Der Cast auf "word" ist notwendig, da Serial.println() mit einem Pointer auf ein Byte nix anfangen kann.

Mario.
52  International / Deutsch / Re: Online Abfrage von Benzin Preisen on: December 22, 2013, 08:16:43 am
Nein, eigentlich sollte das passen. Hab das selbst gerade mal getestet mit dem einfache WebClient Beispiel der Ethernet-Lib.
Klappt recht gut. Allerdings wird das Parsen der HTML-Daten spannend, da die Webseite 58.000 Bytes groß ist.
Mit dem Textfinder klappt das aber recht gut:
Ausgabe auf dem Serial Monitor:
Quote
connecting...
connected
Tankstelle 1
Wilms-Wickrath, Dieselstr. 14-20, 1.449 Euro
Tankstelle 2
OIL!, Karlstrasse  59, 1.479 Euro
Tankstelle 3
Shell, HARDTER STR. 133, 1.489 Euro
Tankstelle 4
Shell, MARIE-BERNAYS RING, 1.489 Euro
Tankstelle 5
Shell, DUVENSTRASSE. 339, 1.499 Euro
Tankstelle 6
TOTAL, DAHLENER STR. 520, 1.519 Euro

Hier der Code dazu:
Code:

#include <SPI.h>
#include <Ethernet.h>
#include <TextFinder.h>

byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
char server[] = "www.clever-tanken.de";    // name address for Google (using DNS)
EthernetClient client;

TextFinder finder( client);

char preis1[10];
char preis2[5];
char tankstelle[100];
char adresse[100];

void setup() {
 // Open serial communications and wait for port to open:
  Serial.begin(9600);
   while (!Serial) {
    ; // wait for serial port to connect. Needed for Leonardo only
  }

  // start the Ethernet connection:
  if (Ethernet.begin(mac) == 0) {
    Serial.println("Failed to configure Ethernet using DHCP");
    Ethernet.begin(mac);
  }
  // give the Ethernet shield a second to initialize:
  delay(1000);
  Serial.println("connecting...");

  // if you get a connection, report back via serial:
  if (client.connect(server, 80)) {
    Serial.println("connected");
    // Make a HTTP request:
    client.println("GET /tankstelle_liste?spritsorte=7&r=5&ort=41189&lat=&lon= HTTP/1.1");
    client.println("Host: www.clever-tanken.de");
    client.println("Connection: close");
    client.println();
  }
  else {
    // kf you didn't get a connection to the server:
    Serial.println("connection failed");
  }
}

void loop()
{
  int counter=1;
  if (client.connected()) {
    while(finder.find("addPoi")) {
       finder.getString("class=\"price\">","<",preis1,10);
       finder.getString("<sup>","</sup>",preis2,5);
       finder.getString("location_name\">","</div>",tankstelle,100);
       finder.getString("street_number\">","</div>",adresse,100);
       Serial.print("Tankstelle ");
       Serial.println(counter++);
       Serial.print(tankstelle);
       Serial.print(", ");
       Serial.print(adresse);
       Serial.print(", ");
       Serial.print(preis1);
       Serial.print(preis2);
       Serial.println(" Euro");
       
    }
  client.stop();
  }
  while(1) {};
}
53  International / Deutsch / Re: Wetter Server mit Api oder Aps vor Server Name funktioniert nicht on: December 21, 2013, 05:50:52 am
Das Du irgendeinen "default" Text bekommst, wenn Du nur die IP per HTTP aufrufst, ist normal. Das Ganze nennt sich "virtual namend host". (siehe Wikipedia) Damit ist es möglich, das ein Webserver mit nur einer IP auf Anfragen für mehrere Domains sinnvoll antworten kann. Dafür ist der Parameter "Host: www.irgendwas..." zuständig, den Du beim Client-Aufruf mit angeben mußt. Dein Browser machte das automatisch, wenn Du statt der "62.138.109.40" den Domainnamen "api.wetter.com" verwendest.

Wie bereits geschrieben, bau erstmal ein einfaches Script, das nur die Seite Zeichen für Zeichen ausliest. Wenn Du das hast, kannst Du das hier posten, dann können wir schauen ob irgendwo noch ein Fehler drin steckt.
Mario.
54  International / Deutsch / Re: Online Abfrage von Benzin Preisen on: December 21, 2013, 05:42:53 am
Am Beispiel einer Tankstelle im Bereich meines Wohnortes würde es wie folgt aussehen:
Code:
client.println("GET /detail?id=14734438&t=WILMS%2C Dieselstr. 14-20%2C Mönchengladbach HTTP/1.1");
client.println("Host: http://mehr-tanken.de")
Kurze Anmerkung hierzu, das "http://" vor dem Eintrag "Host: http://mehr-tanken.de" muss weg.
Der HTTP Parameter "Host" bekommt nur den Servernamen.
Mario.
55  International / Deutsch / Re: Wetter Server mit Api oder Aps vor Server Name funktioniert nicht on: December 20, 2013, 06:18:02 am
OK, das ist aber nicht weiter von Bedeutung. Es ist halt nur so, das der Name keiner eindeutigen IP zugeordnet wird, sondern verschiedenen. Wichtig ist aber, das überhaupt eine IP rauskommt.

Ich würde an Deiner Stelle erstmal schrittweise vorgehen. Bau ein einfaches Script, das erstmal nichts anderes macht als sich mit dem Server zu verbinden. Einen HTTP GET Request losschickt, das macht Dein Script ja schon und dann nur noch die Rückantwort des Servers auf die serielle Schnittstelle schreibt, ohne weitere Verarbeitung.
Am einfachsten passt Du Dir dafür das "WebClient" Example aus der Ethernet-Library an.
Den gleichen Aufruf solltest Du parallel auch im Browser testen und dann schauen was rauskommt.
Erst wenn das klappt, fängst Du an die Daten auseinander zu nehmen.
Unabhängig davon könntest Du auch anfangen die statischen Strings in den Flash-Speicher auszulagern, um SRAM zu sparen, alleine der GET Request sind ja schon eine Menge Bytes.
Mario.

56  International / Deutsch / Re: Wetter Server mit Api oder Aps vor Server Name funktioniert nicht on: December 20, 2013, 05:15:11 am
Versuche mal
Code:
char serverName[] = "http://api.wunderground.com";
Das kann so aber nicht funktionieren. Das "http://" hat vor dem Servernamen beim Connect nix zu suchen. Das ist lediglich die Angabe des Protokolls, die z.B. ein Browser verwendet um zum Einen den richtigen Port (80, oder 443 bei https) und zum Anderen das richtige Protokoll (HTTP) zu nutzen. Das "http://" gehört aber NICHT zum Servernamen.
Korrekt müßte also sein:
Code:
char serverName[] = "api.wunderground.com";
[/quote]
Wird denn von Deinem Arduino der Name überhaupt korrekt aufgelöst? Sprich wird aus dem "api.wunderground.com" denn auch die IP "2.19.56.120"?
Mario
57  International / Deutsch / Re: Intervall mit ansteigender Zeitspane on: December 14, 2013, 02:13:52 pm
... und wieder einmal das rundum-sorglos Paket. Schade eigentlich.
@Jurs: Ich finde es gut das Du den Leuten hier helfen möchtest, aber es hatte sicher einen Grund das z.B. Uwe gerade KEIN Beispiel gepostet hat. Der Gedanke dabei heißt: "Hilfe zur Selbsthilfe". Wenn Du den Leuten direkt eine vollständige Lösung präsentierst, it das zwar Super für die konkrete Problemlösung, allerdings fällt der Lerneffekt recht klein aus. Und gerade bei solchen einfachen Problemen, ist es evtl. besser, wenn die Fragesteller die Lösung mit etwas Unterstützung selbst entwickeln.
Aber das ist nur meine persönliche Meinung. Hier geht es ja nicht um einen Wettkampf - "Wer hat am schnellsten eine tolle Lösung".
Mario.
58  International / Deutsch / Re: Wifi Roboter mit IP Camera on: December 12, 2013, 01:45:23 am
Schau Dir mal folgenden Thread an, da wurde das zwar mit PHP auf der PC-Seite gemacht, aber das Prinzip ist das gleiche. Steuerung des Arduino per TCP-Verbindung.
http://forum.arduino.cc/index.php?topic=102817.0
ZUsätzlich kannst Du Dir auch die Beispiele der IDE ansehen. Z.B. der ChatServer aus der Ethernet Bibliothek ist ein guter Ausgangspunkt.
Mario.
59  International / Deutsch / Re: Wifi Roboter mit IP Camera on: December 11, 2013, 03:15:45 am
Was denn für Beispielcode? Für den Motor zur Robotersteuerung? Für den Arduino-Ethernet zum Empfangen von Steuersignalen?
Am besten gehst Du erstmal schrittweise vor und zerlegst Dein Projekt in kleinere Aufgaben, die Du leichter bewältigen kannst.
Was hast Du denn auf dem Arduino schon an Code geschrieben? Wie groß sind Deine Erfahrungen generell mit Programmierung im allgemeinen und C/C++ im speziellen?
Dir wird hier sicher keiner das Programm für Deinen Roboter schreiben und Dir muss auch klar sein, das dieses Projekt nicht gerade klein ist. Da wirst Du je nach "Bastelerfahrung" sicher mehrere Monate dran arbeiten.
Ein guter Einstieg ist es, erstmal LEDs blinken zu lassen. So simpel wie das jetzt klingt, kann man damit schon eine Menge erreichen.
Ich würde z.B. erstmal 4 LEDs nehmen. Zwei repräsentieren den linken Antriebsmotor, zwei den rechten. Je eine LED für Vorwärts und eine für Rückwärts.
Dann schriebst Du einen kleinen Sketch der die LEDs erstmal generell leuchten, blinken etc. läßt. Wenn das klappt, dann kommt Code dazu, der Daten die über die serielle Schnittstelle kommen interpretieren kann, um damit die LEDs (vorwärts, rückwärts, rechts, links etc.) anzusteuern. Wenn das klappt, wird der Code auf die Netzwerkklassen übertragen, damit man über eine Netzwerkverbindung die LEDs steuern kann. wenn das klappt, dann macht man sich (das kann aber auch parallel geschehen) an die Motorsteuerung. Da Dein Roboter recht groß ist, dürften da auch einige spannende technische Herausforderungen auf Dich warten.
Wichtig ist aus meiner Sicht, das Du Dir immer nur kleine Teilaufgaben vornimmst, die Du auch bewältigen kannst. Sonst verlierst Du schnell die Lust daran, wenn es nicht voran geht.
Mario.
60  International / Deutsch / Re: Ethernetshield: Webserver aufsetzen on: December 10, 2013, 08:02:39 am
Weiß jemand ob es WordPress Plugins gibt um eine Arduino Kommunikation einzubinden?
Wenn es eh eine Webseite gibt, dann würde ich dem Arduino kein HTTP aufzwingen, da hier viel zu viel Overhead entsteht. Lieber mittels PHP vom Webserver direkt per TCP auf den Arduino zugreifen über ein eigenes, passendes Protokoll und dann die Werte weiterverwenden.
Sowas hatten wir doch mal als Ventilsteuerung für eine Gartenbewässerung. Such mal "Arduino Ausgang per web schalten mit php" oder so ähnlich in der Suche. Falls ich den Beitrag wiederfinde, schreib ich ihn hier noch dazu.
Das war am Ende schon recht weit was die Kommunikation zwischen PHP und dem Arduino anging. Das am Ende in ein WP Plugin zu giessen sollte überschaubar sein. Über ein WordPress short_code könnte man dann Werte vom Arduino direkt in den Post/Page Text einbauen.
Mario.

Edit: Hier ist der entsprechende Thread: http://forum.arduino.cc/index.php?topic=102817.0
Pages: 1 2 3 [4] 5 6 ... 94