Sie sind auf Seite 1von 10

ProgramadorelectrnicoparalavadoraconArduino

Estahistoriapodracomenzaras:Eraseunavezunalavadoraconcuatroaos
deantigedadalaqueseleestropeelprogramadordigital.

EsunalavadoradelamarcaHaier,delagamabarata,elmotoresuniversaly
absolutamente todo se controlaba a travs del programador digital de la
lavadora. Estuve barajando la compra del programador, pero no mereca
realizarelgastode150euros,cuandopor50eurosmspodaadquirirotra,
pero la consigna del reciclaje y no sucumbir a la obsolescencia programada,
meanimaronarealizarunprogramadorparalavadoraconArduino.

Comenzamos:
Primero desmont completamente la lavadora, dejando unicamente el chasis de
acero, con la finalidad de lijarlo y sanar las zonas con corrosin, los
cableslosetiquetantesdecomenzaradesmontar.

Etiquetandoloscables

Aquconelchasisdelalavadora,pintandoyreparandolacorrosin.

Aqu la electrocerradura, normalmente te la vas a


encontrarigualomuyparecida,disponedeunconector
con tres conexiones, un cable de fase o linea, un
cable neutro y el de salida de alimentacin a la
mquina, ste cable normalmente de alimentacin a la
mquina ser compartido entre el comn de las
electrovlvulas, bomba de desage e interruptor
trmico de seguridad del motor. Cuando se cierra la
puerta y se le introduce carga entre el L y N, la
corriente atraviese una aleacin de metal que ofrece
una resistencia especfica y se calienta, al
calentarse se dobla y mueve unos pequeos contactos,
que cierran el circuito del interruptor, si tienes
avera con la electrocerradura, bien puedes hacer un
puente entre L e interruptor, o bien lo desmontas y
lijasloscontactosdesgastados.

ste es el programador averiado de la lavadora, fotos de la cara anterior y


posterior. Del circuito desold los componentes que creo reciclar. Una vez
extrados los componentes dej limpia la placa y lijada, con el fin de
construirsobrelamismaplacaelnuevoprogramador.

Aqula
construccin
del
programador
conunLCDde
4x20para
visualizareldesarrollo,esms
resultnparalarealizacindel
proyectointroducirunapantallade
estetipoqueunamultituddeledysucorrespondientecableado,quealfiny
alcabonoofrecertantainformacincomolapantalla.
Alfinal,nocabantodosloscomponentesenlaplacaantigua,porloqueel
frontaldelalavadora,unicamentedisponedelosbotonesypantallalcd.

Para el proyecto necesit una placa Arduino UNO, he utilizado una placa
compatibledelasbaratas,esosi,
mehadadoalgunosdoloresdecabeza,
algunospinesenestaplacaestn
cambiadoselHIGHconelLOW,porlo
tantomiconsejoesquesipuedes,te
compresunaoriginal.

Para quien no conozca arduino, decirle


que es un proyecto GNU/GPL, por lo
tanto es una placa barata en
comparacin con otras del mercado,
ademspuedesfabricarteeltuyopropio,yaquetodaslasfuentes,datasheet,
etcestnpublicados.
Arduinocontrolapuertasanalgicas,y
digitales,envaloresde0a5v,la
propiaplacadearduino,ademsde
contener"supropiocorazn"un
circuitointegradodeATMega,dispone
deunreguladordetensin,unaentrada
usbquesirvedealimentacinyunic
que"traduce"loqueenvaelordenador
alATMega,tambindisponedeuna
entradadealimentacinreguladaporlo
quepodrsalimentartuarduinodesde3voltioshastalos15,aunquelo
recomendablees5,asevitashacertrabajaralreguladoryla
correspondientedisipacindecalorquegenerar.
AquosdejolapginaoficialdeArduinohttp://www.arduino.cc/

Aqu la pgina del software para programar el Arduino, el lenguaje de


