Немогу понять по какой причине срабатывает реле, которое вообще никак не относится. Если раскомментирую строку "strcat(card, buf)", прошью - реле срабатывает, закоментирую тогда не срабатывает. Код (C++): char buf[30]; const char card[20] = "mode=out&number="; sprintf(buf, "%06lu", tag); // strcat(card, buf); ether.hisport = 9000; // ether.browseUrl(PSTR("/?"), card, website, callback_2); , и еще подскажите как можно правильным путем соединить строку "mode=out&number=" с числом unsigned long для ether.browser?
Даже костыль написал, добавил строку digitalWrite(LED_PASS_1, HIGH); перед strcat(card, buf), теперь не срабатывает, но я понял чем дело, провод с антены проходил мимо сигнального провода реле, помехи были
Нет. Антенна реле активировать не может, там нету даже близко такой энергии. У вас ошибка в коде, но не в приведенном отрывке.
Для const char card отвели в стеке 20 байт и инициализировали строкой "mode=out&number=" длиной в 16 байт, заполняете buf в sprintf(buf, "%06lu", tag) представлением числа шести разрядного, с лидирующими нулями, т.о. в buf строка из 6-ти символов, в strcat(card, buf) конкатенируете (складываете) строки в 16 и 6 символов, в результате в card должна оказаться строка в 22 байта, пробиваете стек однако, но как компилятор пропускает strcat для конст чара, загадка, у стркат-а сигнатура другая, char * strcat( char * destptr, const char * srcptr ) ;
Почему не в приведённом? Распашка памяти в полный рост! Там что угодно может сработать. Нет никакой загадки, это уровень предупреждения, а на предупреждения уважающий себя ардуинщик плюёт и даже не читает их. Более того, в ардуино IDE из коробки печать предупреждение просто подавлена начисто, так что анонимус их даже не видит.
Цель ясна, популяризировать ардуину, как игрушку доступную каждому, печально... Порой встречаются вопросы на которые хочется сказать "Зачем вы этот код написали?".