Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

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

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

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.01.2020, 13:48   #1
Umar95
Пользователь
 
Регистрация: 21.02.2016
Сообщений: 21
По умолчанию 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, 13:53   #2
Desc
Участник клуба
 
Аватар для Desc
 
Регистрация: 21.11.2007
Сообщений: 1,063
По умолчанию

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


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Технологии сети, fddi, fast ethernet, ethernet, token ring Алексей_2012 Помощь студентам 2 14.11.2016 03: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