اطلاعیه

Collapse
No announcement yet.

دستورات آماده سازی esp8266

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    #16
    پاسخ : دستورات آماده سازی esp8266

    سلام دوست گرامی تبریک مجدد سال نو.

    خدمتتون که عرض کنم من هدفم این هست که وقتی که مثلا گوشیتون رو توسط یک مودم به ماژول وصل کردید و مرورگرتون هم با وارد کردن ای پی ماژولتون وص شده به وصیله ی فشردن دکمه ای که به بوردتون وصل شده پیغامی رو بر روی صفحه ی مرورگرتون که باز هست نشون بده و اگر دکمه رو فشار ندادم هم چیزی رو نشون نده و یا پیغام دیگه ای رو نشون بده.
    و اگر مرورگر بسته باشه هم طبیعتا کار نمیکنه.

    دیدگاه


      #17
      پاسخ : دستورات آماده سازی esp8266

      سلام مجدد به دو عزیز بزرگوار و تبریک سال نو همراه با آرزوی بهترینها برای شما و همه عزیزان eca
      جناب آشوری یه عذرخواهی میکنم که اون کدی که گفتم رو متاسفانه تو کدهام پیداش نکردم. همیشه وقتی یه چیزی رو نیاز داری پیداش نمیکنی. تو اینترنت هم گشتم اما اونی که من درموردش گفته بودم رو (یه کد html یک خطی بود) پیدا نکردم. با این وجود یکی از سایتهایی که دیدم رو اینجا میارم شاید جایی بدرد بخوره.(این سایت) البته این اون روش نیست و من هم تست نکردم اما بین چند تا api و پلاگین که فکر کنم بیشترنوتیفیکیشن روی خود مرورگر اجرا میکنه ، یدونش رو زده ویبره که باید دید چجوریه. اما باید به مرورگرهایی که ساپورتش میکنند هم توجه داشت. تو این لینک می تونید ببینید.
      درمورد مواردی که اشاره کردید، باید بگم یکی از مزایای html مولتی پلتفرم بودنشه که باعث میشه شما توی ویندوز، مک، لینوکس و ... بتونید از برنامه طراحی شده استفاده کنید. این در حالیه که درصورت طراحی اپ ، شما باید برای همه این پلتفرمها هم برنامه درست کنید که شدنیه اما نیاز به تخصص بیشتری داره. با توجه به تجربم این برای خیلی از دوستان تو این انجمن کار راحتی نیست. همچنین کدی که من اینجا میزارم با روشهای مختلف دیگه ای هم میشه این برنامه رو ساخت که شاید خیلی هم بهتر باشن اما برای افرادی که تازه بسمت esp میان ، درک اونها نیاز به پیش زمینه بیشتری داره. یه مطلب دیگه هم اینکه من عقیده دارم هیچ کدی بدرد نخور نیست. هرکدومشون تحت شرایطی بهترین گزینه هستند. مثلا در این مورد، در سیستم مونیتوینگ که بخواب نرفته و درزمان روشن بودن همیشه فعال است کارایی دارد.
      جناب amir2640 کدی که در زیر گذاشتم رو یه تست بزنید. فقط تغییرش دادم و امتحان نشده. نتیجه رو بفرمایید.

      #include <ESP8266WiFi.h>
      const char* ssid = "XXX";
      const char* password = "XXX";


      const int buttonPin = 4;
      int buttonState = 0;


      WiFiServer server(80);


      void setup() {

      Serial.begin(115200);
      delay(10);

      Serial.println();
      Serial.println();
      Serial.print("Connecting to ");
      Serial.println(ssid);

      WiFi.begin(ssid, password);

      while (WiFi.status() != WL_CONNECTED) {
      delay(500);
      Serial.print(".");
      }
      Serial.println("");
      Serial.println("WiFi connected");

      server.begin();
      Serial.println("Server started");

      Serial.println(WiFi.localIP());


      pinMode(buttonPin, INPUT);

      }

      void loop() {

      if(buttonState == 0){
      buttonState = digitalRead(buttonPin);
      }


      WiFiClient client = server.available();
      if (!client) {
      return;
      }

      Serial.println("new client");
      while (!client.available()) {
      delay(1);
      }

      String req = client.readStringUntil('\r');
      Serial.println(req);
      client.flush();
      String s;

      s= "<!DOCTYPE html>";
      s+= "<html>";
      s+= "<body>";
      s+= "<h1>My First Heading</h1>";
      s+= "<p>My button state is : ";
      s+= (String)buttonState;
      s+= "</p></body>";
      s+= "</html>";


      client.print(s);
      delay(1);
      buttonState = 0;
      Serial.println("Client disconnected");
      }
      تاپیک ویدیوهای آموزشی حواشی آردوینو و ESP

      دیدگاه


        #18
        پاسخ : دستورات آماده سازی esp8266

        سلام ، تشکر بابت این که در تعطیلات هم باز برای دیگران وقت میذارید دوست عزیز.

        خدمتتون که عرض کنم، من برنامه ای رو که لطف کرده بودید و فرستاده بودید رو چک کردم و یک سویچ رو هم پول دان کردم به پایه ی شماره ی 4 که تعریف کرده بودید به عنوان ورودی . برنامه به این صورت کار میکنه که فقط زمانی که من برای اولین بار مرورگر رو به ماژول وصل میکنم در صورتی که دستم رو روی دکمه ی تعریف شده فشار داده باشم عدد 1 رو در صفحه نشون میده و بعد از اون با رفرش کردن مجدد صفحه عدد 0 نشون داده میشه هرچند که من دکمه رو فشار بدم ، همچنین با فشردن کلید مورد نظر تغییری درنمایش اعداد موجود در صفحه ی مرورگر ایجاد نمیشه.
        بنابر این، این مساله که بشود با فشردن کلید مورد نظر عبارت و یا عدد خاصی بر روی صفحه تغییر کنه متاسفانه هنوز کار نمیکنه.

        تشکر مجدد بواسطه وقتتون

        دیدگاه


          #19
          پاسخ : دستورات آماده سازی esp8266

          سلام
          همینطور که جناب digi-rx اشاره کردند با بردن دستور خط 70 به خط 68 این کد کاملا درست کار میکنه.

          #include <ESP8266WiFi.h>
          const char* ssid = "";
          const char* password = "";


          const int buttonPin = 4;
          int buttonState = 0;


          WiFiServer server(80);


          void setup() {

          Serial.begin(115200);
          delay(10);

          Serial.println();
          Serial.println();
          Serial.print("Connecting to ");
          Serial.println(ssid);

          WiFi.begin(ssid, password);

          while (WiFi.status() != WL_CONNECTED) {
          delay(500);
          Serial.print(".");
          }
          Serial.println("");
          Serial.println("WiFi connected");

          server.begin();
          Serial.println("Server started");

          Serial.println(WiFi.localIP());


          pinMode(buttonPin, INPUT);

          }

          void loop() {

          if (buttonState == 0) {
          buttonState = digitalRead(buttonPin);
          }


          WiFiClient client = server.available();
          if (!client) {
          return;
          }

          Serial.println("new client");
          while (!client.available()) {
          delay(1);
          }

          String req = client.readStringUntil('\r');
          Serial.println(req);
          client.flush();
          String s;

          s = "<!DOCTYPE html>";
          s += "<html>";
          s += "<body>";
          s += "<h1>My First Heading</h1>";
          s += "</p></body>";
          s += "<p>My button state is : ";
          s += (String)buttonState;
          s += "</html>";


          client.print(s);
          delay(1);
          buttonState = 0;
          Serial.println("Client disconnected");
          }

          دیدگاه


            #20
            پاسخ : دستورات آماده سازی esp8266

            سلام خسته نباشید
            اگر بخوام به دستورات موجود در کتاب خونه esp8266wifi دست رسی پیدا کنم
            و یه جور help در رابطه با دستورات در اختیارم قرار بگیره
            باید چکار کنم؟
            با تشکر

            دیدگاه


              #21
              پاسخ : دستورات آماده سازی esp8266

              نوشته اصلی توسط alireza121222 نمایش پست ها
              سلام خسته نباشید
              اگر بخوام به دستورات موجود در کتاب خونه esp8266wifi دست رسی پیدا کنم
              و یه جور help در رابطه با دستورات در اختیارم قرار بگیره
              باید چکار کنم؟
              با تشکر
              درود ،هم میتونید فایل هدر h. و cpp. رو نگاه بندازید و توابع رو ببینید و هم به مثال ها و برنامه های موجود مراجعه کنید ،
              این هم صفحه راهنمای کتابخونه هست

              دیدگاه


                #22
                پاسخ : دستورات آماده سازی esp8266

                سلام دوستان من این برنامه رو نوشتم و به این صورت کار میکنه که با فرستاده شدن عبارت "salam" تابع rainbow شروع به کار میکنه و با فرستاده شدن "BONJOUR" در صورتی که تابع rainbow متوقف شده باشه تابع theaterChaseRainbow شروع به کار میکنه.
                حالا من میخوام کاریکنم که وقتی که هریک از عبارات "salam" و یا "BONJOUR" فرستاده میشه تابع قبلی در همون لحظه متوقف بشه و تابع جدید که میتونه rainbow و یا theaterChaseRainbow باشه شروع به کار کنه اما نتاسفانه نمیتونم این کار رو انجام بدم و هرکار کاری میکنم بعد از ارسال هر یک از عبارات بالا اول صبر میکنه تا تابع قبلی کاملا اجرا بشه و بعد تابع بعدی رو اجرا میکنه.؟!
                ممنون میشم اگر که هریک از اساتید انجمن جواب سوال بنده رو میدونند راهنمایی بفرمایند.


                #include <ESP8266WiFi.h>
                #include <WiFiClient.h>
                #include <ESP8266WebServer.h>
                #include <ESP8266mDNS.h>



                MDNSResponder mdns;

                const char* ssid = "Mitra";
                const char* password = "";

                ESP8266WebServer server(80);
                #include <Adafruit_NeoPixel.h>

                int ctr = 0; // counter for button presses
                int gpio4_pin = 4;
                int gpio5_pin = 5;
                Adafruit_NeoPixel strip = Adafruit_NeoPixel(300, gpio4_pin, NEO_GRB + NEO_KHZ800);

                const int led = 13;
                String webPage = "";

                void rainbow(uint8_t wait) {
                uint16_t i, j;

                for (j = 0; j < 256 ; j++) { // 1 cycles of all colors on wheel
                for (i = 0; i < strip.numPixels(); i++) {
                strip.setPixelColor(i, Wheel(((i * 256 / strip.numPixels()) + j) & 255));
                }
                strip.show();
                delay(wait);
                }

                }

                //Theatre-style crawling lights with rainbow effect
                void theaterChaseRainbow(uint8_t wait) {
                for (int j = 0; j < 256; j++) { // cycle all 1 colors in the wheel
                for (int q = 0; q < 3; q++) {
                for (uint16_t i = 0; i < strip.numPixels(); i = i + 3) {
                strip.setPixelColor(i + q, Wheel( (i + j) % 255)); //turn every third pixel on
                }
                strip.show();

                delay(wait);

                for (uint16_t i = 0; i < strip.numPixels(); i = i + 3) {
                strip.setPixelColor(i + q, 0); //turn every third pixel off
                }
                }
                }
                }

                // Input a value 0 to 255 to get a color value.
                // The colours are a transition r - g - b - back to r.
                uint32_t Wheel(byte WheelPos) {
                WheelPos = 255 - WheelPos;
                if (WheelPos < 85) {
                return strip.Color(255 - WheelPos * 3, 0, WheelPos * 3);
                }
                if (WheelPos < 170) {
                WheelPos -= 85;
                return strip.Color(0, WheelPos * 3, 255 - WheelPos * 3);
                }
                WheelPos -= 170;
                return strip.Color(WheelPos * 3, 255 - WheelPos * 3, 0);
                }

                // Fill the dots one after the other with a color
                void colorWipe(uint32_t c, uint8_t wait) {
                for (uint16_t i = 0; i < strip.numPixels(); i++) {
                strip.setPixelColor(i, c);
                strip.show();
                delay(wait);
                }
                }


                void setup(void) {


                webPage += "<html>";
                webPage += "<body style=\"background-color:powderblue;\">";
                webPage += "<style>";
                webPage += "p.big {\n";
                webPage += "line-height: 5.9;";
                webPage += "}\n";
                webPage += "</style>";
                webPage += "<table border=\"1px\" >";
                webPage += "<tr>";

                webPage += "<th><p><B> BASE.</B></p></th>";
                webPage += "<td>LEVEL UP: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type=\"button\" id=\"fname\" style = \"height:70px; width:70px\" ontouchstart=\"myTimer = setInterval(myCounter, 100);myFunction();\"ontouchend=\"clearInterval(myTimer);upfunction();\"></td>";
                webPage += "<p id=\"BASE\">0</p>";

                webPage += "<script>";
                webPage += "var c = 0;";
                webPage += "function myCounter() {\n";
                webPage += "if (document.getElementById(\"BASE\").innerHTML < 20) {\n";
                webPage += "document.getElementById(\"BASE\").innerHTML = ++c;";
                webPage += "if (c == 20) {\n";
                webPage += "clearInterval(myTimer);";
                webPage += "}\n\n";
                webPage += "}\n\n";
                webPage += "}\n\n";

                webPage += "function myFunction() {\n";
                webPage += "var xhttp = new XMLHttpRequest();";
                webPage += "xhttp.open(\"GET\", \"HELLO\", true);";
                webPage += "xhttp.send();";
                webPage += "}\n";

                webPage += "function upfunction() {\n";
                webPage += "var xhttp = new XMLHttpRequest();";
                webPage += "xhttp.open(\"GET\", \"bye\", true);";
                webPage += "xhttp.send();";
                webPage += "}\n";
                webPage += "</script>";
                webPage += "<p> </p>";

                webPage += "<td>LEVEL DOWN:&nbsp;<input type=\"button\" id=\"fname\" style = \"height:70px; width:70px\"ontouchstart=\"myTimerN = setInterval(myCounterN, 100);BONJOUR();\"ontouchend=\"clearInterval(myTimerN);AUREVOIR();\"></td>";

                webPage += "<script>";
                webPage += "function myCounterN() {\n";
                webPage += "if (document.getElementById(\"BASE\").innerHTML >= 1){\n";
                webPage += "document.getElementById(\"BASE\").innerHTML = --c;";
                webPage += "if (c == 0) {\n";
                webPage += "clearInterval(myTimerN);";
                webPage += "}\n\n";
                webPage += "}\n\n";
                webPage += "}\n\n";

                webPage += "function BONJOUR() {\n";
                webPage += "var xhttp = new XMLHttpRequest();";
                webPage += "xhttp.open(\"GET\", \"BONJOUR\", true);";
                webPage += "xhttp.send();";
                webPage += "}\n";

                webPage += "function AUREVOIR() {\n";
                webPage += "var xhttp = new XMLHttpRequest();";
                webPage += "xhttp.open(\"GET\", \"AUREVOIR\", true);";
                webPage += "xhttp.send();";
                webPage += "}\n";
                webPage += "</script>";


                webPage += "<p> </p>";
                webPage += "<td>RAINBOW :&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <input type=\"button\" id=\"fname\" style = \"height:70px; width:70px\"ontouchstart=\"myTimerNN = setInterval(myCounterNN, 100);salam()\"ontouchend=\"clearInterval(myTimerNN);BEDROOD()\"></td>";

                webPage += "<script>";
                webPage += "function myCounterNN() {\n";
                webPage += "clearInterval(myTimerNN);";
                webPage += "if (document.getElementById(\"BASE\").innerHTML > 0) {\n";
                webPage += "x = document.getElementById(\"BASE\").innerHTML;";
                webPage += "document.getElementById(\"BASE\").innerHTML = c=0;";
                webPage += "}\n";
                webPage += "else {\n";
                webPage += "c = x; document.getElementById(\"BASE\").innerHTML = x; clearInterval(myTimerNN);";
                webPage += "}\n\n";
                webPage += "}\n\n";

                webPage += "function salam() {\n";
                webPage += "var xhttp = new XMLHttpRequest();";
                webPage += "xhttp.open(\"GET\", \"salam\", true);";
                webPage += "xhttp.send();";

                webPage += "}\n";

                webPage += "function BEDROOD() {\n";
                webPage += "var xhttp = new XMLHttpRequest();";
                webPage += "xhttp.open(\"GET\", \"BEDROOD\", true);";
                webPage += "xhttp.send();";
                webPage += "}\n";
                webPage += "</script>";
                webPage += "<table border=\"1px\" >";



                webPage += "</script>";
                webPage += "</table>";
                webPage += "</body>";
                webPage += "</html>";

                pinMode(gpio4_pin, OUTPUT);
                digitalWrite(gpio4_pin, LOW);
                pinMode(led, OUTPUT);
                digitalWrite(led, 0);
                delay(1000);
                Serial.begin(115200);
                WiFi.begin(ssid, password);
                Serial.println("");

                // Wait for connection
                while (WiFi.status() != WL_CONNECTED) {
                delay(500);
                Serial.print(".");
                }
                Serial.println("");
                Serial.print("Connected to ");
                Serial.println(ssid);
                Serial.print("IP address: ");
                Serial.println(WiFi.localIP());

                if (mdns.begin("esp8266", WiFi.localIP())) {
                Serial.println("MDNS responder started");
                }

                server.on("/", []() {
                server.send(200, "text/html", webPage);
                });

                server.on("/salam", []() {
                server.send(200, "text/plain", "salam");
                digitalRead(ctr);

                });

                server.on("/BONJOUR", []() {
                server.send(100, "text/plain", "BONJOUR");
                theaterChaseRainbow(10);
                ctr=ctr+1;
                });


                server.begin();
                Serial.println("HTTP server started");

                strip.begin();
                strip.show(); // Initialize all pixels to 'off'

                }

                void loop(void) {
                server.handleClient();
                }

                دیدگاه

                لطفا صبر کنید...
                X