ENC28J60 +Фиксированный IP

AleksandrM
Offline
Зарегистрирован: 20.07.2017
Как в данном примере установить фиксированный адрес? Ардуина постоянно лезет в сеть и подымает адрес с DHSP

<code class="hljs sketch"><span class="hljs-comment">  For this example you need UIPEthernet library:
    <a data-cke-saved-href="https://github.com/UIPEthernet/UIPEthernet" href="https://github.com/UIPEthernet/UIPEthernet" target="_blank">https://github.com/UIPEthernet/UIPEthernet</a>

  Typical wiring would be (this is for Arduino UNO,
  search for correct wiring for your board):
   VCC -- 5V
   GND -- GND
   CS  -- D10
   SI  -- D11
   SCK -- D13
   SO  -- D12
   INT -- D2

  Blynk using a LED widget on your phone!

  App project setup:
    LED widget on V3
 *************************************************************/</span>

<span class="hljs-comment">/* Comment this out to disable prints and save space */</span>
<span class="hljs-meta">#<span class="hljs-meta-keyword">define</span> BLYNK_PRINT Serial</span>


<span class="hljs-meta">#<span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string"><UIPEthernet.h></span></span>
<span class="hljs-meta">#<span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string"><BlynkSimpleUIPEthernet.h></span></span>

<span class="hljs-comment">// You should get Auth Token in the Blynk App.</span>
<span class="hljs-comment">// Go to the Project Settings (nut icon).</span>
<span class="hljs-keyword">char</span> auth[] = <span class="hljs-string">"YourAuthToken"</span>;

<span class="hljs-comment">// Select your pin with physical button</span>
<span class="hljs-keyword">const</span> <span class="hljs-keyword">int</span> btnPin = <span class="hljs-number">1</span>;

<span class="hljs-built_in">WidgetLED</span> led3(<span class="hljs-literal">V3</span>);

<span class="hljs-built_in">BlynkTimer</span> timer;

<span class="hljs-comment">// V3 LED Widget represents the physical button state</span>
<span class="hljs-keyword">boolean</span> btnState = false;
<span class="hljs-keyword">void</span> buttonLedWidget()
{
  <span class="hljs-comment">// Read button</span>
  <span class="hljs-keyword">boolean</span> <span class="hljs-built_in">isPressed</span> = (<span class="hljs-built_in">digitalRead</span>(btnPin) == <span class="hljs-literal">LOW</span>);

  <span class="hljs-comment">// If state has changed...</span>
  <span class="hljs-built_in">if</span> (<span class="hljs-built_in">isPressed</span> != btnState) {
    <span class="hljs-built_in">if</span> (<span class="hljs-built_in">isPressed</span>) {
      led3.on();
    } <span class="hljs-built_in">else</span> {
      led3.off();
    }
    btnState = <span class="hljs-built_in">isPressed</span>;
  }
}

<span class="hljs-keyword">void</span> <span class="hljs-built_in">setup</span>()
{
  <span class="hljs-comment">// Debug console</span>
  <span class="hljs-built_in">Serial</span>.<span class="hljs-built_in">begin</span>(<span class="hljs-number">9600</span>);

  <span class="hljs-built_in">Blynk</span>.<span class="hljs-built_in">begin</span>(auth);
  <span class="hljs-comment">// You can also specify server:</span>
  <span class="hljs-comment">//Blynk.begin(auth, "blynk-cloud.com", 80);</span>
  <span class="hljs-comment">//Blynk.begin(auth, IPAddress(192,168,1,100), 8080);</span>

  <span class="hljs-comment">// Setup physical button pin (active low)</span>
  <span class="hljs-built_in">pinMode</span>(btnPin, <span class="hljs-literal">INPUT_PULLUP</span>);

  timer.setInterval(<span class="hljs-number">500</span>L, buttonLedWidget);
}

<span class="hljs-keyword">void</span> <span class="hljs-built_in">loop</span>()
{
  <span class="hljs-built_in">Blynk</span>.<span class="hljs-built_in">run</span>();
  timer.<span class="hljs-built_in">run</span>();
}</code>
ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

AleksandrM пишет:

Как в данном примере установить фиксированный адрес?

