Show Posts
Pages: [1]
1  International / Deutsch / Re: Plötzlich komisches verhalten Uno/Mega fehlerhafte Impulse on: November 25, 2012, 04:16:31 pm
Ich zähle mit einem Reflexoptokoppler MRL601 die Impulse meines Gaszählers . Die Impulse werden nach jedem Zählerdurchlauf an der Ziffer 6 erkannt, hier reflektiert ein kleiner Reflexpunkt Das funktioniert mit der MRL601 sehr gut!

Von der Schaltung geht es auf PIN 7 zum Arduino, dort habe ich die Interrupt Schaltung von  der Familie Kriwanek benutzt siehe Code im Link.

http://www.kriwanek.de/arduino/grundlagen/182-pin-change-interrupts-grundlagen.html

NUN ZUM PROBLEM:

Auch ich habe den Eindruck, dass mit zunehmender Laufzeit der Zähler vom Arduino zu viel zählt. Ich habe wirklich lange vor dem Impulsgeber gesessen und die Impulse kontrolliert, nach jedem Impuls habe ich den Zählerstand im Arduino kontrolliert, es war immer alles ok, aber nach 2 - 5 Stunden (ich war nun nicht mehr im Keller :-)   ) sind plötzlich Abweichungen dar, und es ist immer so, dass der Arduino zu viel gezählt hat, nicht sehr viel aber ein paar Ticks schon.


Ich kann es mir nicht erklären, habe auch schon andere "ZählCodes" verwendet, es ist immer das gleiche Ergebnis, die gezählten Ticks sind zu hoch...


Hat jemand eine Idee oder Vorschlag was ich tun kann

(Bin noch Anfänger und habe mir die Scripts auch nur zusammengebastelt, bitte um Verständnis)

Danke
Jürgen


2  International / Deutsch / Re: Webserver einen Korrekturwert übermitteln on: November 19, 2012, 05:08:32 pm
Hi, ihr habt mir alle prima geholfen und den Weg geebnet, dadurch bin ich weitergekommen und hatte gestern wirklich einen zufriedenen Geburtstag. Danke nochmals an alle!! smiley-mr-green
3  International / Deutsch / Re: Webserver einen Korrekturwert übermitteln on: November 17, 2012, 02:52:35 pm
Hurra, kann den Wert nun auslesen, am Ende hat ein clear auf den String readstring gefehtl nun geht es ... Allerdings kann der Code nur 2 Stellen auslesen, mein Wert hat aber 6 Stellen, kannst du mir zeigen wie man das auf 6 Stellen erweitern kann...

Danke.
4  International / Deutsch / Re: Webserver einen Korrekturwert übermitteln on: November 17, 2012, 02:18:06 pm
hallo hk007,

danke für deine  Hilfe trotz meiner beharrlichen Fragen, ich, ich hab nun seit deinem letzten Posting versucht den Code in das Beispiel von Arduino Ethernet, Webserver einzubauen, leider gelingt mir das nicht, ich habe die URL aus deinem Beispiel benutzt, es hätte mir gereicht wenn nur die Temp von 66  irgendwie angezeigt worden wäre.

Ich bekomme es einfach nicht hin.


Einmal ist es mir gelungen, ich habe den Eindruck, dass man dann im laufendne Betrieb keinen neuen Wert posten kann, nur über einen RESET am Arduino scheint er dann den neuen Wert zu nehmen? Evtl. habe ich dein Coding an einer verkehrten Stelle eingebunden...


Wäre es dir möglich mir ein lauffähiges Codingbeispiel zur Verfügung zu stellen, mit deiner Beispiels URL.

http://192.168.1.177/?AbschaltTemp=98

Das wäre die Rettung und ich hätte morgen einen schönen Tag :-) Geburtstag

Danke
Jürgen


/*
  Web Server
 
 A simple web server that shows the value of the analog input pins.
 using an Arduino Wiznet Ethernet shield.
 
 Circuit:
 * Ethernet shield attached to pins 10, 11, 12, 13
 * Analog inputs attached to pins A0 through A5 (optional)
 
 created 18 Dec 2009
 by David A. Mellis
 modified 9 Apr 2012
 by Tom Igoe
 
 */

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


String readString = String(100);
int AbschaltTemp = 0;

// Enter a MAC address and IP address for your controller below.
// The IP address will be dependent on your local network:
byte mac[] = {
  0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
IPAddress ip(192,168,1, 177);

// Initialize the Ethernet server library
// with the IP address and port you want to use
// (port 80 is default for HTTP):
EthernetServer server(80);

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 and the server:
  Ethernet.begin(mac, ip);
  server.begin();
  Serial.print("server is at ");
  Serial.println(Ethernet.localIP());
}


