Fórum | MyPower.CZ | Obnovitelné zdroje energie - energetická soběstačnost | Právě je stř pro 19, 2018 12:52 pm


Automatizace pomocí Arduina

Automatizace, řízení, měření, logování a programování s využitím platformy Arduino.

Automatizace pomocí Arduina

Příspěvekod kurrur » stř dub 30, 2014 7:47 pm

Dobrý den,

mám problém s kódem. Jde mi jen část vstupů a výstupů, když odstraním poznámky z toho kódu tak se mi v prohlížeči buď neukáže vůbec stránka napsaná v html, nebo po kliknutí na odkaz nereagují I/O a PWM výstupy. Prosím bych o radu, nebo pokud by někdo měl čas, zdali by jste byli ochotni si tento kód nahrát do Arduina a odzkoušet jestli by to někomu z Vás fungovalo i bez toho odkomentování netuším jestli to není třeba tím, že nemám originální Arduino, ale kopii koupenou z aukra. Momentálně mohu ovládat 1x PWM, 6x I/O výstup a 4x analogový vstup. Děkuji moc za každou radu.

Kód: Vybrat vše
#include <SPI.h>
#include <Ethernet.h>

#include <Servo.h>
Servo myservo1;  // create servo object to control a servo1 (pin 3)
Servo myservo2;  // create servo object to control a servo2 (pin 5)


byte mac[] = { 0x90, 0xA2, 0xDA, 0x0D, 0x78, 0xEC }; //physical mac address
byte ip[] = { 192, 168, 0, 20 }; // ip in lan
byte gateway[] = { 192, 168, 1, 1 }; // internet access via router
byte subnet[] = { 255, 255, 255, 0 }; //subnet mask
EthernetServer server(80); //server port

String readString;

//////////////////////

void setup(){


  Ethernet.begin(mac, ip, gateway, subnet);
  server.begin();

                      // Pin Assignment through which relay will be controlled
  pinMode(2, OUTPUT);
  pinMode(4, OUTPUT);
  pinMode(6, OUTPUT);
  pinMode(7, OUTPUT);
  pinMode(8, OUTPUT);
  pinMode(9, OUTPUT);

  myservo1.attach(3);  //the pin for the servo1 control
  myservo2.attach(5);  //the pin for the servo1 control

  //enable serial data print
  Serial.begin(9600);
  Serial.println("server"); // so I can keep track of what is loaded
}