programacin ms ampliamente utilizado es el Lenguaje C o C++, un lenguaje
asequible al aprendizaje. Desde aqu quiero agradecer que muchos de los
conocimientos que tengo de este lenguaje son gracias a los magnficos
profesores que tuve en el Grado Superior de Informtica de Desarrollo de
Aplicaciones Informticas del Instituto Cristobal Monroy de Alcal de
Guadara,provinciadeSevilla,Andaluca.http://arduino.cc/en/Main/Software

Arduino puede controlar o interactuar a travs de sus pines (y sus 5v), con
una amplia gama de sensores y dispositivos. Por ejemplo unos rels
alimentadoscon5v,conlafinalidaddecontrolarlaselectrovlvulas,bomba
dedesage,electrocerradurayresistenciaquecalientaelaguadelavado.
Esmscmodoybaratocomprarestosmdulosquefabricarlosunomismo,cada
entrada dispone un optoacoplador que asla totalmente la tensin de 220v de
cargadelosrelsconlacircuiterade5vdeArduino.
Tenemos que seguir controlando el resto de la lavadora, por ejemplo el
motor,normalmentetevasaencontrarestetipodemotorenlamayoradelas
lavadoras,
es un
motor
universal
omotorde
escobillas
de entre
200 a 400
watios

Duranteelprocesodefabricacin

aproximadamente. Tambin existen


lavadoras con motores Direct Drive y
las ms antiguas con un motor de
induccin.
Enestecasosolohablaremosdelmotor
universal, para controlar la velocidad
del motor me dispongo a realizar un dimmer que soporte dicha carga, y para
que funcione durante el lavado el giro intermitente entre el sentido de las
agujasderelojyalcontrario,utilizarunrel.
Aqu tenis el proceso de fabricacin de la placa, en la
red encontrars mucha informacin de como fabricarte tu
propia placa, si bien te resumo brevemente como lo hice,
impresinenpapelblanconormalconimpresoradetonerdel
circuito, se coloca contra la placa de cobre, con una
planchacalientetransfiereseltoneralcobre,dejasunos
minutos el circuito con le papel en remojo con agua para
que se ablande y desprenda, vas retirando el papel con
cuidadoyuncepillodedienteshastaeliminarelpapel,en
una cubeta mezclar agua oxigenada y agua fuerte (cido
Disolviendoelcobre
clohdrico)al50%,introduceslaplacaymueveslentamente
lacubetahastaquedesaparezcaelcobrevisible,sacasla
placayladejasenagua,secasyretiraseltonerconunalijamuyfina,y
voil!!!yatienestucircuito.

OJO, no me hago responsable de los daos que puedas ocasionar


durante el manejo de productos, si lo haces es bajo tu
responsabilidad.

Tampoco me hago responsable de las averas que pudieras


ocasionar a tu lavadora durante cualquier proceso que puedas
llevaracabosobreella,sinosabesloquehaces,nolohagas,
adems existe riesgo de electrocucin si no tienes las
precaucionesnecesarias.
Placafinalizada

Unavezterminadalaplaca,nosdisponemosataladrarlospuntos
pordondesoldaremosloscomponenteselectrnicos.

Aqulaadquisicindeloscomponenteselectrnicosy
dispuestoalmontajedeldimmer.
LaideasobreelDimmerlatomdeTxapuzaselectrnicas,me
gustlaideadetenerundimmerconoptoacopladores
(aisladores)yunTriacdegranamperajequesoportarala
cargadelmotor.

Bien,puesdespusdelmontajeypruebasobreelmotorsobre
unabancada,ibadelujo,elproblema(queyameimaginaba)es
eltorquedelmotor,quesereducedrasticamenteyaunque
controlaslavelocidadpierdespracticamenteel95%dela
potencia,conelfindemejorarlohicelasiguienteprueba,alimentarel
motorconDCenvezdeAC,paraellopuseunpuentediodoeinclusoconun
condensadorparamejorarelarranque,yrealmentemejorenaproximadamente
un30%,noobstante,noessuficiente,meviresignadoabuscarotra
alternativa.