Для начала, вставить код по-человечески, чтобы его читать можно было.

AleksandrM
Offline
Зарегистрирован: 20.07.2017
Извиняюсь не досмотрел
/* Comment this out to disable prints and save space */
#define BLYNK_PRINT Serial


#include <UIPEthernet.h>
#include <BlynkSimpleUIPEthernet.h>

// You should get Auth Token in the Blynk App.
// Go to the Project Settings (nut icon).
char auth[] = "YourAuthToken";

// Select your pin with physical button
const int btnPin = 1;

WidgetLED led3(V3);

BlynkTimer timer;

// V3 LED Widget represents the physical button state
boolean btnState = false;
void buttonLedWidget()
{
  // Read button
  boolean isPressed = (digitalRead(btnPin) == LOW);

  // If state has changed...
  if (isPressed != btnState) {
    if (isPressed) {
      led3.on();
    } else {
      led3.off();
    }
    btnState = isPressed;
  }
}

void setup()
{
  // Debug console
  Serial.begin(9600);

  Blynk.begin(auth);
  // You can also specify server:
  //Blynk.begin(auth, "blynk-cloud.com", 80);
  //Blynk.begin(auth, IPAddress(192,168,1,100), 8080);

  // Setup physical button pin (active low)
  pinMode(btnPin, INPUT_PULLUP);

  timer.setInterval(500L, buttonLedWidget);
}

void loop()
{
  Blynk.run();
  timer.run();
}

 

Алексей.
Алексей. аватар
Offline
Зарегистрирован: 02.02.2018

@AleksandrM,

Вы используете Blynk объявленный в BlynkSimpleUIPEthernet.h

BlynkEthernet Blynk(_blynkTransport);

Вызываете Blynk.begin(auth) именно для использования DHCP

Adapters/BlynkEthernet.h

// DHCP with domain
    void begin( const char* auth,
                const char* domain = BLYNK_DEFAULT_DOMAIN,
                uint16_t port      = BLYNK_SERVER_PORT,
                const byte mac[] = NULL)

Также есть возможность использовать статический адрес.

// Static IP with domain
    void begin( const char* auth,
                const char* domain,
                uint16_t port,
                IPAddress local,
                IPAddress dns,
                const byte mac[] = NULL)
ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Используйте другой метод begin - тот, в котором есть параметр IPAddress local. 

AleksandrM
Offline
Зарегистрирован: 20.07.2017

Этот? тоже не получаеться....

Blynk.begin(auth,IPAddress(10,121,65,155), 8080);

Можно пример?

 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Нет, не этот. Вам же в #3 написали какой.

AleksandrM
Offline
Зарегистрирован: 20.07.2017

Подскажите где ошибка?

Blynk.begin(auth,IPAddress(10.121.65.249), 8080, IPAddress local (10.121.66.155));

Алексей.
Алексей. аватар
Offline
Зарегистрирован: 02.02.2018

AleksandrM пишет:

Подскажите где ошибка?

Blynk.begin(auth,IPAddress(10.121.65.249), 8080, IPAddress local (10.121.66.155));

Это не ошибка, это непонимание того что делаете. Что значит четвертый аргумент? Нет представления о синтаксисе, печально...

void begin(const char* auth, const char* domain, uint16_t port, IPAddress local, IPAddress dns, const byte mac[] = NULL)
1-й параметр - указатель на строку символов с токеном
2-й - тоже указатель на строку символов, на домен или строка с ip это адресом, совсем не IPAddress
3-й - порт блинк сервера
4-й - экземпляр IPAddress представляющий локальный ip адрес в вашей сети, который хотите использовать для вашего enc28
5-й - экземпляр IPAddress представляющий ip адрес dns сервера.
6-й - мак адрес, если не требуется задавать конкретное значение можете не передавать.

negavoid
Offline
Зарегистрирован: 09.07.2016
Blynk.begin( auth, BLYNK_DEFAULT_DOMAIN, BLYNK_SERVER_PORT, IPAddress(10,121,65,249), IPAddress(8,8,8,8) );

 

AleksandrM
Offline
Зарегистрирован: 20.07.2017

Спасибо за помощь.Разобрался заработало.