Всех с Новым Годом! При выполнении проекта появился непонятная ситуация. После прошивки или после перезагрузки 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("Взрыв дизельной");
}
}
}
}