Veremos como a través de un Ethernet Shield, se diseña una interfaz Web que permita señalar en grados la posición de un servo movido a través de un potenciometro.
- Una (1) Protoboard
- Un (1) Ethernet Shield
- Un (1) Servo
- Un (1) Potenciometro de 1kOhm
- Un (1) Arduino UNO
- Cable UTP
Diagrama del Montaje en la Protoboard:
- Paso UNO:
Escoger los elementos a implementar,
- Para este caso usaremos:
Ethernet Shild
Servo
Y Potenciometro
Se conecta la Ethernet Shild al Arduino,
- Paso DOS:
Se cablea el servo, el potenciometro y la LCD Shild.
!Eureka¡ a Probar...
Vídeo del Funcionamiento:
Código Fuente en Arduino:
File dafile = SD.open("datalog.txt",FILE_WRITE);
ResponderEliminardafile.print(",");
dafile.println (dataString);
dafile.close();
Serial.println(dataString);
}
}
variablesegundos = minute();
if (variablesegundos == F)
{
dataString += String("Fin d riego Sd Card");
dataString +=",";
dataString += String(String(hour()) + ":" + String(minute()) + ":" + String(second()));
dataString +=",";
File dafile = SD.open("datalog.txt",FILE_WRITE);
dafile.print(",");
dafile.println (dataString);
dafile.close();
Serial.println(dataString);
}
} }
boolean esHoraRiego()
{
momentoInicio = (horaInicio * 60)+ minutoInicio;
int momentoFin = (horaFin * 60)+ minutoFin;
int momentoAhora = (hour() * 60)+ minute();
if((momentoInicio <= momentoAhora) && (momentoAhora < momentoFin))
{
return true;
}
else
{
return false;
}
}
#include
ResponderEliminar#include
#include
#include
LiquidCrystal lcd(7, 6, 5, 4, 3, 2);
int EVpin = 9; //Puerto de salida de encendido Bomba
int EVpinn = 8; //Puerto de salida de Sd
int momentoInicio;
char variableminutosI;
char variablesegundos;
char variablesegundoss;
const int chipSelect = 10;
int I = 0;
int F = 3;
byte horaInicio = 8, minutoInicio = I;
byte horaFin = 8, minutoFin = F;
int variableSd =0;
String dataString="";
void setup()
{
pinMode (EVpin, OUTPUT);
pinMode (EVpinn, OUTPUT); //salida Sd
Serial.begin(9600);
setTime(7,59,00,03,06,2015); //hora y fecha
lcd.begin(16,2);
lcd.print("Sistema de Riego");
lcd.setCursor(0,1);
lcd.print("Inicializando.");
delay(1000);
lcd.clear();
lcd.setCursor(0,1);
lcd.print("Inicializando..");
delay(1000);
lcd.clear();
lcd.setCursor(0,1);
lcd.print("Inicializando...");
delay(3000);
lcd.clear();
{
Serial.println(" Comprobando Sd");
pinMode(chipSelect,OUTPUT);
lcd.print(" Comprobando SD");
delay(3000);
lcd.clear();
if(!SD.begin(chipSelect))
{
Serial.println("Fallo de inicializando Sd Card ... ");// verificando la Sd Card
lcd.print("Fallo Sd Card ... ");
delay(2000);
lcd.clear();
return;
}
Serial.println("Inicializando Sd Card correcta ... "); // verificando la Sd Card
lcd.print("Sd Card correcta ... ");
delay(2000);
lcd.clear();
}
}
void loop()
{
//condicion de encendido de bomba
lcd.setCursor(0,0);
Serial.print("Son las:");
lcd.print("Son Las");
lcd.setCursor(9,0);
Serial.println(String(hour()) + ":" + String(minute()) + ":" + String(second()));
lcd.print(String(hour()) + ":" + String(minute()) + ":" + String(second()));
if(esHoraRiego())
{
lcd.setCursor(0,1); //posicion lcd Es Hora de Riego
Serial.println("Es hora de Riego");
lcd.println("Es hora de Riego");
digitalWrite (EVpin, HIGH);//Encienda Bomba
}
else
{
lcd.setCursor(0,1); //posicion lcd NO es Hora de Riego
Serial.println("No es hora de Riego");
lcd.print("Riego en descanso");
digitalWrite (EVpin, LOW); //Apague Bomba
}
delay(1000);
sdcard();
}
void sdcard()
{
variableSd = digitalRead(9);
if (variableSd == 1)
{
for (int I=0; I<60; I+3) new cambbio
// for (F=3; F<60; F++)
{
variableminutosI = minute(),variablesegundoss = second();
if ((variableminutosI == I) && (variablesegundoss == 1))
{
dataString += String("Inicio riego Sd Card");
dataString +=",";
dataString += String(String(hour()) + ":" + String(minute()) + ":" + String(second()));
dataString +=",";
ayuda no c como poder incrementar los valores en este el encendido de la bomba para el riego en necesito sugerencias
ResponderEliminar