void loop()
{
  // Create a client connection
  EthernetClient client = server.available();
  if (client) {
    while (client.connected()) {
      if (client.available()) {
        char c = client.read();

        //read char by char HTTP request
        if (readString.length() < 100) {

          //store characters to string
          readString += c;
          //Serial.print(c);
        }

        //if HTTP request has ended
        if (c == '\n') {

          ///////////////
          Serial.println(readString); //print to serial monitor for debuging

          client.println("HTTP/1.1 200 OK"); //send new page
          client.println("Content-Type: text/html");
          client.println();



          client.println("<HTML>");
          client.println("<HEAD>");
          //client.println("<META HTTP-EQUIV=REFRESH CONTENT=5 URL=>");    web refresh every 5 seconds
          client.println("<TITLE>Home Automation</TITLE>");
          client.println("</HEAD>");
          client.println("<body bgcolor=\"#99966\">");

          client.println("<h1>HOME AUTOMATION</h1>");
          client.println("<hr>");
          client.println("<hr>");

          client.println("<br>");
          client.println("<br>");
          client.println("<br>");

         //Servo1 movement

          client.println("<h4>SERVO 1");
          client.println("<p style=\"word-spacing: 2em\">");
          client.println("<a href=\"/?servo1_1\"\">Uhel=0</a>");
          client.println("<a href=\"/?servo1_2\"\">Uhel=45</a>");
          client.println("<a href=\"/?servo1_3\"\">Uhel=90</a>");
          client.println("<a href=\"/?servo1_4\"\">Uhel=135</a>");
          client.println("<a href=\"/?servo1_5\"\">Uhel=180</a>");
          client.println("</p>");

          client.println("<br>");
          client.println("<br>");
          client.println("<br>");
/*
          client.println("<h4>SERVO 2");
          client.println("<p style=\"word-spacing: 2em\">");
          client.println("<a href=\"/?servo2_1\"\">Uhel=0</a>");
          client.println("<a href=\"/?servo2_2\"\">Uhel=45</a>");
          client.println("<a href=\"/?servo2_3\"\">Uhel=90</a>");
          client.println("<a href=\"/?servo2_4\"\">Uhel=135</a>");
          client.println("<a href=\"/?servo2_5\"\">Uhel=180</a>");
          client.println("</p>");
*/

          //Analog Input

        client.println("ANALOG INPUT");
        client.println("<br>");
        client.println("<br>");
        client.println("Data z pinu A0: ");
        client.println(analogRead(A0));

        client.println("<br>");

        client.println("Data z pinu A1: ");
        client.println(analogRead(A1));

        client.println("<br>");

        client.println("Data z pinu A2: ");
        client.println(analogRead(A2));

        client.println("<br>");

        client.println("Data z pinu A3: ");
        client.println(analogRead(A3));
/*
        client.println("<br>");

        client.println("Data z pinu A4: ");
        client.println(analogRead(A4));

        client.println("<br>");

        client.println("Data z pinu A5: ");
        client.println(analogRead(A5));
*/

          // Relay

          client.println("<center>");
          client.println("<a href=\"/?relay1on\"\">Turn On Light 1</a>");
          client.println("<a href=\"/?relay1off\"\">Turn Off Light 1</a><br />");

          client.println("<br>");
          client.println("<br>");

          client.println("<a href=\"/?relay2on\"\">Turn On Light 2</a>");
          client.println("<a href=\"/?relay2off\"\">Turn Off Light 2</a><br />");

          client.println("<br>");
          client.println("<br>");

          client.println("<a href=\"/?relay3on\"\">Turn On Light 3</a>");
          client.println("<a href=\"/?relay3off\"\">Turn Off Light 3</a><br />");

          client.println("<br>");
          client.println("<br>");

          client.println("<a href=\"/?relay4on\"\">Turn On Light 4</a>");
          client.println("<a href=\"/?relay4off\"\">Turn Off Light 4</a><br />");

          client.println("<br>");
          client.println("<br>");

          client.println("<a href=\"/?relay5on\"\">Turn On Light 5</a>");
          client.println("<a href=\"/?relay5off\"\">Turn Off Light 5</a><br />");

          client.println("<br>");
          client.println("<br>");


          client.println("<a href=\"/?relay6on\"\">Turn On Light 6</a>");
          client.println("<a href=\"/?relay6off\"\">Turn Off Light 6</a><br />");

          client.println("<br>");
          client.println("<br>");

          client.println("</h4>");
          client.println("</body>");
          client.println("</HTML>");

          delay(100);
          //stopping client
          client.stop();

          ///////////////////// control arduino pin

          //relay conrol

          if(readString.indexOf("?relay1on") >0)//checks for on

          {

            digitalWrite(2, HIGH);    // set pin 4 high
            Serial.println("Led On");
            //client.println("Light 0 Is On");
            client.println("<br>");

        }

          if(readString.indexOf("?relay1off") >0)//checks for off

          {

            digitalWrite(2, LOW);    // set pin 4 low
            Serial.println("Led Off");
            //client.println("Light 0 Is Off");
            client.println("<br>");

        }


           if(readString.indexOf("?relay2on") >0)//checks for on

          {

            digitalWrite(4, HIGH);    // set pin 4 high
            Serial.println("Led On");
            //client.println("Light 0 Is On");
            client.println("<br>");

        }

          if(readString.indexOf("?relay2off") >0)//checks for off

          {

            digitalWrite(4, LOW);    // set pin 4 low
            Serial.println("Led Off");
            //client.println("Light 0 Is Off");
            client.println("<br>");

        }


          if(readString.indexOf("?relay3on") >0)//checks for on

          {

            digitalWrite(6, HIGH);    // set pin 4 high
            Serial.println("Led On");
            //client.println("Light 2 Is On");
            client.println("<br>");

          }

          if(readString.indexOf("?relay3off") >0)//checks for off

          {

            digitalWrite(6, LOW);    // set pin 4 low
            Serial.println("Led Off");
            //client.println("Light 2 Is Off");
            client.println("<br>");

          }

           if(readString.indexOf("?relay4on") >0)//checks for on

          {

            digitalWrite(7, HIGH);    // set pin 4 high
            Serial.println("Led On");
            // client.println("Light 3 Is On");
            client.println("<br>");

          }

          if(readString.indexOf("?relay4off") >0)//checks for off

          {

            digitalWrite(7, LOW);    // set pin 4 low
            Serial.println("Led Off");
            //client.println("Light 3 Is Off");
            client.println("<br>");

          }

           if(readString.indexOf("?relay5on") >0)//checks for on

          {

            digitalWrite(8, HIGH);    // set pin 4 high
            Serial.println("Led On");
            //client.println("Light 0 Is On");
            client.println("<br>");

        }

          if(readString.indexOf("?relay5off") >0)//checks for off

          {

            digitalWrite(8, LOW);    // set pin 4 low
            Serial.println("Led Off");
            //client.println("Light 0 Is Off");
            client.println("<br>");

        }

          if(readString.indexOf("?relay6on") >0)//checks for on

          {

            digitalWrite(9, HIGH);    // set pin 4 high
            Serial.println("Led On");
            //client.println("Light 0 Is On");
            client.println("<br>");

        }

          if(readString.indexOf("?relay6off") >0)//checks for off

          {

            digitalWrite(9, LOW);    // set pin 4 low
            Serial.println("Led Off");
            //client.println("Light 0 Is Off");
            client.println("<br>");

        }

          // servo 1 control

          if(readString.indexOf("servo1_1") >0)
          {
            myservo1.write(180);
            delay (50);
          }
          if(readString.indexOf("servo1_2") >0)
          {
            myservo1.write(135);
            delay (50);
          }
          if(readString.indexOf("servo1_3") >0)
          {
            myservo1.write(90);
            delay (50);
          }
          if(readString.indexOf("servo1_4") >0)
          {
            myservo1.write(45);
            delay (50);
          }
          if(readString.indexOf("servo1_5") >0)
          {
            myservo1.write(0);
            delay (50);
          }

         /*

          if(readString.indexOf("servo2_1") >0)
          {
            myservo1.write(180);
            delay (50);
          }
          if(readString.indexOf("servo2_2") >0)
          {
            myservo1.write(135);
            delay (50);
          }
          if(readString.indexOf("servo2_3") >0)
          {
            myservo1.write(90);
            delay (50);
          }
          if(readString.indexOf("servo2_4") >0)
          {
            myservo1.write(45);
            delay (50);
          }
          if(readString.indexOf("servo2_5") >0)
          {
            myservo1.write(0);
            delay (50);
          }


          */

          //clearing string for next read
          readString="";
         
        }
      }
    }
  }
}
kurrur
 