Aquunafotografaconeldiagramadeconexionesdelmotoruniversal,ste
enconcretodisponedetresconexionesalestator(bobinadofijo),dosalas
escobillas(roto),dosdelinterruptortrmicodeseguridadydosdel
tacmetro(estedispositivoestcolocadoalfinaldeleje,yesunpequeo
alternadorqueofrecede0a30voltiosdependiendodelasRPM.


Enestepequeodiagramapuedesobservarcomose
conectaunmotoruniversal.





Definitivamenteyporlafaltade
espacio,decidcolocarunacajaenel
lateraldelalavadoraparaalbergar
loscomponentesdelprogramador.

ParalaalimentacindeArduinohe
utilizadouncargadordelosnokia
antiguos,perocuandotuvequeutilizar
dosplacasderels,nodisponade
suficientesamperaje,ytuvequemeter
otrocargadornokia,lospuedes
observar(sinlacarcasa)enellateral
izquierdodelafotografa.
Enlapartecentralsuperiordos
modulosde4reles,debajoeldimmer
(quenosirvi),enelinferiorderecholaplacaArduinoUnocompatible,y
arribaunapequeaplacaquetienelasresistenciasPullDownyconexionesal
sensordetempratura,hidronivel,alimentaciones5vyGNDs,tambinun
buzzerparareproducirunamusiquillacuandolalavadorahaterminadola
colada.

Ahoraseguiremosconelcontroldemotor:
GoogleandoencontrunIC,elTDA1085C,deMotorola,queespecialmenteest
diseadopara
controlarestetipodemotores.
Informacinreferenteestecomponente:
AquelDatasheet
Undiagramaparafabricarlapcb.
Listadecomponentesparalapcb
Carainferiordelapcb,al
imprimirlodebeteneruntamaode
100mmx50mm
Carasuperiordedistribucinde
componentes
Lasresistenciasde0,1y5w
normalmenteseempleancomofusibles,
unaideaporsiteresultadifciladquirirla.

Tambinheencontradoquealgunaspersonasselohanfabricadoenunaplaca
perforada,aqutenislasfotosdelmontajeydelasconexiones:
Ahoramismomeencuentroenlafabricacindelreguladoryalaesperadeque
lleguenalgunoscomponentes.
Laideaessustituirelpotenciometrolinealporunpotenciometrodigital
paracontrolarloatravsdelarduino.
Seguiractualizandolainformacindeestepost.
Aquelcdigoenelqueestoytrabajando:

//CdigoCparaArduino,PROGRAMAUNIVERSALDELAVADORA
//LicenciaCreativeCommons
//Estecdigoseejecutaatravsdemilavadora,ypretendecontrolarlossiguientesinstrucciones:
//Controldeelectrovalvuladeprelavado/suavizante
//Controldeelectrovalvuladelavado
//SupervisaelsensordetemperaturadelaguatermistorNTC,yporlotantocontroldesutemperatura.
//Controlarlavelocidad(rpm)delmotoruniversal(deescobillas)conunPWM,ysieteposiblesvelocidades
//Controldeinversindegiroenlavadolentoderopa
//Controldevelocidadatravsdetacometrodelavadora?
//Controldelabombadevaciado
//Controldelhidronivel
//Controlderesistenciacalentadoradeagua
//Controldeunapantalladecristalliquidode4filaspor20columnas,concontrolI2C
//Controldebotonera:selectordetemperatura,selectorcentrifugado(lento,rpido),selectortipoderopa(tiempodelavado)
//Futurasmejoras====>inclusinderelojparaprogramarlahoradelavado(mejoradegastoenergtico)
//Estaeslarevisindecdigo1.0

#include<math.h>//SenecesitaparaelsensordetemperaturadetermistorNTClogartmica
#include<LiquidCrystal_I2C.h>
#include"pitches.h"

#include<Wire.h>//UsadoporelchipI2CRTC,eselreloj
#include"Chronodot.h"//SeutilizaparatraerydecodificarlosdatosdeRTC

ChronodotRTC;//CreandoelobjetoRTC
LiquidCrystal_I2Clcd(0x27,21,22);
unsignedlongcycleStart;//Seutilizaparahacerelseguimientodecuntotiempohaestadolavando.
//notasmeloda:
intmelody[]={
NOTE_C3,NOTE_C3,NOTE_C3,NOTE_GS2,NOTE_DS3,NOTE_C3,NOTE_GS2,NOTE_DS3,NOTE_C3,NOTE_G4,NOTE_G4,NOTE_G4,NOTE_GS4,NOTE_DS4
//notasduracin:4=quarternote,8=eighthnote,etc.:
intnoteDurations[]={
4,4,4,4,8,4,4,8,4,4,4,4,4,8,4,4,8,4};

//Designandopines
#defineOFFHIGH//noencuentroexplicacinporquemefuncionanalcontrario(@####@@#@#@#aaaaaarrrrrrgggggggg)
#defineONLOW
#definePinSinUtilizar00//PINSINUTILIZAR
#defineMotorVelocidad11//pinlavadolento
#defineMotorVelocidad22//pincentrifugadolento
#defineMotorVelocidad33//pincentrifugadorapido
//BOTONES
#defineBotonTemperatura4//pinbotondetemperatura
#defineBotonCentrifugado5//pinbotondeseleccinvelocidadcentrifugado
#defineBotonInicio6//pinbotondeinicio
//#definePinBuzzer7//BUZZERMUSICAFINAL
#defineCalentadorAgua8//pinencienderesistencia
#defineVaciadoPin9//pinbombadesague
#defineAguaIn111//pinelectrovalculaprelavadoosuavizante
#defineAguaIn210//pinelectrovalculalavadoojabn
#defineHidronivel12//pinhidronivel
//#definePinPuerta13//PINPUERTA
//Analgicos
#definetempSensorA4//pinthermistor
//#definebotonGOA1
//#definebotonStopA2
//#definePinSinUtilizarA3A3//PINSINUTILIZAR
//#definePinSinUtilizarA4A4//PINSINUTILIZAR
//#definePinPuertaA5//PINPUERTA

voidsetup(){
Wire.begin();//UsadoporelRTC
RTC.begin();//Igualmente
lcd.begin(20,4);//20x4LCDPanel

//declarandoposicindelasentradasdelospines
pinMode(Hidronivel,INPUT);
pinMode(tempSensor,INPUT);
pinMode(AguaIn1,OUTPUT);
pinMode(AguaIn2,OUTPUT);
pinMode(VaciadoPin,OUTPUT);
pinMode(CalentadorAgua,OUTPUT);
pinMode(MotorVelocidad1,OUTPUT);
pinMode(MotorVelocidad2,OUTPUT);
pinMode(MotorVelocidad3,OUTPUT);
//pinMode(MotorReverse,OUTPUT);
//pinMode(PinPuerta,OUTPUT);
//pinMode(botonGO,INPUT);
//digitalWrite(botonGO,ON);//activarresistenciadeactuacininternaparaestepindeentrada
//pinMode(botonStop,INPUT);

//INICIALIZOLOSPINESAOFFOLOW
digitalWrite(AguaIn1,OFF);
digitalWrite(AguaIn2,OFF);
digitalWrite(VaciadoPin,OFF);
digitalWrite(CalentadorAgua,OFF);
digitalWrite(MotorVelocidad1,LOW);
digitalWrite(MotorVelocidad2,LOW);
digitalWrite(MotorVelocidad3,LOW);
//digitalWrite(MotorReverse,OFF);
//===========================estoestabaenelloop===============================================//
lcd.backlight();
lcd.setCursor(0,0);
lcd.print(F("Iniciando..."));
//digitalWrite(PinPuerta,ON);//cierralapuerta
//delay(3000);
//Irbotnfuepresionado,ejecuteatravsdelosciclos
//OJOCONTROLARCUANDOPASADEUNAFUNCINAOTRA
cycleStart=millis();
//VaciandoLavadora(15000,0);//unpocodevaciadoantesdecomenzar15sec
delay(100);
//llenarAgua(120000,1);//CUBETAPRELAVADO:valvulaprelavado/suavizante1,valvulajabon2
delay(100);
MotorLavado(600000,4,40);//PRELAVADO10MINUTOS(600000)parametro1=tiempodelavado,parametro2=pantalla"Lavando/Prelavado",p
delay(100);
VaciandoLavadora(120000,2);
delay(100);
//llenarAgua(120000,2);//JABN:valvulaprelavado/suavizante1,valvulajabon2
delay(100);
//MotorLavado(1200000,3,10);//LAVADOparametro1=tiempodelavado,parametro2=pantalla"Lavando",parametro3=temperatura
delay(100);
//VaciandoLavadora(120000,2);//VACIAPARACOGERSUAVIZANTE
delay(100);
//llenarAgua(120000,1);//SUAVIZANTE:valvulaprelavado/suavizante1,valvulajabon2
delay(100);
//MotorLavado(300000,5,0);//SUAVIZANTEparametro1=tiempo,parametro2=pantalla"Suavizante",parametro3=temperatura
delay(100);
//VaciandoLavadora(120000,2);
delay(1000);
//CentrifugadoSuave(120000);//SUAVEparametro1=tiempo1,5minutos=90000ms
//CentrifugadoFuerte(60000);//FUERTEparametro1=tiempo
delay(1000);
lcd.clear();
lcd.setCursor(0,3);
lcd.print(F("Lavadofinalizado"));
//digitalWrite(PinPuerta,LOW);
delay(10000);
musica();
musica();
lcd.clear();
//lcd.noBacklight();

//===========================finestoestabaenelloop===============================================//
}
//==================================================================================================
//==================================COMIENZOFUNCIONESDEPURADAS======================================
//==================================================================================================
doubleTermistor(intRawADC){
constfloatresistor=9800;//Elvalorenohmniosdelaresistenciadeltermistora25C
constfloatvoltage=4.76;//Elvoltajerealenelpunto5VccdetuplacaArduino
//Paraahorrarclculoslodefinimoscomoconstanteenestapartedelprograma
constfloatK=273.15;//ParapasaragradosKelvin
constfloate=2.718281828459045;//Constantematemtica
constfloatB=3760;//ValorBetadetutermistor,loconseguienestapagina,sinotendrasquecalcularlohttp://www.amwei.com/view
constfloatunodivr=1/(resistor*pow(e,(B/298.15)));//Conpowelevamosealresultado
floatT=0;//DeclaramoslavariableTemperatura
floattmedia;//Variableparacalcularmedia
intcnt;//temperaturamediaycontador
intgrados,decimas;//Paraponerlecomaalresultado(enespaol)
intsensorPin=A4;//Seleccionalaentradaparaeltermistor
intsensorValue=0;//Aqualmacenamoselvalordelsensor
//Parte1:Leemoselpuertoanalgico0yconvertimoselvalorenvoltios.
sensorValue=analogRead(sensorPin);//Leemosanalgico0
floatv2=(voltage*float(sensorValue))/1024.0f;
//Parte2:Calcularlaresistenciaconelvalordelosvoltiosmediantelaecuacindeldivisordevoltaje
//voltage=4.83
//R2=10000
//R1=Thermistorresistance
//V2=v2
//soV2=(R2*V)/(R1+R2)
//andr1=((r2*v)/v2)r2<final
floatr1a=(voltage*float(resistor))/v2;
floatr1=r1aresistor;
//Parte3:CalcularlatemperaturabasandoseenlaecuacinSteinhartHartylaecuacindelvalorBeta.
//T=B/ln(r1/rinfinit)
T=B/log(r1*unodivr);
T=T273.15;//ConvertimosdeKelvinaCyyatenemoslatemperatura
//ahoraobtenemoslaparteentera
grados=(int)T;
grados=(grados24);//chapuzamia
returngrados;
}
voidllenarAgua(unsignedlongtiempo,intvalvula){//DOBLESISTEMADESEGURIDAD,PORTIEMPOYPORHIDRONIVEL
lcd.begin(20,4);
lcd.clear();
muestraPantalla(1);
unsignedlongtiempollenado=millis();
inthidronivelestado=0;
hidronivelestado=digitalRead(Hidronivel);//lecturadelpinhidronivel
//while(((millis()tiempollenado)<tiempo)&&(hidronivelestado==0)){
while(((millis()tiempollenado)<tiempo)){
//while(hidronivelestado==HIGH){
if(valvula==1){digitalWrite(AguaIn1,ON);}else{digitalWrite(AguaIn2,ON);}
hidronivelestado=digitalRead(Hidronivel);
}
digitalWrite(AguaIn1,OFF);
digitalWrite(AguaIn2,OFF);
delay(100);
lcd.begin(20,4);
lcd.clear();
}
voidVaciandoLavadora(unsignedlongtiempo,intpantalla){//argumento1=tiempo,argumento2=1(iniciando)2(vaciando)
unsignedlongvaciadoTiempo=millis();
muestraPantalla(pantalla);
while((millis()vaciadoTiempo)<tiempo){
digitalWrite(VaciadoPin,ON);
delay(100);
}
digitalWrite(VaciadoPin,OFF);
delay(100);
lcd.begin(20,4);
lcd.clear();
}
voidMotorLavado(unsignedlongtiempo,intpantalla,inttemperatura){//argumento1=tiempo,argumento2=indicacinpantalla,argument
lcd.begin(20,4);//Lapantallaaparececuandoelmotorentraenaccin
muestraPantalla(pantalla);
unsignedlongtmpmotorgiro=millis();
//temperaturavariablesylecturas
intval;//Creaunavariableentera
inttemp;//Variabledetemperatura=temp
val=analogRead(A4);//Leeelvalordelpinanalogo2ylomantienecomoval
temp=Termistor(val);//RealizalaconversindelvaloranalogoagradosCelsius
while(temp<temperatura){//mientrasnoalcancelatemperaturaestaactivadolaresistenciacalentadoradeagua
digitalWrite(CalentadorAgua,ON);
delay(100);
temp=Termistor(val);//devuelvelatemperatura
}
digitalWrite(CalentadorAgua,OFF);
//fintemperaturavariablesylecturas
while((millis()tmpmotorgiro)<tiempo){//mientraslavado,giraenmotorenambossentidos
muestraPantalla(pantalla);
while(temp<temperatura){//mientrasnoalcancelatemperaturaestaactivadolaresistenciacalentadoradeagua
digitalWrite(CalentadorAgua,ON);
delay(100);
temp=Termistor(val);//devuelvelatemperatura
}
digitalWrite(CalentadorAgua,OFF);
//fintemperaturavariablesylecturas
//GIRAADERECHA
digitalWrite(MotorVelocidad1,HIGH);
delay(3000);
digitalWrite(MotorVelocidad1,LOW);
delay(6000);

}
digitalWrite(CalentadorAgua,OFF);
delay(100);
digitalWrite(MotorVelocidad1,LOW);
delay(100);
lcd.begin(20,4);
lcd.clear();
}
voidCentrifugadoSuave(unsignedlongtiempo){
lcd.begin(20,4);//Lapantallaaparececuandoelmotorentraenaccin
digitalWrite(VaciadoPin,ON);
unsignedlongtmpmotorgiro=millis();
while((millis()tmpmotorgiro)<tiempo){//mientraslavado,giraenmotorenambossentidos
//digitalWrite(MotorVelocidad1,HIGH);
//digitalWrite(MotorVelocidad2,HIGH);
digitalWrite(MotorVelocidad3,HIGH);//soloel3500rpm
delay(100);
muestraPantalla(6);
}
digitalWrite(MotorVelocidad1,LOW);
digitalWrite(MotorVelocidad2,LOW);
digitalWrite(MotorVelocidad3,LOW);
delay(10000);
digitalWrite(VaciadoPin,OFF);
lcd.begin(20,4);
lcd.clear();
}
voidCentrifugadoFuerte(unsignedlongtiempo){
lcd.begin(20,4);//Lapantallaaparececuandoelmotorentraenaccin
unsignedlongtmpmotorgiro=millis();
while((millis()tmpmotorgiro)<tiempo){//mientraslavado,giraenmotorenambossentidos
//1500rpm
digitalWrite(MotorVelocidad1,HIGH);
digitalWrite(MotorVelocidad2,HIGH);
digitalWrite(MotorVelocidad3,HIGH);
digitalWrite(VaciadoPin,ON);
delay(100);
muestraPantalla(7);
}
delay(10000);
digitalWrite(VaciadoPin,OFF);
delay(100);
digitalWrite(MotorVelocidad1,LOW);
digitalWrite(MotorVelocidad2,LOW);
digitalWrite(MotorVelocidad3,LOW);
delay(100);
lcd.begin(20,4);
lcd.clear();
}
voidmusica(){
for(intthisNote=0;thisNote<18;thisNote++){
intnoteDuration=1000/noteDurations[thisNote];
tone(7,melody[thisNote],noteDuration);//conectaelpin7
intpauseBetweenNotes=noteDuration*1.30;
delay(pauseBetweenNotes);
noTone(7);//desconectaelpin7
}
}
//==================================================================================================
//==================================================================================================
//==================================================================================================

voidmuestraPantalla(bytecurrentMode){//Noestoycontentoconestarutina.Necesitatrabajarla
unsignedlongelapsedSeconds=((millis()cycleStart)/1000);//Vamosconelnmerodesegundostranscurridos
unsignedlongelapsedMinutes=(elapsedSeconds/60);
unsignedlongelapsedHours=(elapsedMinutes/60);
lcd.setCursor(0,0);
lcd.print(F("Tiempolavado:"));
if(elapsedHours>0){//Nomostrarlashorastranscurridassihatranscurridomenosdeunahora.
lcd.print(elapsedHours);
lcd.print(':');
if(elapsedHours==1)elapsedMinutes=60;
if(elapsedHours==2)elapsedMinutes=120;
}
if(elapsedMinutes<10){//Slomuestraunsolodgito,porloquenecesitauncerodems.
lcd.print('0');
}
//temperatura
intval;//Creaunavariableentera
inttemp;//Variabledetemperatura=temp
val=analogRead(A4);//Leeelvalordelpinanalogo2ylomantienecomoval
temp=Termistor(val);//RealizalaconversindelvaloranalogicoagradosCelsius
//temperatura
lcd.print(elapsedMinutes);
lcd.setCursor(0,1);
lcd.print(F("TempAgua:"));
lcd.print(temp);
delay(1000);
lcd.print('C');
lcd.setCursor(0,3);
switch(currentMode){
case0:
lcd.print(F("Iniciando"));
break;
case1:
lcd.print(F("Llenando"));
break;
case2:
lcd.print(F("Vaciando"));
break;
case3:
lcd.print(F("Lavandoropa"));
break;
case4:
lcd.print(F("10minutosPrelavado"));
break;
case5:
lcd.print(F("Suavizante"));
break;
case6:
lcd.print(F("Centrifugadosuave"));
break;
case7:
lcd.print(F("Centrifugadofuerte"));
break;
}
}

voidloop(){/*
intval=analogRead(A4);//Leeelvalordelpinanalogicoylomantienecomoval
inttemp=Termistor(val);//RealizalaconversindelvaloranalogicoagradosCelsius

lcd.clear();
lcd.setCursor(0,1);
lcd.print(F("TempAgua:"));
lcd.print(temp);
delay(1000);
lcd.print('C');

while(temp<65){//mientrasnoalcancelatemperaturaestaactivadolaresistenciacalentadoradeagua
digitalWrite(CalentadorAgua,ON);
delay(100);
temp=Termistor(val);//devuelvelatemperatura
lcd.clear();
lcd.setCursor(0,1);
lcd.print(F("TempAgua:"));
lcd.print(temp);
delay(1000);
lcd.print('C');
}
digitalWrite(CalentadorAgua,OFF);
*/
}

Das könnte Ihnen auch gefallen