html Button mit Resetfunktion eines internen Zählers

Hallo liebe Community,
ich bin neu hier und beschäftige mich mit dem Arduino Uno Rev3 bzgl. der Uni.
Mein Projekt ist eine Lichtschranke (Laser auf LDR) welche via Ethernet abrufbar seien soll. So weit, so gut.
Der LDR verändert ja je nach Lichteinfall seinen Widerstand. Die Spannung lese ich an einem analogen Eingang des Arduino ein.
Wenn ein bestimmter Wert überschritten wird (hier 4< V) wird im Browser (alle 1,5 Sekunden wird refresht) angezeigt, dass jemand die Schranke unterbrochen hat. Gleichzeitig zählt ein Zähler mit.

Ich möchte nun, dass ich mit einem Button im Browserfenster diesen Zähler als client wieder auf 0 setzen kann.
Mein Problem ist, dass ich keine Ahnung habe, wie ich einen Button in html-Form so programmiert bekomme, dass er beim Draufklicken eine Variable auf 0 setzt.

Meine Informatikkenntnisse sind schlecht und ich weiß nicht weiter.

Moin,
was hast du denn bis dato auf dem Arduino laufen, dass musst du ja auch irgendwie programmiert haben, oder?
Diesen Code könntest du hier schonmal veröffentlichen.
Dann solltest du uns sagen, was für Module/Shields du ansteuerst (ist da eine Netzwerkkomponente mitdabei) oder ob deine HTML-Seite auf nur einem Rechner liegen soll!
Auf jeden Fall musst du dir das Serial.read() und SELFHTML-Wiki. Dann weißt du schon in etwa wie ein Input ausgewertet wird und wie man einen Input per HTML/PHP erzeugen kann!
Anschließend musst du diebeiden Komponenten "nur" noch verbinden, Blutooth,Ethernet und WLAN sind aus meiner sicht die einfacheren Möglichkeiten. Du könntest sicherlich auch per Scriptekombination aus HTML /Javascript oder cgi-bin irgendwie die Konsole ansteuern.
mfg
Balli

Auf dem Arduino steckt ein Ethernet-Shield.

Hier mein Code:

/*
Wichtig:
 * Ethernetshield braucht die digitalen Pins: 10, 11, 12, 13
 * Analog inputs attached to pins A0 through A5 (optional) 
*/

#include <SPI.h> // integrierte Bibliotheken
#include <Ethernet.h> // integrierte Bibliotheken

int ldrPin = 0;     // Lichtsensor (LDR) auf Analog 0
float lightVal = 0; // float Variable für Spannung des "Schalters" --> float: kann Kommazahlen darstellen
boolean zaehler = 0; // Variable für den Zähler


// Ethernet-Zeug
byte mac[] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; // MAC-Adresse des Arduino bestimmen
IPAddress ip(192,168,178, 2); // IP-Adresse des Arduino bestimmen
byte subnet [] = {255,255,255,0}; // Subnetzmaske des Arduino bestimmen
byte gateway [] = {192,168,178,1}; // Standard-Gateway des Arduino bestimmen
EthernetServer server(80); // Standardport für http-Abfragen = 80 (Firefox, Skype etc.)



void setup() {
 
  Ethernet.begin(mac, ip,  gateway, subnet);
  server.begin();
  Serial.print("Verbindung wird aufgebaut...");
  Serial.println(Ethernet.localIP());
  Serial.begin(9600);
  
}



void loop() {
  
  // Auf Client warten
  EthernetClient client = server.available();
 
  if (client) {
   server.println("HTTP/1.1 200 OK");
   server.println("Content-Type: text/html");
   server.println();
   server.print("<HTML><HEAD><TITLE>");
   server.print("Alarmanlage (ARDUINO)");
   server.print("</TITLE>");
   
   server.print("<meta http-equiv='refresh' content='1,5'>");
   
   server.print("</HEAD><BODY>");
   server.print("<B>ALARMANLAGE AKTIV</B>
");
   server.print("Alarmanlage (ARDUINO) ist seit ");
   server.print(millis());
   server.print(" ms online.
");
   server.print("Insgesamt ");
   server.print(zaehler);
   server.print(" Einbrecher!");
      
   // Alarmanlagenteil
   lightVal = ((float) analogRead(ldrPin)/1023)*5; // ((Gemessene Volt/1023)*5) 
   Serial.println(lightVal); // für den Serial Monitor
   
   server.print("
");
   server.print(lightVal);
   server.print(" Volt 
");
   
   if (lightVal > 4 ) // gleich oder größer 4 Volt: Schalter wird gedrückt
   {
   server.print("
<B>Warnung</B>
");
   server.print("!!!Einbrecher!!!");
   zaehler++;
  
   }
   else
   {
    server.print("");
   }
   
   server.print("</BODY></HTML>");
// Daten senden, daher ist eine kurze Verzoegerung notwendig
delay(10);
// Verbindung trennen
client.stop();
}
}

Was du da geschrieben hast, leuchtet mir ein und danke für den Link. Aber dafür fehlt mir dann einfach die Kenne.

Also ein HTML-Button solltest du definitiv von alleine schaffen zu programmieren, wenn du soweit gekommen bist-probier es einfach mal aus und poste deinen HTML Code, den kriegen wir dann schon verbessert. Du erzeugst einfach eine Textdatei, änderst die Endung und bearbeiten kannst du den Spaß in einem Editor deiner Wahl(z.B. pspad) und die Datei ziehst du dann einfach in Browser.
Ansonsten gibt es hier ein Thread in dem die Geschichte sehr schön Schritt für Schritt erklärt wurde-da ging es um eine Gewächshaussteuerung.
mfg
balli

Sorry, aber ich glaube Dein Ansatz ist schon etwas fehlerhaft. So wie Dein Programm arbeitet, wird nur in dem Moment die Lichtschranke geprüft, wenn gerade die HTML-Seite an einen Client geliefert wird. Selbst wenn Du den HTML-Code so baust, das der Browser die Seite jede Sekunde aufruft, ist die Wahrscheinlichkeit immer nocht ziemlich klein, das die Abfrage genau im richtigen Moment kommt.
Bevor Du Dir also Gedanken um das Zurücksetzen des Zählers machst, würde ich erstmal eine bessere Lösung zum Auslesen der Lichtschranke bauen.

Der erste Ansatz könnte sein, das das Auslesen und Zählen innerhalb der loop() Funktion zu machen, aber außerhalb des Webserver-Codes. Innerhalb des Codes wird dann nur noch die Variable des Zählers verwendet.

Was das Auswerten eines Buttons angeht, das ist nicht weiter kompliziert, da Du ja nur ein "Flag" setzen willst, das dem Code sagt, das der Zähler wieder auf Null gesetzt werden soll. Also baue dafür erstmal einen einfachen HTML-Code (plain HTML nicht im Arduino) der ein Tag und innerhalb des Formulars ein <input ..> Tag hat. Das Formular per "GET" () zu übergeben macht die Sache auch leichter, da dann dein Input-Button in der URI codiert ist und Du recht einfach per String-Suche nach dessen HTML-Namen suchen kannst.

Mario.

Hallo,
erstmal danke für eure Hilfe. Ich hab jetzt übers Wochenende keine Zeit. Ich probiers nächste woche nochmal und wende eure Hilfen an.
Gruß