automatiseren generator

Als je Arduino geinstalleerd hebt zit Software Serial gewoon onder c:\programfile\arduino\libraries\soft... oid

Aha, Github, ik kreeg het toen gewoon eventjes niet voor elkaar, en SoftwareSerial zit i.d.d. gewoon stanaard erbij, maar kleurde niet rood in de scetch.

Anyway, dat is allemaal opgelost, en ik ben aan het studeren.
Maar Jo3ri's programma is te moeilijk.

Gelukkig heb ik dankzij dat programma een vergelijkbaar programma gevonden, wat eenvoudiger is.
Gewoon op de Arduino playground.
Arduino Playground - WebServer.

Deze doet ook verschillende pagina's.

Nu kan ik al mijn sensortjes op de ene pagina laten zien.
De knopjes voor aan/uit moeten dan op een andere pagina.
En dan kunnen op de hoofdpagina, die 2 samengevoegd worden, middels iframes.
Althans, dat is de bedoeling.

In mijn proefscetch ging dat nog prachtig, dan nam ik de waarden uit de httpheader, etc.
Maar nu loopt dat door de war, ivm dat het programma zelf ook die httpheader gebruikt, denk ik.

Ik kan het niet uitvogelen.

Als ik maar wist, hoe ik erachter komt, hoe die website het gedeelte achter het ip adres aan de Arduino doorgeeft.

Dus b.v. 192.168.1.90/Het_gedeelte_achter_het_ip_adres

Dan schrijf ik de rest wel zelf, zonder moeilijk gePROGMEM en ge-strcat(compare,load); enz.

Ah, krijg nou wat.

Het gedeelte achter het ip adres, staat gewoon in de HttpHeader.

Krijg nou wat.
Ik zit niet goed te kijken.

Okee, nu wordt het verder gemakkelijk.

Ben wel benieuwd naar je uiteindelijk programma, please post it

Ben wel benieuwd naar je uiteindelijk programma, please post it

Een beetje geduld nog.

Tip !!!

zonder PROGMEM zal je 2kb grote SDRAM vol lopen en zelfs overlopen (als je alle html gewoon in de code zet) je kan zelf controleren door alle karakters en spaties te tellen. SDRAM is ongeveer 2000 karakters. En libraries nemen soms al heel wat van deze SDRAM in beslag.

Je sketch doet dan plots vreemd, of blijft hangen, maar je zal nooit weten waarom. Hierom dus.

Uit eigen evaring J03ri heeft overschot van gelijk
Met vriendelijke groet
Jantje

Het is niet mijn vak, dat programmeren, ik ben maar een domme schipper, en van SDRAM heb ik nog nooit gehoord.
Maar, ik heb een nieuwe proef-sketch, zonder PROGMEM, die het doet.

Getest, met breadbordje en ledjes, op pin 3-9, en 2 willekeurige sensortjes op A0 en A1.

Bij het verifieren van de sketch, zegt ie:
binery sketch size : 16716 bytes (of a 32256 byte maximum)
(Arduino UNO)

Nu wou ik die code wel opsturen, maar dan krijg ik een foutmelding:
The message exceeds the maximum allowed length (9500 characters).

Dus, komt ie nu in 2 of 3 keer

Deel 1:

#include <SPI.h>
#include <Ethernet.h>
#define MaxHeaderLength 256    //maximum length of http header required

byte mac[] = { 
  0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };   //physical mac address
byte ip[] = { 
  192, 168, 1, 90 };   // static ip of Arduino
byte gateway[] = { 
  192, 168, 0, 1 };  // gateway address
byte subnet[] = { 
  255, 255, 255, 0 };  //subnet mask
EthernetServer server(80);   //web server port

String HttpHeader = String(MaxHeaderLength); 
String Pagina = String(MaxHeaderLength);
String Dataregel = String(MaxHeaderLength);


int value = 0;  
int Pin = 0;

/*    SETUP   */ 

void setup(){
  //enable serial monitor
  Serial.begin(9600);
  //start Ethernet
  Ethernet.begin(mac, ip, gateway, subnet);
   //initialize variable
   
                                         //Pin 1,2 is Tx,Rx
   pinMode(3,OUTPUT);
   digitalWrite(3,LOW);
                                         // Pin 4 is voor SD
   for (int i=5; i < 10; i++){
       pinMode(i, OUTPUT);
       digitalWrite(i,LOW); 
   }
   
  HttpHeader="";
  Pagina="";
  Dataregel="";
 }

