domingo, 20 de mayo de 2012

Arduino + Shield Ethernet

Realiza un programa utilizando arduino + la shield ethernet  y se trata acerca de un servidor, lo que hace es que controla 3 leds desde un servidor, prendes cada uno de ellos y aumentas o bajas su intensidad.

Material Utilizado:

Arduino +Shield Ethernet
3 leds
3 resistencias
1 cable ethernet

Còdigo

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 

//mac, IP
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte ip[] = { 192,168,1,6 };
EthernetServer server(80);//ethernet server port 80
//pines out LED
int Red = 5;
int Green = 4;
int Blue = 3;
//para activar los colores del LED
boolean flatRed = false;
boolean flatGreen = false;
boolean flatBlue = false;
//para controlar la intesidad de luz
int steep=15;//paso de intensidad de color en los LEDs
int depth=120;//intensidad inicial
boolean reading = false;


//HTML creacion de formulario
const char html[] =
"
" "" "" "" " " "" "
"; void setup(){ Serial.begin(9600); //iniciar conexion Ethernet.begin(mac, ip); server.begin(); //activar pines pinMode(Red,OUTPUT); pinMode(Green,OUTPUT); pinMode(Blue,OUTPUT); } void loop() { // Escuchar a los clientes que entran EthernetClient client = server.available(); if (client) { // una peticion http termina con una linea en blanco boolean currentLineIsBlank = true; boolean sentHeader = false; server.print(html);//puesta HTML en servidor while (client.connected()) { if (client.available()) { if(!sentHeader){ sentHeader = true; } char c = client.read(); if(reading && c == ' ') reading = false; if(c == '?') reading = true; //encuentra ? donde inicia la informacion if(reading){ Serial.print(c);//imprime lo que recibe del cliente //control del LED if(c == '3'){ flatRed = false; analogWrite(Red , LOW); //lo desactiva y lo apaga flatGreen = false; analogWrite(Green , LOW); flatBlue = true; //activa el color del LED break; } if(c == '4'){ flatRed = false; analogWrite(Red , LOW); flatGreen = true; flatBlue = false; analogWrite(Blue , LOW); break; } if(c == '5'){ flatRed = true; flatGreen = false; analogWrite(Green , LOW); flatBlue = false; analogWrite(Blue , LOW); break; } //para intensificar botones 1 sube, 2 baja if(c == '1'){ if(depth == 255) depth=255; else depth = depth+steep; break; } if(c == '2'){ if(depth == 0) depth=0; else depth = depth-steep; break; } } if (c == '\n' && currentLineIsBlank) break; if (c == '\n') { currentLineIsBlank = true; }else if (c != '\r') { currentLineIsBlank = false; } } } delay(1); // give the web browser time to receive the data client.stop(); // close the connection: } if (flatRed == true) analogWrite(Red , depth); if (flatGreen == true) analogWrite(Green,depth); if (flatBlue == true) analogWrite(Blue ,depth); }

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 

byte mac[]={ 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte ip[]={ 192,168,1,6 };

EthernetServer server(80);

int disp [10][8]={{7,8,4,3,2,6},{8,4},{7,8,5,2,3},{7,8,5,4,3},{6,5,8,4},{7,6,5,4,3},{2,3,4,5,6,7},{8,4,7},{2,3,4,5,6,7,8},{4,5,6,7,8}};
int i;
const char html[] = 
"
" "" "" "
"; void setup(){ Serial.begin(9600); Ethernet.begin(mac, ip); server.begin(); pinMode(2,OUTPUT); pinMode(3,OUTPUT); pinMode(4,OUTPUT); pinMode(5,OUTPUT); pinMode(6,OUTPUT); pinMode(7,OUTPUT); pinMode(8,OUTPUT); } void loop(){ EthernetClient client =server.available(); if (client){ Serial.print("hola/n"); server.print(html); while(client.connected()){ if(client.available()){ int j = client.read(); digitalWrite(2,LOW); digitalWrite(3,LOW); digitalWrite(4,LOW); digitalWrite(5,LOW); digitalWrite(6,LOW); digitalWrite(7,LOW); digitalWrite(8,LOW); for (i = 0; i < 8; i = i + 1) { digitalWrite(disp[j][i],HIGH); } delay(1000); } } } }

1 comentario:

  1. 6 pts lab integrados; con un poco de explicación hubiera sido mejor

    ResponderEliminar