Enviar desde una página web un mensaje a una pantalla LCD 16x2 conectada al Arduino.
Lista de elementos utilizados:
-Una Protoboard
-Un LCD 16x2
-Un Potenciómetro
-Un Arduino UNO
-Cables
-Un Arduino Ethernet Board
Diagrama Esquemático del Circuito
Fotos del Montaje.
Vídeo funcionamiento:
Código fuente arduino:
-Un LCD 16x2
-Un Potenciómetro
-Un Arduino UNO
-Cables
-Un Arduino Ethernet Board
Diagrama del montaje en la protoboard:
Diagrama Esquemático del Circuito
Fotos del Montaje.
Vídeo funcionamiento:
Código fuente arduino:
- // include the library code:
- #include <LiquidCrystal.h>
- #include <SPI.h>
- #include <Ethernet.h>
- #define max_he 255
- // initialize the library with the numbers of the interface pins
- LiquidCrystal lcd(7, 6, 5, 4, 3, 2);
- // Enter a MAC address and IP address for your controller below.
- // The IP address wixll be dependent on your local network:
- byte mac[] = {
- 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
- IPAddress ip(192,168,1,14); //direccion ip configurada para funcionar con el servidor.
- // Initialize the Ethernet server library
- // with the IP address and port you want to use
- // (port 80 is default for HTTP):
- EthernetServer server(80);
- String Http = String(max_he);
- void setup() {
- // set up the LCD's number of columns and rows:
- lcd.begin(16, 2);
- // Print a message to the LCD.
- lcd.print(">>");
- Http = "";
- // start the Ethernet connection and the server:
- Ethernet.begin(mac, ip);
- server.begin();
- Serial.begin(9600);
- Serial.print("server is at ");
- Serial.println(Ethernet.localIP());
- }
- void loop() {
- // set the cursor to column 0, line 1
- // (note: line 1 is the second row, since counting begins with 0):
- //lcd.setCursor(0, 1);
- // print the number of seconds since reset:
- //lcd.print(millis()/1000);
- // Turn off the display:
- lcd.noDisplay();
- delay(500);
- // Turn on the display:
- lcd.display();
- delay(500);
- // listen for incoming clients
- EthernetClient client = server.available();
- if (client) {
- Serial.println("new client");
- // an http request ends with a blank line
- boolean currentLineIsBlank = true;
- while (client.connected()) {
- if (client.available()) {
- char c = client.read();
- if (Http.length() < max_he){
- Http += c;
- }
- // if you've gotten to the end of the line (received a newline
- // character) and the line is blank, the http request has ended,
- // so you can send a reply
- if (c == '\n' && currentLineIsBlank) {
- // send a standard http response header
- client.println("HTTP/1.1 200 OK");
- client.println("Content-Type: text/html");
- client.println("Connection: close"); // the connection will be closed after completion of the response
- client.println("Refresh: 30"); // refresh the page automatically every 5 sec
- client.println();
- client.println("<!DOCTYPE HTML>");
- client.println("<html>");
- client.println("<form method=\"GET\">");
- client.println("<input type=\"text\" name=\"msg\" size=\"10\" />");
- client.println("<input type=\"submit\">");
- client.println("</form>");
- client.println("</html>");
- break;
- }
- if (c == '\n') {
- // you're starting a new line
- currentLineIsBlank = true;
- }
- else if (c != '\r') {
- // you've gotten a character on the current line
- currentLineIsBlank = false;
- }
- }
- }
- // give the web browser time to receive the data
- delay(1);
- int firstPos = Http.indexOf("?");
- if(firstPos > -1){
- int lastPos = Http.indexOf(" ", firstPos+5);
- String text = Http.substring(firstPos+5, lastPos);
- // Serial.print("[" + text + "]");
- lcd.print(text);
- Http = "";
- }
- // close the connection:
- client.stop();
- Serial.println("client disonnected");
- }
- }