Příspěvky: 13
Registrován: stř dub 30, 2014 1:09 pm
Reputation: 2

Re: Automatizace pomocí Arduina

Příspěvekod mypower.cz » stř dub 30, 2014 9:16 pm

Zdravim, zdali je vase arduino OK muzete snadno vyzkouset pomoci napriklad tohoto prikladu vycitani dat z analogoveho vstupu pres www:

http://arduino.cc/en/Tutorial/WebServer
Podpořte MyPower.CZ | 2.24kWp FVE | MyPower MicroLog2 | Výsledky hlasování soutěže Cena Bastlířů 2018
BTC support 37uvSpUKTCmcJZD9bs8ZWhdrubxBxRZSuT | LTC support LPYitoWPn3k5PqWBWmuzbcwj344THtZ7q2
Uživatelský avatar
mypower.cz
Site Admin
 
Příspěvky: 3371
Registrován: pát bře 04, 2011 11:36 am
Reputation: 180

Re: Automatizace pomocí Arduina

Příspěvekod kurrur » ned kvě 04, 2014 7:50 pm

Tak se zdá, že Arduino mi funguje tak jak má děkuji za radu. Budu muset zjistit teda proč mi to nechce všechno fungovat, docela mně to omezuje. Časem jsem ten kód chtěl rozšířit a nahrát ho do Arduino Mega.
kurrur
 
Příspěvky: 13
Registrován: stř dub 30, 2014 1:09 pm
Reputation: 2

Re: Automatizace pomocí Arduina

Příspěvekod TyTycko » ned kvě 04, 2014 10:00 pm

Ahoj ,zkus se ještě podívat na napájení ethernet modulu,zda je tam správný napětí.Měl jsem problem s ENC28J60 modulem(3,3v).Zkrátka mi tam kolísalo napájení z arduina a dělalo si to něco podobného co říkáš.Pingy to házelo tak nějak náhodně.Po výměně stabilizátoru vše ok.
Polánka 1560W (24v),8 x MoserBaer 195w,Tristar MPPT 60,NiCd 4x160Ah + 1x120Ah, PowerJack LF 5kW by Matěj
TyTycko
 
