Arduino schéma - arduino.sk

ENC28J60 Ethernet Module

Programovanie arduina
Príspevky: 6
Registrovaný: Str 20. Feb 2013 0:19:11

Re: ENC28J60 Ethernet Module

Poslaťod xaperle » Pia 22. Mar 2013 0:07:36

Môj problém spočíva v zamrznutí ethernet modulu po nejakom čase. Arduino šľape lebo na LCD sa mení teplota ale cez net sa nedá pingnut. Môžete ma naviesť kde by mohla byť chyba? Knižnicu na ethernet používam tú čo dal sem TomXX

Kód: Vybrať všetko
#include <EtherShield.h>
#include <ETHER_28J60.h>
#include <OneWire.h>
#include <DallasTemperature.h>
#include <LiquidCrystal.h>
#define ONE_WIRE_BUS 8
LiquidCrystal lcd(7, 6, 5, 4, 3, 2);
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);

DeviceAddress insideThermometer = {
  0x28, 0x76, 0x4B, 0x67, 0x04, 0x00, 0x00, 0x25 };
DeviceAddress outsideThermometer = {
  0x28, 0xA7, 0x54, 0x67, 0x04, 0x00, 0x00, 0xC5 };

static uint8_t mac[6] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 1xED};
static uint8_t ip[4] = {192, 168, 1, 18};
static uint16_t port = 80;

ETHER_28J60 ethernet;

void setup()
{
  ethernet.setup(mac, ip, port);
  sensors.setResolution(insideThermometer, 10);
  sensors.setResolution(outsideThermometer, 10);
  lcd.begin(16, 2);
 
}

void loop()
{
   sensors.requestTemperatures();
float vnutorna = sensors.getTempC(outsideThermometer);
float vonkajsia = sensors.getTempC(insideThermometer);
    lcd.setCursor(0,0);
    lcd.print("vonkajsia  ");
    lcd.print(vonkajsia);
    lcd.setCursor(0, 2);
    lcd.print("vnutorna  ");
    lcd.print(vnutorna);
 
  if (ethernet.serviceRequest())
  {
    ethernet.print("<CENTER>""<H2>vnutorna</H2>");
    ethernet.print ("<i>""<H1>""<CENTER>");
    ethernet.print(vnutorna); ethernet.print(" C");
     ethernet.print ("</i>""</H1>");
    ethernet.print("<CENTER>""<H2>vonkajsia</H2>");
    ethernet.print ("<CENTER>""<i>""<H1>");
    ethernet.print(vonkajsia); ethernet.print(" C");
    ethernet.print ("</i>""</H1>");
 
    ethernet.respond();
  }
}

Obrázok užívateľa
Príspevky: 311
Registrovaný: Pon 19. Nov 2012 12:01:08
Bydlisko: HC/BA

Re: ENC28J60 Ethernet Module

Poslaťod tomXX » Pia 22. Mar 2013 10:33:55

xaperle: osobne by som asi nečítal teploty a nevypisoval hodnoty v každej iterácii hlavnej slučky loop, dal by som ich čítať a vypisovať povedzme každú sekundu a v hlavnej slučke by bolo len čakanie na http request.

PS: ten HTML kód máš úplne zle, pozri si napr. http://www.jakpsatweb.cz/html/ alebo http://www.w3schools.com/html/default.asp

Kód: Vybrať všetko
unsigned long last_millis;

void loop(){
   if (millis() > last_millis + 1000){
      sensors.requestTemperatures();
      float vnutorna = sensors.getTempC(outsideThermometer);
      float vonkajsia = sensors.getTempC(insideThermometer);
      lcd.setCursor(0,0);
      lcd.print("vonkajsia  ");
      lcd.print(vonkajsia);
      lcd.setCursor(0, 2);
      lcd.print("vnutorna  ");
      lcd.print(vnutorna);
      last_millis = millis();
   }
   if (ethernet.serviceRequest()){
      ethernet.print("<H2>vnutorna</H2><H1>");
      ethernet.print(vnutorna);
      ethernet.print(" C</H1><H2>vonkajsia</H2><H1>");
      ethernet.print(vonkajsia);
      ethernet.print(" C</H1>");
      ethernet.respond();
   }
}
blog.sitepoint.sk - zaujímavé riešenia okolo Arduina

Predchádzajúci

Späť na Software