BMP085 + Mega2560 + W5100

BlackWarrior
Offline
Зарегистрирован: 07.09.2013

Простите за глупый вопрос, но...

А связка BMP085 + Mega2560 + W5100 работает? Не конфликтует?

MaksMS
Offline
Зарегистрирован: 11.03.2013

А чего ей конфликтовать ??

Gippopotam
Gippopotam аватар
Offline
Зарегистрирован: 12.09.2014

Работает, не конфиктует.

BlackWarrior
Offline
Зарегистрирован: 07.09.2013

Странная тогда у меня чепуха выходит:

Приемник 433MHz подключаю без W5100 - работает (пин11). Ставлю W5100, подключаю приемник на пин8, правлю скетч, заливаю и всё. 

Вот скетч:

//Adruino Mega2560
//красный - питание | синий - земля
//желтый - дата | зеленый - дата цифровая
//Ethernet Shield W5100 (pin:4,10,11,12,13,50,51,52)
//433Mhz приемник (pin7)
//радио модуль NRF24L01+
//датчик температуры и давления BMP085 (pinSDA(20), pinSCL(21))
//
//Описание блока:
//* считывает информацию с WeatherStation (при помощи 433Mhz приемника)
//* измеряет температуру и давление в помещении (датчик BMP085)
//* общение (прием и передача данных) при помощи модуля NRF24L01+ с Relay модулями (состояния модулей должны запоминаться)
/////////////////////////////////////

#include <VirtualWire.h>
#include <EasyTransferVirtualWire.h>

//create object
EasyTransferVirtualWire ET; 

//наша структура данных. она должна быть определена одинаково на приёмнике и передатчике кроме того, размер структуры не должен превышать 26 байт (ограничение VirtualWire)
struct SEND_DATA_STRUCTURE{
  byte ID;
  int temperature;    
  int humidity;
  int rain;
};

//переменная с данными нашей структуры
SEND_DATA_STRUCTURE mydata;

void setup(){
  ET.begin(details(mydata));
  Serial.begin(9600);
  vw_set_ptt_inverted(true); // Required for DR3100
  vw_setup(2000);  // Bits per sec
  vw_set_tx_pin(7);

  Serial.println("Avalon Project Server Started");
  delay(1000);
  Serial.println("Welcome!");
  
  vw_rx_start();       // Start the receiver PLL running
  
  pinMode(13, OUTPUT);  
}

void loop(){
  //check and see if a data packet has come in. 
  if(ET.receiveData()){
     digitalWrite(13, HIGH); // включаем светодиод для отображения процесса передачи
     Serial.println("");
     Serial.print("ID: ");
     Serial.print(mydata.ID);
     Serial.print(" | Temperature: ");
     Serial.print(mydata.temperature);
     Serial.print("*C | Humidity: ");
     Serial.print(mydata.humidity);
     Serial.print("% | Rain: ");
     Serial.print(mydata.rain);
     Serial.println("");
     digitalWrite(13, LOW); // включаем светодиод для отображения процесса передачи
    }
    
  } 

Это я дурак или где?

alexvs
Offline
Зарегистрирован: 22.07.2014

У Вас в коде упоминается NRF24, так может проблема между w5100  и NRF24? Оба используют SPI.

 

BlackWarrior
Offline
Зарегистрирован: 07.09.2013

NRF, как видите, не подключен

MaksMS
Offline
Зарегистрирован: 11.03.2013

NRF24 Вообще не мешает w5100, если код правельно написан..

alexvs
Offline
Зарегистрирован: 22.07.2014

Предпочитаю NRF24 выносить на SoftSPI.

MaksMS
Offline
Зарегистрирован: 11.03.2013

Ну на любителя... но м/к один фиг только одно действие  выполняет в один момент.. Если только езернет или нрф по прерыванию что-то отправляют..