Příspěvky: 105
Registrován: pon zář 03, 2012 7:47 pm
Reputation: 1

Re: Automatizace pomocí Arduina

Příspěvekod kurrur » pon kvě 05, 2014 12:29 pm

Ahoj, proměřil jsem napětí je v pohodě, je tam 3,3284 V. Já mám ethernetový modul s W5100. Asi už vím v čem je problém, napájím to prozatím z USB stabilizátor na UNU má na vstupu 4,5V a na výstupu 5V. Stabilizátor na ethernetovém modulu má těch necelých 3,3V. Vyzkouším to s adaptérem, až nějaký vyhrabu :) nějaký 9V/1A alespoň. Ty pingy z analogových vstupů se mi taky neustále mění no snad to bude tím :). Dám vědět jak mi to dopadlo. Děkuji moc za radu.
kurrur
 
Příspěvky: 13
Registrován: stř dub 30, 2014 1:09 pm
Reputation: 2

Re: Automatizace pomocí Arduina

Příspěvekod TyTycko » pon kvě 05, 2014 6:43 pm

kurrur píše:- stabilizátor na UNU má na vstupu 4,5V a na výstupu 5V.

Tomu nerozumim,jak na vstupu může být 4,5 a na výstupu 5 ?
Polánka 1560W (24v),8 x MoserBaer 195w,Tristar MPPT 60,NiCd 4x160Ah + 1x120Ah, PowerJack LF 5kW by Matěj
TyTycko
 
Příspěvky: 105
Registrován: pon zář 03, 2012 7:47 pm
Reputation: 1

Re: Automatizace pomocí Arduina

Příspěvekod kurrur » pon kvě 05, 2014 7:26 pm

Taky to nechápu prostě jsem to tak naměřil, i když vím, že je to blbost. Našel jsem trafo 12V/500mA (po proměření 15V) nevím proč, ale když zapnu 2 led diody nebo dám signál pro otočení servomotoru tak se mi arduino restartuje.
kurrur
 
Příspěvky: 13
Registrován: stř dub 30, 2014 1:09 pm
Reputation: 2

Re: Automatizace pomocí Arduina

Příspěvekod TyTycko » pon kvě 05, 2014 8:33 pm

Nu,zkontroluj pořádně napětí.S tím restartem je to divný.Taky je možný že je arduino načatý nějakým ne příliš šetrným zacházením.
Polánka 1560W (24v),8 x MoserBaer 195w,Tristar MPPT 60,NiCd 4x160Ah + 1x120Ah, PowerJack LF 5kW by Matěj
TyTycko
 
Příspěvky: 105
Registrován: pon zář 03, 2012 7:47 pm
Reputation: 1

Re: Automatizace pomocí Arduina

Příspěvekod brumlaj » úte kvě 06, 2014 7:50 am

kurrur píše:..... Našel jsem trafo 12V/500mA (po proměření 15V) ..........
Je to trafo, nebo spínaný zdroj? VA charakteristiku jsi měřil? Kondenzátor 5G+100n jsi vkládal? Problém by mohl být právě v tom, že jsi jej "našel".....
Moudrost nepřichází vždy s věkem, někdy věk přichází sám.
brumlaj
 
Příspěvky: 1450
Registrován: ned kvě 12, 2013 1:24 pm
Reputation: 92

Re: Automatizace pomocí Arduina

Příspěvekod kurrur » úte kvě 06, 2014 3:24 pm

Je to trafo od staré nabíječky vyfiltrované a stabilizované. Nedalo mi to a připojil jsem na arduino spínaný zdroj 5V/1A od nabíječky z mobilu, Arduino se pořád resetuje dokola. Jak to myslíš s tím šetrným zacházením ? Jak mi přišlo tak jsem ho položil na stůl a jen ho programuju. Za nějaký čas jsem si objednal ethernetový modul a ten mám od té doby co přišel připojený a dělám už jen tu automatizaci.
kurrur
 
Příspěvky: 13
Registrován: stř dub 30, 2014 1:09 pm
Reputation: 2

Re: Automatizace pomocí Arduina

Příspěvekod Stinger » stř kvě 07, 2014 12:50 am

Na mega mi to teď funguje dobře,opravil jsem jen obnovování stránky a z webu obě serva řídily pin 3 takže jsem opravil číslování myservo1 na 2 v posledních řádcích.
Dost se divím že ti to funguje s IP adresou 192.168.0.20 ,čekal bych spíš 192.168.1.20

