Sari la conținut
ELFORUM - Forumul electronistilor

I2C pro mini


aureliu67

Postări Recomandate

 

Pentru display cu conexiune de tip I2C trebuie sa folosesti alta librarie, cea folosita de tine este pentru un display normal cu comanda pe portul paralel si foloseste sase pini.

In cazul tau se folosesc doar doi pini pentru comanda.Aici gasesti ce si cum se face.

 

Link spre comentariu

Trebuie sa folosesti LiquidCrystal_I2C. Uite un exemplu de cod functional de la mine, va trebui sa-l modifici putin inainte sa-l compilezi:

#include <Wire.h>
#include <LiquidCrystal_I2C.h>

#define BACKLIGHT_PIN     13

#include <enc28j60.h>
#include <EtherCard.h>
#include <net.h>



// Demo using DHCP and DNS to perform a web client request.
// 2011-06-08 <jc@wippler.nl> http://opensource.org/licenses/mit-license.php

#include <EtherCard.h>

// ethernet interface mac address, must be unique on the LAN
static byte mymac[] = { 0x74, 0x69, 0x69, 0x2D, 0x30, 0x31 };
static byte myip[] = { 192, 168, 1, 200 }; // static ip address

byte Ethernet::buffer[500];
static BufferFiller bfill;
static uint32_t timer;

//const char website[] PROGMEM = "modoran.zapto.org";

// called when the client request is complete
/*static void my_callback (byte status, word off, word len) {
//Serial.println("\n\nWebsite response:");
Ethernet::buffer[off + 300] = 0;
BufferFiller bfill;
Serial.print((const char*) Ethernet::buffer + off);
//Serial.println("...");
//}*/

LiquidCrystal_I2C  lcd(0x27, 2, 1, 0, 4, 5, 6, 7); // 0x27 is the I2C bus address for an unmodified backpack

void setup() {
	// activate LCD module
	lcd.begin(16, 2); // for 16 x 2 LCD module
	lcd.setBacklightPin(3, POSITIVE);
	lcd.setBacklight(HIGH);
	lcd.home();
	lcd.print("Arduino ENC28J60");


	Serial.begin(57600);
	//Serial.println(F("\n[webClient]"));

	if (ether.begin(sizeof Ethernet::buffer, mymac) == 0)
		Serial.println(F("Failed to access Ethernet controller"));


	if (!ether.dhcpSetup())
		Serial.println(F("DHCP failed"));

	/*if (!ether.dnsLookup(website))
	Serial.println("DNS failed");*/

	/*ether.printIp("IP:  ", ether.myip);
	ether.printIp("GW:  ", ether.gwip);
	ether.printIp("DNS: ", ether.dnsip);

	#if 1
	// use DNS to resolve the website's IP address
	if (!ether.dnsLookup(website))
	Serial.println("DNS failed");
	#elif 2
	// if website is a string containing an IP address instead of a domain name,
	// then use it directly. Note: the string can not be in PROGMEM.
	char websiteIP[] = "192.168.0.1";
	ether.parseIp(ether.hisip, websiteIP);
	#else
	// or provide a numeric IP address instead of a string
	byte hisip[] = { 192,168,0,1 };
	ether.copyIp(ether.hisip, hisip);
	#endif

	ether.printIp("SRV: ", ether.hisip);

	Serial.println ("Setup complete");*/
	lcd.setCursor(2, 1);
	lcd.print(ether.myip[0]); lcd.print("."); lcd.print(ether.myip[1]); lcd.print(".");
	lcd.print(ether.myip[2]); lcd.print("."); lcd.print(ether.myip[3]);
	/*delay(5000);
	lcd.clear();*/
}


static word homePage() {
	bfill = ether.tcpOffset();
	long t = millis() / 1000;
	bfill.emit_p(PSTR(
		"HTTP/1.0 200 OK\r\nContent-Type: text/html\r\nPragma: no-cache\r\n\r\n<meta http-equiv='refresh' content='1'/>"
		"<title>Arduino enc2j60</title><body><html><u>Arduino Ethernet ENC28J60 webserver </u><BR><B>Temperat </B>  <br>"
		"D3 state:  <br> <br> Seconds $L</body></html>"), t);

	return bfill.position();
}

void loop() {

	word len = ether.packetReceive();  word pos = ether.packetLoop(len);
	if (pos) ether.httpServerReply(homePage()); // if valid tcp data received send web page
												/*ether.packetLoop(ether.packetReceive());

												if (millis() > timer) {
												timer = millis() + 5000;
												Serial.println();
												//Serial.print("<<< REQ ");
												ether.browseUrl(PSTR("/"), "ip.php", website, my_callback);
												}
												lcd.home (); // set cursor to 0,0
												//  ether.printIp(ether.myip());
												//lcd.print(ether.myip);
												lcd.setCursor (0, 1);       // go to start of 2nd line
												lcd.print(millis());
												delay(100);
												lcd.setBacklight( LOW );      // Backlight off
												delay(250);
												lcd.setBacklight( HIGH );     // Backlight on
												delay(1000);*/
}

 

Link spre comentariu

Creează un cont sau autentifică-te pentru a adăuga comentariu

Trebuie să fi un membru pentru a putea lăsa un comentariu.

Creează un cont

Înregistrează-te pentru un nou cont în comunitatea nostră. Este simplu!

Înregistrează un nou cont

Autentificare

Ai deja un cont? Autentifică-te aici.

Autentifică-te acum
×
×
  • Creează nouă...

Informații Importante

Am plasat cookie-uri pe dispozitivul tău pentru a îmbunătății navigarea pe acest site. Poți modifica setările cookie, altfel considerăm că ești de acord să continui.Termeni de Utilizare si Ghidări