/*    LOOP     */

void loop(){

  // Create a client connection
  EthernetClient client = server.available();
  if (client) {
    while (client.connected()) {
      if (client.available()) {
         char c = client.read();
         
         //read MaxHeaderLength number of characters in the HTTP header
         //discard the rest until \n
         if (HttpHeader.length() < MaxHeaderLength){}
         
           //store characters to string
           HttpHeader = HttpHeader + c; 
                 
         //if HTTP request has ended
         if (c == '\n') { 
     
           // start of web page
           client.println("HTTP/1.1 200 OK");
           client.println("Content-Type: text/html");
           //client.println("<html><head></head><body>");
           client.println(); // haal dit weg, en het werkt niet meer, waarom???
           //client.println("Hela mundo");
           //client.println();
 
       zoek_pagina();
    
     if (Dataregel != ""){
        Data_afhandelen(); 
     }  

     if (Pagina == "/favicon.ico "){} //do nothing
      
     else {  
     if (Pagina == "/ "){
       hoofdpagina(client);
     }  
     else{   
     if (Pagina == "/sensors "){
       sensors(client);
     }
     else {
     if (Pagina == "/knoppen "){
       knoppen(client);}
       
     else {
     if (Pagina == "/knop_3 "){
       knop_3(client);}  
     
     else {niet_gevonden(client);
     }}}}
  
       //clearing strings for next read
       HttpHeader="";
       Pagina="";     
       Dataregel="";
       
    //stopping client
    delay(1);
    client.stop();
  
}}}}}}

Deel 2:

/*         HOOFDPAGINA             */