Kód: Vybrat vše
    #include <SPI.h>
    #include <Ethernet.h>

    #include <Servo.h>
    Servo myservo1;  // create servo object to control a servo1 (pin 3)
    Servo myservo2;  // create servo object to control a servo2 (pin 5)


    byte mac[] = { 0x90, 0xA2, 0xDA, 0x0D, 0x78, 0xEC }; //physical mac address
    byte ip[] = { 192, 168, 0, 20 }; // ip in lan
    byte gateway[] = { 192, 168, 1, 1 }; // internet access via router
    byte subnet[] = { 255, 255, 255, 0 }; //subnet mask
    EthernetServer server(80); //server port

    String readString;

    //////////////////////

    void setup(){


      Ethernet.begin(mac, ip, gateway, subnet);
      server.begin();

                          // Pin Assignment through which relay will be controlled
      pinMode(2, OUTPUT);
      pinMode(4, OUTPUT);
      pinMode(6, OUTPUT);
      pinMode(7, OUTPUT);
      pinMode(8, OUTPUT);
      pinMode(9, OUTPUT);

      myservo1.attach(3);  //the pin for the servo1 control
      myservo2.attach(5);  //the pin for the servo1 control

      //enable serial data print
      Serial.begin(9600);
      Serial.println("server"); // so I can keep track of what is loaded
    }

    void loop()
    {
      // Create a client connection
      EthernetClient client = server.available();
      if (client) {
        while (client.connected()) {
          if (client.available()) {
            char c = client.read();

            //read char by char HTTP request
            if (readString.length() < 100) {

              //store characters to string
              readString += c;
              Serial.print(c);  //********************
            }

            //if HTTP request has ended
            if (c == '\n') {

              ///////////////
              Serial.println(readString); //print to serial monitor for debuging

              client.println("HTTP/1.1 200 OK"); //send new page
              client.println("Content-Type: text/html");
              client.println();



              client.println("<HTML>");
              client.println("<HEAD>");
           //   client.println("<META HTTP-EQUIV="REFRESH" CONTENT="5">");  //  web refresh every 5 seconds
              client.println("<meta http-equiv=\"refresh\" content=\"5\">");
              client.println("<TITLE>Home Automation</TITLE>");
              client.println("</HEAD>");
              client.println("<body bgcolor=\"#99966\">");

              client.println("<h1>HOME AUTOMATION</h1>");
              client.println("<hr>");
              client.println("<hr>");

              client.println("<br>");
              client.println("<br>");
              client.println("<br>");

             //Servo1 movement

              client.println("<h4>SERVO 1");
              client.println("<p style=\"word-spacing: 2em\">");
              client.println("<a href=\"/?servo1_1\"\">Uhel=0</a>");
              client.println("<a href=\"/?servo1_2\"\">Uhel=45</a>");
              client.println("<a href=\"/?servo1_3\"\">Uhel=90</a>");
              client.println("<a href=\"/?servo1_4\"\">Uhel=135</a>");
              client.println("<a href=\"/?servo1_5\"\">Uhel=180</a>");
              client.println("</p>");

              client.println("<br>");
              client.println("<br>");
              client.println("<br>");
       
              client.println("<h4>SERVO 2");
              client.println("<p style=\"word-spacing: 2em\">");
              client.println("<a href=\"/?servo2_1\"\">Uhel=0</a>");
              client.println("<a href=\"/?servo2_2\"\">Uhel=45</a>");
              client.println("<a href=\"/?servo2_3\"\">Uhel=90</a>");
              client.println("<a href=\"/?servo2_4\"\">Uhel=135</a>");
              client.println("<a href=\"/?servo2_5\"\">Uhel=180</a>");
              client.println("</p>");


              //Analog Input

            client.println("ANALOG INPUT");
            client.println("<br>");
            client.println("<br>");
            client.println("Data z pinu A0: ");
            client.println(analogRead(A0));

            client.println("<br>");

            client.println("Data z pinu A1: ");
            client.println(analogRead(A1));

            client.println("<br>");

            client.println("Data z pinu A2: ");
            client.println(analogRead(A2));

            client.println("<br>");

            client.println("Data z pinu A3: ");
            client.println(analogRead(A3));
   
            client.println("<br>");

            client.println("Data z pinu A4: ");
            client.println(analogRead(A4));

            client.println("<br>");

            client.println("Data z pinu A5: ");
            client.println(analogRead(A5));
   

              // Relay

              client.println("<center>");
              client.println("<a href=\"/?relay1on\"\">Turn On Light 1</a>");
              client.println("<a href=\"/?relay1off\"\">Turn Off Light 1</a><br />");

              client.println("<br>");
              client.println("<br>");

              client.println("<a href=\"/?relay2on\"\">Turn On Light 2</a>");
              client.println("<a href=\"/?relay2off\"\">Turn Off Light 2</a><br />");

              client.println("<br>");
              client.println("<br>");

              client.println("<a href=\"/?relay3on\"\">Turn On Light 3</a>");
              client.println("<a href=\"/?relay3off\"\">Turn Off Light 3</a><br />");

              client.println("<br>");
              client.println("<br>");

              client.println("<a href=\"/?relay4on\"\">Turn On Light 4</a>");
              client.println("<a href=\"/?relay4off\"\">Turn Off Light 4</a><br />");

              client.println("<br>");
              client.println("<br>");

              client.println("<a href=\"/?relay5on\"\">Turn On Light 5</a>");
              client.println("<a href=\"/?relay5off\"\">Turn Off Light 5</a><br />");

              client.println("<br>");
              client.println("<br>");


              client.println("<a href=\"/?relay6on\"\">Turn On Light 6</a>");
              client.println("<a href=\"/?relay6off\"\">Turn Off Light 6</a><br />");

              client.println("<br>");
              client.println("<br>");

              client.println("</h4>");
              client.println("</body>");
              client.println("</HTML>");

              delay(100);
              //stopping client
              client.stop();

              ///////////////////// control arduino pin

              //relay conrol

              if(readString.indexOf("?relay1on") >0)//checks for on

              {

                digitalWrite(2, HIGH);    // set pin 2 high
                Serial.println("Led On");
                client.println("Light 0 Is On");
                client.println("<br>");

            }

              if(readString.indexOf("?relay1off") >0)//checks for off

              {

                digitalWrite(2, LOW);    // set pin 2 low
                Serial.println("Led Off");
                client.println("Light 0 Is Off");
                client.println("<br>");

            }


               if(readString.indexOf("?relay2on") >0)//checks for on

              {

                digitalWrite(4, HIGH);    // set pin 4 high
                Serial.println("Led On");
                client.println("Light 0 Is On");
                client.println("<br>");

            }

              if(readString.indexOf("?relay2off") >0)//checks for off

              {

                digitalWrite(4, LOW);    // set pin 4 low
                Serial.println("Led Off");
                client.println("Light 0 Is Off");
                client.println("<br>");

            }


              if(readString.indexOf("?relay3on") >0)//checks for on

              {

                digitalWrite(6, HIGH);    // set pin 6 high
                Serial.println("Led On");
                client.println("Light 2 Is On");
                client.println("<br>");

              }

              if(readString.indexOf("?relay3off") >0)//checks for off

              {

                digitalWrite(6, LOW);    // set pin 6 low
                Serial.println("Led Off");
                client.println("Light 2 Is Off");
                client.println("<br>");

              }

               if(readString.indexOf("?relay4on") >0)//checks for on

              {

                digitalWrite(7, HIGH);    // set pin 7 high
                Serial.println("Led On");
                client.println("Light 3 Is On");
                client.println("<br>");

              }

              if(readString.indexOf("?relay4off") >0)//checks for off

              {

                digitalWrite(7, LOW);    // set pin 7 low
                Serial.println("Led Off");
                client.println("Light 3 Is Off");
                client.println("<br>");

              }

               if(readString.indexOf("?relay5on") >0)//checks for on

              {

                digitalWrite(8, HIGH);    // set pin 8 high
                Serial.println("Led On");
                client.println("Light 0 Is On");
                client.println("<br>");

            }

              if(readString.indexOf("?relay5off") >0)//checks for off

              {

                digitalWrite(8, LOW);    // set pin 8 low
                Serial.println("Led Off");
                client.println("Light 0 Is Off");
                client.println("<br>");

            }

              if(readString.indexOf("?relay6on") >0)//checks for on

              {

                digitalWrite(9, HIGH);    // set pin 9 high
                Serial.println("Led On");
                client.println("Light 0 Is On");
                client.println("<br>");

            }

              if(readString.indexOf("?relay6off") >0)//checks for off

              {

                digitalWrite(9, LOW);    // set pin 9 low
                Serial.println("Led Off");
                client.println("Light 0 Is Off");
                client.println("<br>");

            }

              // servo 1 control

              if(readString.indexOf("servo1_1") >0)
              {
                myservo1.write(180);
                delay (50);
              }
              if(readString.indexOf("servo1_2") >0)
              {
                myservo1.write(135);
                delay (50);
              }
              if(readString.indexOf("servo1_3") >0)
              {
                myservo1.write(90);
                delay (50);
              }
              if(readString.indexOf("servo1_4") >0)
              {
                myservo1.write(45);
                delay (50);
              }
              if(readString.indexOf("servo1_5") >0)
              {
                myservo1.write(0);
                delay (50);
              }



              if(readString.indexOf("servo2_1") >0)
              {
                myservo2.write(180);
                delay (50);
              }
              if(readString.indexOf("servo2_2") >0)
              {
                myservo2.write(135);
                delay (50);
              }
              if(readString.indexOf("servo2_3") >0)
              {
                myservo2.write(90);
                delay (50);
              }
              if(readString.indexOf("servo2_4") >0)
              {
                myservo2.write(45);
                delay (50);
              }
              if(readString.indexOf("servo2_5") >0)
              {
                myservo2.write(0);
                delay (50);
              }


              //clearing string for next read
              readString="";
             
            }
          }
        }
      }
    }

