Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Инженерный раздел > Микроконтроллеры, робототехника, схемотехника, 3D принтеры
Регистрация

Восстановить пароль
Повторная активизация e-mail


Ответ
 
Опции темы
Старый 05.01.2020, 14:48   #1
Umar95
Пользователь
 
Регистрация: 21.02.2016
Сообщений: 20
По умолчанию Arduino Ethernet shield

Всех с Новым Годом! При выполнении проекта появился непонятная ситуация. После прошивки или после перезагрузки 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("Взрыв дизельной");
      }
    }
  }
}
Umar95 вне форума Ответить с цитированием
Старый 13.01.2020, 14:53   #2
Desc
Форумчанин
 
Аватар для Desc
 
Регистрация: 21.11.2007
Сообщений: 535
По умолчанию

Проверьте резисторную сборку RN1. По схеме это резсторы по 49,9 Ом. Иногда китайцы паяют не то что нужно, а то что есть.
На фото ниже, установлена левая сборка на 510 Ом. Соответственно рассогласование линии.
Изображения
Тип файла: jpg RN1.jpg (33.0 Кб, 0 просмотров)
Desc вне форума Ответить с цитированием
Ответ

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Технологии сети, fddi, fast ethernet, ethernet, token ring Алексей_2012 Помощь студентам 2 14.11.2016 04:02
USB Shield Nik Raider Софт 14 24.02.2012 17:06
Install Shield Express Mustang Софт 2 29.09.2007 12:13
install shield 4 Рина БД в Delphi 3 09.08.2007 17:46