Arduino Ethernet shield

loker95
Offline
Зарегистрирован: 11.02.2017

Всех с Новым Годом! При выполнении проекта появился непонятная ситуация. После прошивки или после перезагрузки ethernet shield автоматически не запускается. Это проблема появился сегодня. До этого после прошивки после перезагрузки shield запускался автоматически. Сейчас после прошивки надо отсоединять лан кабель заново соединить и после этого работает shield. В коде глобально ничего не менял. Просто погрешность датчиков хотел перегонять

#include <DallasTemperature.h>
#include <OneWire.h>
#include <SPI.h>
#include <Ethernet.h>
 
#define ONE_WIRE_BUS 7        
 
#define TRIG_odver  2        
#define TRIG_tdver  4         
#define ECHO_odver  3        
#define ECHO_tdver  5         
 
#define PIN_DVIJ1  22
#define PIN_DVIJ2  23
 
#define PIN_TUNGUS1 24
#define PIN_TUNGUS2  25
 
int PIN_MQ1 = A0;             
int PIN_MQ2 = A1;             
 
int MQValue1 = 0;             
int MQValue2 = 0;             
 
byte mac[] = { 0x1E, 0xA2, 0xB3, 0x4F, 0x5C, 0x6D };      
IPAddress ip(192, 168, 10, 101);                            
IPAddress myDns(192, 168, 10, 1);                         
IPAddress gateway(192, 168, 10, 1);                    
IPAddress subnet(255, 255, 255, 0);                       
 
EthernetServer server(3);         
bool alreadyConnected = false;      
 
int temp1 = 0, temp2 = 0, temp3 = 0, temp4 = 0, dym1 = 0, dym2 = 0, dym3 = 0, dym4 = 0,
    dver1 = 0, dver2 = 0, dvij1 = 0, dvij2 = 0, dotvet1 = 0, dotvet2 = 0;
 
String text;
 
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
 
void setup(void) {
 
  Serial.begin(9600);     
  sensors.begin();        
 
  pinMode(TRIG_odver, OUTPUT);      
  pinMode(TRIG_tdver, OUTPUT);     
 
  pinMode(ECHO_odver, INPUT);       
  pinMode(ECHO_tdver, INPUT);       
 
  pinMode(PIN_DVIJ1, INPUT);
  pinMode(PIN_DVIJ2, INPUT);
 
  pinMode(PIN_TUNGUS1, OUTPUT);
  pinMode(PIN_TUNGUS2, OUTPUT);
 
  digitalWrite(PIN_TUNGUS1, LOW);
  digitalWrite(PIN_TUNGUS2, LOW);
  /********************************************************************************************/
  Ethernet.begin(mac, ip, subnet);
  if (Ethernet.hardwareStatus() == EthernetNoHardware) {
    Serial.println("Ethernet shield was not found.  Sorry, can't run without hardware. :(");
    while (true) {
      delay(1); 
    }
  }
 
  if (Ethernet.linkStatus() == LinkOFF) {
    Serial.println("Ethernet cable is not connected.");
  }
 
  server.begin();
  Serial.print("Chat server address:");
  Serial.println(Ethernet.localIP());
  /*******************************************************************************************/
}
 
void loop(void) {
 
  // wait for a new client:
  EthernetClient client = server.available();
  if (client) {
 
    if (alreadyConnected == false) {
      client.flush();
      Serial.println("We have a new client");
      alreadyConnected = true;
    }
 
    if (client.available() > 0) {
      char thisChar = client.read();
      Serial.println(thisChar);
 
      if (thisChar == 's') {
        sensors.requestTemperatures();
        delay(10);
        temp1 = (int) sensors.getTempCByIndex(0);
 
        delay(5);
        temp2 = (int) sensors.getTempCByIndex(1);
 
        delay(10);
        temp3 = (int) sensors.getTempCByIndex(2);
 
        delay(10);
        temp4 = (int) sensors.getTempCByIndex(3);
 
        digitalWrite(TRIG_odver, LOW);
        delayMicroseconds(5);
        digitalWrite(TRIG_odver, HIGH);
        delayMicroseconds(20);
        digitalWrite(TRIG_odver, LOW);
        dotvet1 = pulseIn(ECHO_odver, HIGH, 30000);
        dver1 = dotvet1 / 58;
 
        digitalWrite(TRIG_tdver, LOW);
        delayMicroseconds(5);
        digitalWrite(TRIG_tdver, HIGH);
        delayMicroseconds(20);
        digitalWrite(TRIG_tdver, LOW);
        dotvet2 = pulseIn(ECHO_tdver, HIGH, 30000);
        dver2 = dotvet2 / 58;
 
        MQValue1 = analogRead(PIN_MQ1);       
        MQValue2 = analogRead(PIN_MQ2);       
 
        dvij1 = digitalRead(PIN_DVIJ1);
        dvij2 = digitalRead(PIN_DVIJ2);
 
        text = String(temp1) + "t" + String(temp2) + "t" + String(MQValue1) + "t" + String(MQValue2) + "t" + String(dvij1) + "t" + String(dver1) + "t" +
               String(temp3) + "t" + String(temp4) + "t" + String(0) + "t" + String(0) + "t" + String(dvij2) + "t" + String(dver2) + "t";
 
        server.print(text);
        Serial.println(text);
 
        Serial.print("MQ9 value1 = ");        
        Serial.println(analogRead(PIN_MQ1));
        Serial.print("MQ9 value2 = ");        
        Serial.println(analogRead(PIN_MQ2));
 
        Serial.print("T1= ");                 
        Serial.println((int)temp1);
        Serial.print("T2= ");                
        Serial.println((int)temp2);
        Serial.print("T3= ");                
        Serial.println((int)temp3);
        Serial.print("T4= ");                 
        Serial.println((int)temp4);
 
        Serial.print("dver 1 := ");          
        Serial.println(dver1);
        Serial.print("dver 2 := ");           
        Serial.println(dver2);
 
        Serial.print("dvij 1 := ");
        Serial.println(dvij1);
        Serial.print("dvij 2 := ");
        Serial.println(dvij2);
      }
 
      if (thisChar == 'a') {
        digitalWrite(PIN_TUNGUS1, HIGH);
        delay(3000);
        digitalWrite(PIN_TUNGUS1, LOW);
        Serial.println("Взрыв аппаратной");
      }
 
      if (thisChar == 'd') {
        digitalWrite(PIN_TUNGUS2, HIGH);
        delay(3000);
        digitalWrite(PIN_TUNGUS2, LOW);
        Serial.println("Взрыв дизельной");
      }
    }
  }
}

 

agnec2001
Offline
Зарегистрирован: 08.11.2019

А почему решили, что не запускается ?

Что будет если после 

044   Serial.begin(9600);

вывести в терминал какое-нибудь сообщение ?