Stinger
 
Příspěvky: 34
Registrován: ned srp 11, 2013 10:09 pm
Reputation: 0

Re: Automatizace pomocí Arduina

Příspěvekod kurrur » pát kvě 09, 2014 11:41 am

Tak jsem to zkoumal blíže a zjistil jsem, že to asi bude pamětí arduina, maximální velikost kódu co můžu do arduina zapsat je 17 690 bajtů z 32 256, když překročím tuto paměť tak mi už nereagujou povely z výše uvedeného kódu. Objednal jsem si z eBaye Arduino Mega tak snad už to s tím půjde :). Ještě uvažuju o tom, že bych na SD kartu nahrál HTML kód a v arduinu nechal zapsaný zbytek.
kurrur
 
Příspěvky: 13
Registrován: stř dub 30, 2014 1:09 pm
Reputation: 2

Re: Automatizace pomocí Arduina

Příspěvekod kurrur » pát kvě 09, 2014 9:16 pm

Tak jsem zjistil že tou pamětí to asi nebude, bude to asi něco v tom kódu, jelikož jsem do arduina nahrál tento webový server http://startingelectronics.com/tutorial ... D-card-IO/
zabírá přes 24 454 bajtů. Teď jsem už úplně v koncích, když Stingerovi to na Mega šlo. Nevíte čím by to ještě tak mohlo být ?
kurrur
 