void hoofdpagina(EthernetClient client){

       char myChar = 34; // appeltroff
       
        client.print("<html><head></head><body>");
        
        client.print("<iframe src=");
        client.print(myChar);
        client.print("./sensors");
        client.print(myChar);
        client.print(" height=");
        client.print(myChar);
        client.print("100");
        client.print(myChar);
        client.print(" frameborder=");
        client.print(myChar);
        client.print("0");
        client.print(myChar);
        client.print("></iframe>");
        client.print("
");
        
        client.print("<iframe src=");
        client.print(myChar);
        client.print("./knoppen");
        client.print(myChar);
        client.print(" height=");
        client.print(myChar);
        client.print("230");
        client.print(myChar);
        client.print(" frameborder=");
        client.print(myChar);
        client.print("0");
        client.print(myChar);
        client.print("></iframe>");
        client.print("
");
        
        client.print("<iframe src=");
        client.print(myChar);
        client.print("./knop_3");
        client.print(myChar);
        client.print(" height=");
        client.print(myChar);
        client.print("50");
        client.print(myChar);
        client.print(" frameborder=");
        client.print(myChar);
        client.print("0");
        client.print(myChar);
        client.print("></iframe>");
        client.print("
");
        
        client.print("</body></html>");
   }

/*           SENSORS              */
   
void sensors(EthernetClient client){

      char myChar = 34; // appeltroff
          client.print("<html><head>");
          client.print("<meta http-equiv=");
          client.print(myChar);
          client.print("refresh");
          client.print(myChar);
          client.print("content=");
          client.print(myChar);
          client.print("1");
          client.print(myChar);
          client.print("></head><body>");

           client.print("
");
           client.print("Sensor A0 ");
           client.println(analogRead(A0));
           client.print("
");
           client.print("Sensor A1 ");
           client.println(analogRead(A1));
           client.print("
");
           client.print("
");
           client.print("</body></html>"); 
   }

/*            KNOPPEN               */
   
void knoppen(EthernetClient client){

           client.print("<html><head></head><body>");
           client.print("<form method=get>");
           client.print("
");
           
           for (int i=5; i < 10; i++){
              client.print("Pin ");client.print(i);
              client.print("<input type='radio' name=");
              client.print(i);client.print(" value='1' ");
              if (digitalRead(i)== 1) {client.print("checked=true ");}
              client.print("> aan     ");
              client.print("<input type='radio' name=");
              client.print(i);client.print(" value='0' ");          
              if (digitalRead(i)== 0) {client.print("checked=true ");}
              client.print("> uit
");               
              }  
              
           client.print("
");
           client.print("
");
           client.print("<input type=submit value=submit></form>");           
           client.print("</body></html>");
          }
 
/*           KNOP 3              */
 
 void knop_3(EthernetClient client){
   
      // Testknop,  fire at once
        
      char myChar = 34; // appeltroff
      Pin = digitalRead(3);
      
      client.print("<html><head></head><body>");
      client.print(" Pin 3 is ");
      if (Pin == 0){
        client.print("uit");
      }
      else { client.print("aan");
      }
      client.print("
");
      client.print("Zet Pin ");
      client.print("<a href=");
      client.print(myChar);
      client.print("./knop_3?3=");
     
      
      if (Pin == 0){
         client.print("1");
         client.print(myChar);
         
         
         client.print(">AAN");
         }
         else {
           client.print("0");
           client.print(myChar);
           client.print(">UIT");
         }
       client.print("</a>
");  
      }

/*            NOT FOUND              */
              
void niet_gevonden(EthernetClient client){
 
   client.print("<html><head></head><body>");
   client.print("
");
   client.print("Pagina niet gevonden");
   client.print("</body><html>");
   }

/*          DATA AFHANDELEN              */
   
void Data_afhandelen(){
 
     for(int i = 0;i <= Dataregel.length();i++){
      Pin=Dataregel.charAt(i)-48;;
      i++;i++;
      value=Dataregel.charAt(i)-48;
  
   digitalWrite(Pin,value);
   
   i++;//&
   
     }}
 
 /*           ZOEK PAGINA           */
     
 void zoek_pagina(){
          
              //zoek naar pagina's
 
          int index_start = HttpHeader.indexOf('/');
          int index_stop = HttpHeader.indexOf(' ',index_start);
 
         for (int i = index_start; i <= index_stop; i++){
         char c=  HttpHeader.charAt(i);
          Pagina =  Pagina + c;
         }
  
        if (Pagina.startsWith("/knoppen")) {  
        
          if (Pagina.length() > 9){
            if (Pagina.charAt(8) == '?'){
  
            int index_start = Pagina.indexOf('?');
            int index_stop = Pagina.indexOf(' ',index_start)-1;
     
            for (int i = index_start + 1; i <= index_stop; i++){
            char c=  Pagina.charAt(i);
            Dataregel =  Dataregel + c;
            }
  
            Pagina = "/knoppen ";
          
        }}}
        
        if (Pagina.startsWith("/knop_3")) {  
        
          if (Pagina.length() > 8){
            if (Pagina.charAt(7) == '?'){
       
            int index_start = Pagina.indexOf('?');
            int index_stop = Pagina.indexOf(' ',index_start)-1;
                 
            for (int i = index_start + 1; i <= index_stop; i++){
            char c=  Pagina.charAt(i);
            Dataregel =  Dataregel + c;
            }

            Pagina = "/knop_3 ";
          
        }}}}

Speciaal trots ben ik op de FIRE AT ONCE knop 3.
Dat iets dat zo ingewikkeld lijkt, zo makkelijk blijkt te zijn.

U allen dank, by the way.

Zonder de proefsketch van Joeri3, en de opmerkingen van anderen had dit mij niet gelukt.

Op naar de vervolg-problemen.

ik ben maar een domme schipper

integendeel, je hebt een project bedacht en tot een goed einde gebracht waarbij je eea geleerd hebt.
En ja over een jaartje kijk je naar je code en zie je zo een twee drie dingen die je dan anders zou doen, en dat blijft :wink:

U allen dank, by the way.

Zonder de proefsketch van Joeri3, en de opmerkingen van anderen had dit mij niet gelukt.

Heel graag gedaan.

Het is niet mijn vak, dat programmeren, ik ben maar een domme schipper, en van SDRAM heb ik nog nooit gehoord.

Net zoals robtillaart zegt: integendeel. Je hebt een probleem opgelost.

Over SDRAM: dat lijkt inderdaad niet makkelijk. Ik zal het zo eenvoudig mogelijk uitleggen.

Je hebt 3 soorten geheugen in onze Arduino's:

FLASHRAM, SDRAM, EEPROM.

FLASRAM is op een uno ongeveer 32KB en dient om je programma in TE BEWAREN (blijft erin staan ook als de stroom weg valt): binery sketch size : 16716 bytes (of a 32256 byte maximum)

SDRAM is op een uno 2KB en dient om het programma UIT TE VOEREN: het werkgeheugen (vergelijkbaar met de RAM uit een computer). Als je programma start, worden de variabelen in SDRAM geladen. Maar als je de stroom uitschakelt, is dit geheugen weer leeg.

bv byte knop1 = 15; gebruikt 1 byte uit het werkgeheugen (een byte kan een getal van 0 to 255 zijn)
bv client.print(""); neemt 26 byte uit het werkgeheugen (tel ze maar eens op, dan weet je hoeveel je gebruikt)

EEPROM is op een uno 1KB (of 1024 bytes) en kan ook zonder stroom bewaren (vergelijkbaar met een harde schijf op een computer) je kan er dus dingen in opslaan die bewaard blijven ook als je de stroom uitschakelt.

Veel succes verder

Nou, alles een beetje herschreven, en een nieuwe proefsketch gemaakt, voor de geinteresseerden.
Werkt op een proefbreadbordje.
Eerdaags hopelijk nieuwe updates.

Zoals gewoonlijk in 2 delen.

//Deze Werkt 
//this program is in the public domain
// published 17 jan 2013 @ http://arduino.cc/forum/index.php/topic,141106.0.html

#include <SPI.h>
#include <Ethernet.h>
#define MaxHeaderLength 256    //maximum length of http header required

byte mac[] = { 
  0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };   //physical mac address
byte ip[] = { 
  192, 168, 1, 90 };   // static ip of Arduino
byte gateway[] = { 
  192, 168, 0, 1 };  // gateway address
byte subnet[] = { 
  255, 255, 255, 0 };  //subnet mask
EthernetServer server(80);   //web server port

String HttpHeader = String(MaxHeaderLength); 
String Pagina = String(MaxHeaderLength);
String Dataregel = String(MaxHeaderLength);

int value = 0;  
int Pin = 0;
boolean Pressed = false;
boolean first_time = true;

//2 3 5 6 7 8 9

int knop = 0;       // dit wordt 2
int bedrijfsmagneet = 3;
int gloeispiraal =4;
int startmotor = 5;
int indicatie_led = 9;
int veiligheidsensor = A1;
int stroomsensor = A0;
int start_time = 8;
int gloei_time = 8;
boolean in_bedrijf = false;
boolean start = false;
boolean gloei = false;
boolean motorState = false;

//clock

 #define MAX_MILLIS_VALUE 34359738
unsigned long current_millis_value = 0;
unsigned long previous_millis_value = 0;
unsigned long m = 0;
int seconds = 0; 
int minutes = 0;
int hours = 0;
int days = 0;

int lastButtonState = HIGH; 
long lastDebounceTime = 0;
long debounceDelay = 50;
boolean buttonState; 

/*    SETUP   */ 

void setup(){
  //enable serial monitor
  Serial.begin(9600);
  //start Ethernet
  Ethernet.begin(mac, ip, gateway, subnet);
   //initialize variable
   
  HttpHeader="";
  Pagina="";
  Dataregel="";
  
  
  pinMode(knop, INPUT);
  pinMode(bedrijfsmagneet, OUTPUT);
  pinMode(gloeispiraal, OUTPUT);
  pinMode(startmotor, OUTPUT);
  pinMode(indicatie_led, OUTPUT);
  pinMode(veiligheidsensor, INPUT);
  pinMode(stroomsensor, INPUT);
  digitalWrite(knop, HIGH);

  digitalWrite(bedrijfsmagneet, LOW);
  digitalWrite(startmotor, LOW);
  digitalWrite(veiligheidsensor, HIGH);
  digitalWrite(stroomsensor, HIGH);
}
/*    LOOP     */

void loop(){

  // Create a client connection
  EthernetClient client = server.available();
  if (client) {
    while (client.connected()) {
      if (client.available()) {
         char c = client.read();
         
         //read MaxHeaderLength number of characters in the HTTP header
         //discard the rest until \n
         if (HttpHeader.length() < MaxHeaderLength){}
         
           //store characters to string
           HttpHeader = HttpHeader + c; 
                 
         //if HTTP request has ended
         if (c == '\n') { 
     
           // start of web page
           client.println("HTTP/1.1 200 OK");
           client.println("Content-Type: text/html");
           //client.println("<html><head></head><body>");
           client.println(); // haal dit weg, en het werkt niet meer, waarom???
           //client.println("Hela mundo");
           //client.println();
 
       zoek_pagina();
    
     if (Dataregel != ""){
        Data_afhandelen(); 
     }  

     if (Pagina == "/favicon.ico "){} //do nothing
      
     else {  
     if (Pagina == "/ "){
       hoofdpagina(client);
     }  
     else{   
     if (Pagina == "/sensors "){
       sensors(client);
     }
     else {
     if (Pagina == "/knoppen "){
       knoppen(client);}
       
     else {
     if (Pagina == "/knop_3 "){
       knop_3(client);}  
     
     else {niet_gevonden(client);
     }}}}
  
       //clearing strings for next read
       HttpHeader="";
       Pagina="";     
       Dataregel="";
       
    //stopping client
    delay(1);
    client.stop();
  
}}}}}

  if (motorState == true && digitalRead(stroomsensor) == HIGH) 
  {gloei = false; start = false; in_bedrijf = false; motorState = false; clock_reset();}  //motor is uitgevallen
  if (motorState == true && digitalRead(veiligheidsensor) == LOW) 
  {gloei = false; start = false; in_bedrijf = false; motorState = false; clock_reset();}  //veiligheidsensor is doorgeslagen naar massa

  clock();
  if (gloei == true && seconds >= gloei_time)
  {gloei = false; start = true; clock_reset();}
  if (start == true && seconds >= start_time)
  {start = false; in_bedrijf = false; clock_reset();}

  int reading = digitalRead(knop);
  if (reading != lastButtonState)
  { lastDebounceTime = millis();}
  if ((millis() - lastDebounceTime) > debounceDelay)
  {buttonState = reading;}
  lastButtonState = reading;
  
  digitalWrite(indicatie_led,buttonState);
  Serial.println(buttonState);
  
  if (buttonState == false && lastButtonState == true)
    {Pressed = true; delay(10);}
    
  if (Pressed == true)
     {if (in_bedrijf == true) {in_bedrijf = false; gloei = false; start = false; clock_reset();}
     else {in_bedrijf = true; gloei = true;}}
     
  if (buttonState == true && Pressed == false)     //wacht op loslaten knop
     {if (in_bedrijf == true)
       {if (digitalRead(stroomsensor) == LOW)
         {start = false; gloei = false; motorState = true; clock_reset();}
    }}
    
    digitalWrite(bedrijfsmagneet, in_bedrijf);
    digitalWrite(gloeispiraal, gloei);
    digitalWrite(startmotor, start);
    Pressed = false;
}

/*         CLOCK        */

 
void clock()

{ current_millis_value = millis();
  if (current_millis_value < previous_millis_value) // if millis overflows
  { 
  m += MAX_MILLIS_VALUE - previous_millis_value + current_millis_value; 
  }
  else // if millis has not overflown
  { 
  m += current_millis_value - previous_millis_value; 
  }
  if (m>999)
  {
    seconds++;
    m = m-1000;
    if (seconds>60) // if seconds == 60
  {
    seconds = 10;
    minutes++;
    }
     if (minutes>60) // if seconds == 60
  {
    minutes = 0;
    hours++;
    }
    if (hours>24) // if seconds == 60
  {
    hours = 0;
    days++;
    } 
  
  }
  previous_millis_value = current_millis_value;
}

void clock_reset()
{
 seconds = 0; 
 minutes = 0;
 hours = 0;
 days = 0;
}
[code]3 delen, ook goed.
[code]
/*         HOOFDPAGINA             */

void hoofdpagina(EthernetClient client){

       char myChar = 34; // appeltroff
       
        client.print("<html><head></head><body>");
        
        client.print("<iframe src=");
        client.print(myChar);
        client.print("./sensors");
        client.print(myChar);
        client.print(" height=");
        client.print(myChar);
        client.print("100");
        client.print(myChar);
        client.print(" frameborder=");
        client.print(myChar);
        client.print("0");
        client.print(myChar);
        client.print("></iframe>");
        client.print("
");
        
        client.print("<iframe src=");
        client.print(myChar);
        client.print("./knoppen");
        client.print(myChar);
        client.print(" height=");
        client.print(myChar);
        client.print("230");
        client.print(myChar);
        client.print(" frameborder=");
        client.print(myChar);
        client.print("0");
        client.print(myChar);
        client.print("></iframe>");
        client.print("
");
        
        client.print("<iframe src=");
        client.print(myChar);
        client.print("./knop_3");
        client.print(myChar);
        client.print(" height=");
        client.print(myChar);
        client.print("50");
        client.print(myChar);
        client.print(" frameborder=");
        client.print(myChar);
        client.print("0");
        client.print(myChar);
        client.print("></iframe>");
        client.print("
");
        
        client.print("</body></html>");
   }

/*           SENSORS              */
   
void sensors(EthernetClient client){

      char myChar = 34; // appeltroff
          client.print("<html><head>");
          client.print("<meta http-equiv=");
          client.print(myChar);
          client.print("refresh");
          client.print(myChar);
          client.print("content=");
          client.print(myChar);
          client.print("5");
          client.print(myChar);
          client.print("></head><body>");

           client.print("
");
           client.print("motor : ");
             if (digitalRead(stroomsensor)==LOW)
             {client.println("AAN");}
             else{client.println("UIT");}
             
           client.print("
");
           client.print("
");
           client.print("veiligheidssensor : ");
             if (digitalRead(veiligheidsensor)==LOW)
             {client.println("AAN");}
             else{client.println("UIT");}
             
           client.print("
");
           client.print("</body></html>"); 
   }

/*            KNOPPEN               */
   
void knoppen(EthernetClient client){

           client.print("<html><head></head><body>");
     /*      client.print("<form method=get>");
           client.print("
");
           
           for (int i=5; i < 10; i++){
              client.print("Pin ");client.print(i);
              client.print("<input type='radio' name=");
              client.print(i);client.print(" value='1' ");
              if (digitalRead(i)== 1) {client.print("checked=true ");}
              client.print("> aan     ");
              client.print("<input type='radio' name=");
              client.print(i);client.print(" value='0' ");          
              if (digitalRead(i)== 0) {client.print("checked=true ");}
              client.print("> uit
");               
              }  
              
           client.print("
");
           client.print("
");
           client.print("<input type=submit value=submit></form>");           
    */       
           client.println("Sorrie, niet beschikbaar");
           client.print("</body></html>");
          }
 
/*           KNOP 3              */
 
 void knop_3(EthernetClient client){
   
      // Testknop,  fire at once
  
      if (first_time == true)
      {first_time = false;}
      else {Pressed = true;}
      clock_reset(); 
      char myChar = 34; // appeltroff
      client.print("<html><head></head><body>");
     
      client.print("Zet Generator AAN/UIT : ");
      client.print("<a href=");
      client.print(myChar);
      client.print("./knop_3");
      client.print(myChar);
      client.print(">PRESS");
      client.print("</a>");  
      }

/*            NOT FOUND              */
              
void niet_gevonden(EthernetClient client){
 
   client.print("<html><head></head><body>");
   client.print("
");
   client.print("Pagina niet gevonden");
   client.print("</body><html>");
   }

/*          DATA AFHANDELEN              */
   
void Data_afhandelen(){
 
     for(int i = 0;i <= Dataregel.length();i++){
      Pin=Dataregel.charAt(i)-48;;
      i++;i++;
      value=Dataregel.charAt(i)-48;
  
   digitalWrite(Pin,value);
   
   i++;//&
   
     }}
 
 /*           ZOEK PAGINA           */
     
 void zoek_pagina(){
          
              //zoek naar pagina's
 
          int index_start = HttpHeader.indexOf('/');
          int index_stop = HttpHeader.indexOf(' ',index_start);
 
         for (int i = index_start; i <= index_stop; i++){
         char c=  HttpHeader.charAt(i);
          Pagina =  Pagina + c;
         }
  
        if (Pagina.startsWith("/knoppen")) {  
        
          if (Pagina.length() > 9){
            if (Pagina.charAt(8) == '?'){
  
            int index_start = Pagina.indexOf('?');
            int index_stop = Pagina.indexOf(' ',index_start)-1;
     
            for (int i = index_start + 1; i <= index_stop; i++){
            char c=  Pagina.charAt(i);
            Dataregel =  Dataregel + c;
            }
  
            Pagina = "/knoppen ";
          
        }}}
        
        if (Pagina.startsWith("/knop_3")) {  
        
          if (Pagina.length() > 8){
            if (Pagina.charAt(7) == '?'){
       
            int index_start = Pagina.indexOf('?');
            int index_stop = Pagina.indexOf(' ',index_start)-1;
                 
            for (int i = index_start + 1; i <= index_stop; i++){
            char c=  Pagina.charAt(i);
            Dataregel =  Dataregel + c;
            }

            Pagina = "/knop_3 ";
          
        }}}}

[/code][/code]

Er zitten wat foutjes in, hier en daar, maar op een proefbordje werkt het.
Soms snap ik zelf niet waarom.

Het heeft eventje geduurd, maar het was dan ook wel erg koud de afgelopen tijd, dus als ik even tijd had, ging ik liever bij de kachel zitten.

Inmiddels zijn er nog wat bugs verwijderd.

In de praktijk uitgetest en werkend bewezen.

-Een tellertje toegevoegd voor de veiligheidsensor, omdat ie, af en toe wel eens zomaar doorslaat naar aarde, zonder aanwijsbare reden.

De stroomsensor, is een 5v adapter op de stroom, die door de generator wordt gemaakt, en die een 5V relaitje aanstuurt, die de sensorpin aan de grond sluit.

In feite zou de stroomsensor overbodig gemaakt kunnen worden, want de veiligheidsensor reageert zo snel, dat ook die als indicatie gebruikt zou kunnen worden, of de motor aan of uit staat.
Alleen wisselt ie nogal tussen hoog en laag, als ie start, dus dat is iets voor later.

Ik denk dat dit programma op vrijwel alle dieselmotoren gebruikt kan worden.
De meesten werken ongeveer vergelijkbaar.
Vandaar de update.

De ralais zijn van Tinkerkit, die weer een autorelais aansturen.
http://www.tinkerkit.com/relay/
Zelfbouw is namenlijk vooralsnog mislukt.

Ik zoek daar dus nog een betere oplossing voor, liefst met een MOSFET of PROFET, want ik had gelezen, in een echt papieren boek (ja,ja), dat die dingen erg klein zijn en je er heeele hoge stroomsterktes mee kan sturen, o.a.

Als iemand daar een link over weet, in combinatie met een Arduino, zou dat fijn zijn.

Arduino scetch en Fritzing scetch bijgesloten.

web_toggle_knop_timer_kubota_3_0.ino (10.5 KB)

web.kubota.fzz (8.91 KB)

Nog een update.

Naar aanleiding van het topic: Elektrische storing op werkend project. - Nederlands - Arduino Forum
Elektrische storing op werkend project van HBO88, moet het Fritzing scetchje van hierboven nog voorzien worden van een draadje van de MIN naar de massa.

Doe je dat niet, dan gaat ie af en toe toch nog zomaar afslaan, door onverklaarbare interferentie waarscheinlijk.

Mijn Fritzing programma geeft echter opeens een missing library error, en ik heb ff geen zin om dat op te lossen.

Misschien wil iemand er even een draadje bijtekenen, en anders kijk ik er eerdaags wel even naar.

Gezien de hoeveelheid keren (32x) dat het scetchje gedownload is inmiddels, vind ik de update toch wel op zijn plaats.

quick ge edit:
Ik moet heel eerlijk zeggen dat inmiddels bijna alles, dus ook de omvormer is geaard, op last van de daartoe bevoegde keuringsautoriteiten.
Misschien dat dat ...

post deleted.
Deze post is weggehaald, want hij was geplaatst in het vekeerde topic.