Automatizace pomocí Arduina

Automatizace, řízení, měření, logování a programování s využitím platformy Arduino.
Odpovědět
kurrur
Příspěvky: 13
Registrován: stř dub 30, 2014 2:09 pm
Reputace: 2

Automatizace pomocí Arduina

Příspěvek od kurrur »

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="";
          
        }
      }
    }
  }
}
Uživatelský avatar
mypower.cz
R.I.P.
Příspěvky: 4927
Registrován: pát bře 04, 2011 11:36 am
Reputace: 521

Re: Automatizace pomocí Arduina

Příspěvek od mypower.cz »

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
kurrur
Příspěvky: 13
Registrován: stř dub 30, 2014 2:09 pm
Reputace: 2

Re: Automatizace pomocí Arduina

Příspěvek od kurrur »

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.
TyTycko
Příspěvky: 110
Registrován: pon zář 03, 2012 8:47 pm
Reputace: 1

Re: Automatizace pomocí Arduina

Příspěvek od TyTycko »

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 2790W (24v),8 x MoserBaer 195w Jih,6 x 205W Sever :-( ,Midnite 150 Lite,NiCd 4x160Ah(life blackout)+18650 2,5kW+LiFePo 160Ah Winston+LiFePo 2x 120Ah by Mivvy, PowerJack LF 6kW by Matěj +5kW záložní by Matěj, HomeAssistant s komunikací BT BMS
kurrur
Příspěvky: 13
Registrován: stř dub 30, 2014 2:09 pm
Reputace: 2

Re: Automatizace pomocí Arduina

Příspěvek od kurrur »

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.
TyTycko
Příspěvky: 110
Registrován: pon zář 03, 2012 8:47 pm
Reputace: 1

Re: Automatizace pomocí Arduina

Příspěvek od TyTycko »

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 2790W (24v),8 x MoserBaer 195w Jih,6 x 205W Sever :-( ,Midnite 150 Lite,NiCd 4x160Ah(life blackout)+18650 2,5kW+LiFePo 160Ah Winston+LiFePo 2x 120Ah by Mivvy, PowerJack LF 6kW by Matěj +5kW záložní by Matěj, HomeAssistant s komunikací BT BMS
kurrur
Příspěvky: 13
Registrován: stř dub 30, 2014 2:09 pm
Reputace: 2

Re: Automatizace pomocí Arduina

Příspěvek od kurrur »

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.
TyTycko
Příspěvky: 110
Registrován: pon zář 03, 2012 8:47 pm
Reputace: 1

Re: Automatizace pomocí Arduina

Příspěvek od TyTycko »

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 2790W (24v),8 x MoserBaer 195w Jih,6 x 205W Sever :-( ,Midnite 150 Lite,NiCd 4x160Ah(life blackout)+18650 2,5kW+LiFePo 160Ah Winston+LiFePo 2x 120Ah by Mivvy, PowerJack LF 6kW by Matěj +5kW záložní by Matěj, HomeAssistant s komunikací BT BMS
brumlaj
Příspěvky: 2467
Registrován: ned kvě 12, 2013 2:24 pm
Reputace: 258

Re: Automatizace pomocí Arduina

Příspěvek od brumlaj »

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.
kurrur
Příspěvky: 13
Registrován: stř dub 30, 2014 2:09 pm
Reputace: 2

Re: Automatizace pomocí Arduina

Příspěvek od kurrur »

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.
Stinger
Příspěvky: 34
Registrován: ned srp 11, 2013 11:09 pm
Reputace: 0

Re: Automatizace pomocí Arduina

Příspěvek od Stinger »

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="";
             
            }
          }
        }
      }
    }

kurrur
Příspěvky: 13
Registrován: stř dub 30, 2014 2:09 pm
Reputace: 2

Re: Automatizace pomocí Arduina

Příspěvek od kurrur »

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 2:09 pm
Reputace: 2

Re: Automatizace pomocí Arduina

Příspěvek od kurrur »

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 ?
Uživatelský avatar
ixo
Příspěvky: 489
Registrován: stř říj 10, 2012 6:11 pm
Reputace: 22
Bydliště: Bratislava

Re: Automatizace pomocí Arduina

Příspěvek od ixo »

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ž.
1900 Wp, LiFePo 8x200Ah + 123\SmartBMS, Tristar MPPT 60A, Meanwell 1 kW, PowerJack 5kW, Bratislava
Monitoring systému: https://panel.homeinfo.sk/?id_objekt=15 ... elektraren
(Ne)návratnosť systému: https://tinyurl.com/cx74hkv
Zdieľaná databáza meničov: https://tinyurl.com/mx6gvsj
Uživatelský avatar
mypower.cz
R.I.P.
Příspěvky: 4927
Registrován: pát bře 04, 2011 11:36 am
Reputace: 521

Re: Automatizace pomocí Arduina

Příspěvek od mypower.cz »

Zdravím,
1) Místo objektu String použijte raději standardní C++ string
2) http://www.arduino.cc/en/Reference/PROGMEM
kurrur
Příspěvky: 13
Registrován: stř dub 30, 2014 2:09 pm
Reputace: 2

Re: Automatizace pomocí Arduina

Příspěvek od kurrur »

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.
Uživatelský avatar
mypower.cz
R.I.P.
Příspěvky: 4927
Registrován: pát bře 04, 2011 11:36 am
Reputace: 521

Re: Automatizace pomocí Arduina

Příspěvek od mypower.cz »

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.
kurrur
Příspěvky: 13
Registrován: stř dub 30, 2014 2:09 pm
Reputace: 2

Re: Automatizace pomocí Arduina

Příspěvek od kurrur »

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 :)

Odpovědět
  • Podobná témata
    Odpovědi
    Zobrazení
    Poslední příspěvek