Příspěvky: 13
Registrován: stř dub 30, 2014 1:09 pm
Reputation: 2

Re: Automatizace pomocí Arduina

Příspěvekod ixo » ned kvě 11, 2014 8:21 pm

Mám skúenosť, že okrem dĺžky samotného kódu svoju rolu hrá aj obsah použivaných premenných (koľko zaberá miesta v pamäti). Ak sa dá, tak nepotrebný obsah premenných po použití maž.
940 Wp, Pb OpZs 24V/300Ah, Tristar MPPT 60A, Meanwell 1 kW, PowerJack 5kW, Bratislava
Výkonnosť systému: http://homeinfo.sk/e?user=viktor
(Ne)návratnosť systému: http://tinyurl.com/cx74hkv
Zdieľaná databáza meničov: http://tinyurl.com/mx6gvsj
Uživatelský avatar
ixo
 
Příspěvky: 407
Registrován: stř říj 10, 2012 5:11 pm
Bydliště: Bratislava
Reputation: 14

Re: Automatizace pomocí Arduina

Příspěvekod mypower.cz » ned kvě 11, 2014 8:54 pm

Zdravím,
1) Místo objektu String použijte raději standardní C++ string
2) http://www.arduino.cc/en/Reference/PROGMEM
Podpořte MyPower.CZ | 2.24kWp FVE | MyPower MicroLog2 | Výsledky hlasování soutěže Cena Bastlířů 2018
BTC support 37uvSpUKTCmcJZD9bs8ZWhdrubxBxRZSuT | LTC support LPYitoWPn3k5PqWBWmuzbcwj344THtZ7q2
Uživatelský avatar
mypower.cz
Site Admin
 
Příspěvky: 3371
Registrován: pát bře 04, 2011 11:36 am
Reputation: 180

Re: Automatizace pomocí Arduina

Příspěvekod kurrur » pon kvě 12, 2014 3:44 pm