void loop() {
  // listen for incoming clients
  EthernetClient client = server.available();
  if (client) {
    Serial.println("new client");
    // an http request ends with a blank line
    boolean currentLineIsBlank = true;
   
 
   
    while (client.connected()) {
      if (client.available()) {
        char c = client.read();
 
 
 
 
        Serial.write(c);
 
         
         
 //******************************************       
        if (readString.length() < 100) {
           readString = readString + c;
           }
             
        Serial.print(c);
        if (c == '\n' && currentLineIsBlank) {
//           Serial.println ("--------------------------");
//           Serial.println (readString);
//           Serial.println ("--------------------------");
  //******************************************         
         }
       
       
 
       
       
        // if you've gotten to the end of the line (received a newline
        // character) and the line is blank, the http request has ended,
        // so you can send a reply
        if (c == '\n' && currentLineIsBlank) {
          // send a standard http response header
          client.println("HTTP/1.1 200 OK");
          client.println("Content-Type: text/html");
          client.println("Connnection: close");
          client.println();
          client.println("<!DOCTYPE HTML>");
          client.println("<html>");
                    // add a meta refresh tag, so the browser pulls again every 5 seconds:
          client.println("<meta http-equiv=\"refresh\" content=\"5\">");
         
         
                 
   //und dann hier die Abfrage nach dem enthaltenen Text:
   // AbschaltTemperatur
          if(readString.indexOf("AbschaltTemp") > -1){
             int DP = (readString.indexOf("="));   //Zeichen '=' suchen
             AbschaltTemp = ((int(readString.charAt(DP+1))-48)*10) + (int(readString.charAt(DP+2))-48); // die 2 Zeichen nach dem '=' in Zahl wandeln
          }     
       
         
         
         
         
         
         
          // output the value of each analog input pin
          for (int analogChannel = 0; analogChannel < 6; analogChannel++) {
            int sensorReading = analogRead(analogChannel);
            client.print("analog input ");
            client.print(analogChannel);
            client.print(" is ");
            client.print(sensorReading);
           client.println("neue Temp");
            client.print(AbschaltTemp);   
            client.println("<br />");   
         
           
          }
          client.println("</html>");
          break;
        }
        if (c == '\n') {
          // you're starting a new line
          currentLineIsBlank = true;
        }
        else if (c != '\r') {
          // you've gotten a character on the current line
          currentLineIsBlank = false;
        }
      }
    }
   
   
   
   
   
    // give the web browser time to receive the data
    delay(1);
    // close the connection:
    client.stop();
    Serial.println("client disonnected");
  }
}



Mein Coding:

5  International / Deutsch / Re: Webserver einen Korrekturwert übermitteln on: November 17, 2012, 12:30:51 pm
Es tut mir leid, nach vielen Suchen bin ich nun wieder am Anfang. Ich scheitere bereits am Aufruf readstring, google sagt es ist die Lib Wstring.h, gefunden, eingebunden, läuft dennoch nicht.

Fehler: Readstring was not declarde in this scope....

Bitte nochmals um Hilfe, vielen Dank im Voraus.

Jürgen
6  International / Deutsch / Re: Webserver einen Korrekturwert übermitteln on: November 17, 2012, 10:55:48 am
Hi, danke werde ich versuchen.

Der Webserver gibt den aktuellen Zählerstand des Gaszählers aus , der Parameter Wert soll ein Korrekturwert sein, der den Zählerstand korrigieren soll.

Viele Grüße
und nochmals Danke für Eure Geduld, kann sein dass ich noch eine Folgefrage habe, aber erst versuche ich es  smiley-grin

7  International / Deutsch / Re: Webserver einen Korrekturwert übermitteln on: November 17, 2012, 10:12:54 am
OK danke, nur  möchte ich den Wert intern verarbeiten und auf keiner Seite anzeigen, sorry für die Frage, aber ich verstehe noch zu wenig die Systematik. Der URL Parameter soll nur eingelesen werden und im Arduino Code verarbeitet, keine Ausgabe... Das Codebeispiel erzeugt doch eine Webseite oder? das möchte ich nicht, mir fehlt aber der Weg diesen Parameter auszulesen, HTTP GET wie rufe ich das so auf?

8  International / Deutsch / Re: Webserver einen Korrekturwert übermitteln on: November 17, 2012, 09:33:22 am
mhm

bin mir nicht sicher ob es das ist was ich benötige, ich wollte es in einer URL mitgeben...
9  International / Deutsch / Webserver einen Korrekturwert übermitteln on: November 17, 2012, 06:22:50 am
Hallo,
ich möchte gerne ein auf dem Arduino laufenden Webserver einen Korrekturwert mitgeben (Zählerstand meines Gaszählers wird dort erfasst) da er ab und zu einen kleinen Versatz hat.
Die Idee ist, ich gebe über die URL zum Webserver einen Parameter mit, den ich irgendwie im Coding abfrage und dann den aktuellen Zählerstand durch den neuen ersetze, sozusagen ein Korrekturwert.

Ich habe jetzt schon eine Zeit gesucht, finde aber kein Beispiel, geht das überhaupt? Hat jemand ein Muster für mich?

Danke für die Hilfe.

Gruß Jürgen
Pages: [1]