Děkuji za rady, určitě to bude tím, když mi to takhle blbne :) problém je v tom, že moc programovat neumím (spíše se tím arduinem učím) a nevím jak bych měl zkrátit ten program, koukám po různých kódech co kdo vytvořil a zkouším tomu porozumět, mám doma i knihu C a C++ tak si v ní čtu. No snad časem na to příjdu díky moc za rady :). Kdyby jste měli nějaké typy na literaturu budu rád děkuji.
kurrur
 
Příspěvky: 13
Registrován: stř dub 30, 2014 1:09 pm
Reputation: 2

Re: Automatizace pomocí Arduina

Příspěvekod mypower.cz » pon kvě 12, 2014 5:07 pm

Zdravim, ja se priznam ze jsem sam v C++ pred nejakou ne zase tak dlouhou dobou take neumel, je dobre zacit od malych programu a postupne pomalicku "komplikovat". Je pravdou ale ze u me hraje roli dlouholeta praxe ve firemnim prostredi na firemnich aplikacich v objektovem pascalu (tehdy Delphi 6), pak PHP, javascript a ty dva posledni maji k C++ uz dost blizko. V C (i v mnou zminenem pascalu) je ale potreba byt zvlast opatrny kvuli pointerum (ukazatelum), spravne uvolnovat objekty, hlidat si ram, merit kde se co da. Rozhodne se nebranim tomu, aby jste se mrknul jak nektere veci delam trebas v opensource projektu microlog. Napriklad najdete tam funkci pro zjisteni kolik ram je k dispozici, cimz si zjistite co vlastne kolik zere ram, jak se to po cem zmeni (napriklad pred vstupem do nejake funkce a po vystupu z ni), pripadne pokud nekde zapominate ram uvolnovat tak vam toto cislo samozrejme pravidelne roste az do uplneho vytuhnuti. U zarizeni kde mame malo pameti, jako napriklad arduino, tam je to obzvlaste dulezite tohle overovani a mereni. Kazdy usetreny bajt ma obrovskou hodnotu. Na to dnes vyvojari u beznych PC znacne zapominaji, proto PC obvykle i u trivialnich aplikaci swapuji jako blazen a zabiraji obrovske mnozstvi ram. Idealni stav je kdyz se vam pri behu pamet drzi na stejnych hodnotach. Take je potreba mit na pameti, ze arduino funguje tak, ze zasobnik je plnen z jedne strany ram a pamet pro promenne z druhe. Pokud se tyto dve mista potkaji a zacnou se vzajemne prepisovat, nemusi se stat nic, muze se to zacit chovat podivne, nebo to muze z niceho nic necekane uplne vytuhnout.

Zdrojak micrologu najdete na http://microlog.mypower.cz/source

napoveda: funkce pro zjisteni kolik ram je k dispozici je pojmenovana "freeRam()"

PS: pro Cckare - i ja se ucim.. takze ani microlog neni jeste uplne cisty a je tam dost bastliku, ktere urcite v pristi verzi, na ktere prave pracuji, vylepsim.
Podpořte MyPower.CZ | 2.24kWp FVE | MyPower MicroLog2 | Výsledky hlasování soutěže Cena Bastlířů 2018
BTC support 37uvSpUKTCmcJZD9bs8ZWhdrubxBxRZSuT | LTC support LPYitoWPn3k5PqWBWmuzbcwj344THtZ7q2
Uživatelský avatar
mypower.cz
Site Admin
 
Příspěvky: 3371
Registrován: pát bře 04, 2011 11:36 am
Reputation: 180

Re: Automatizace pomocí Arduina

Příspěvekod kurrur » čtv kvě 15, 2014 10:07 am

Musím Vám zatleskat ten microlog je skvělá věc :). Koukal jsem na to opravdu klobouk dolů graficky pěkně udělané skvělý nápad :) ! No já jsem brouzdal po internetu a díval jsem se na různé zdrojové kódy ovládání arduina přes internet a pár jich mě zaujalo tak jsem se do toho ponořil a snažil se to pochopit a postupně jsem zkoušel, až nakonec mi to teď jakž takž funguje :) ale ještě je toho hodně co bych tam chtěl udělat :) Strašně moc děkuji za rady :)
kurrur
 
Příspěvky: 13
Registrován: stř dub 30, 2014 1:09 pm
Reputation: 2


Zpět na Arduino

Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 1 návštěvník

cron
Reputation System ©'