Vamos a programar #70 - Calculadora de resistencias para diodos LED (ver. Javascript).

Hola de nuevo a todos, el día de hoy vamos a ver cómo hacer una calculadora en javascript que sirva para calcular que resistencia debemos de usar si queremos utilizar un diodo LED con un voltaje mayor a esperado.
Pero antes, unas consideraciones. Primero: esta no es la forma más eficiente de alimentar un LED, ya que mucha energia es deperdiciada. Segundo: Usar una sola resistencia para limitar la corriente que varios LED's no es lo mas recomendable; si se van a hacer uso de varios LED's lo mas recomendable sería poner una resistencia por cada LED que se conecte, es decir calcular el valor de cada uno y ponerle su resistencia y no cómo la imagen. En la calculadora es meramente ilustrativo.

 Ahora si, con las previsiones hechas, pasemos al código de la calculadora.

El código en javascript que hace funcionar la calculadora es el siguiente:

<html>
<head>
<title>Calculadora de resistencias para LED's</title>
<style type="text/css">
.h1RC
{
    font-size: 16px;
}
.formResCal{
    font: 95% Arial, Helvetica, sans-serif;
    max-width: 400px;
    margin: 10px auto;
    padding: 16px;
    background: #F9F9F9;
}
.textareaRC
{
    width: 100%;
    height: 150px;
    padding: 2px 5px;
    box-sizing: border-box;
    border: 2px solid #229;
    border-radius: 4px;
    resize: none;
    -webkit-transition-duration: 0.4s; /* Safari */
    transition-duration: 0.4s;
}

.textareaRC:focus
{
    width: 100%;
    height: 150px;
    padding: 2px 5px;
    box-sizing: border-box;
    border: 2px solid #0000BB;
    border-radius: 4px;
    resize: none;
}

.TextRC
{
    width: 100%;
    box-sizing: border-box;
    border: 2px solid #999;
    border-radius: 4px;
}

.ButtonRC
{
width: 100%;
    background-color: #57a2e2;
    border: none;
    color: white;
    padding: 15px 32px;
    text-align: center;
    text-decoration: none;
    display: inline-block;
    -webkit-transition-duration: 0.4s; /* Safari */
    transition-duration: 0.4s;
}

.ButtonRC:hover
{
width: 100%;
    background-color: #276775;
    border: none;
    color: white;
    padding: 15px 32px;
    text-align: center;
    text-decoration: none;
    display: inline-block;
}
</style>
<script type="text/javascript">

function RadioSelected(){
var radios = document.getElementsByName('Conexion');
	for (var i = 0, length = radios.length; i < length; i++) {
		if (radios[i].checked) {
			return Number(radios[i].value)
		}
	}
}

function CalculateRes()
{
	var VIn = Number(document.getElementById('InV').value);
	var VLED = Number(document.getElementById('LEDV').value);
	var ILED = Number(document.getElementById('LEDI').value);
	var NLED = Number(document.getElementById('LEDN').value);
	var Corriente = 0;
	var DropVol = 0;
	var TotalRes = 0;
	var TotalVolt = 0;
	var Potencia = 0;
	var ConexionType = RadioSelected();
	if (ConexionType == 1){
		TotalVolt = VLED * NLED;
		if (VIn < TotalVolt){
			alert('El voltaje es bajo');
			return;
		}
		Corriente = ILED;
		DropVol = VIn - TotalVolt;
		TotalRes = Math.ceil(DropVol/Corriente);
		Potencia = Corriente * DropVol;
		document.getElementById('Result').value = "Se necesita una resistencia de "+ TotalRes +"ohm(s) de una potencia de superior a "+ Potencia + " Watt(s)";
		}
		else{
		TotalVolt = VLED;
		if (VIn < TotalVolt){
			alert('El voltaje es bajo');
			return;
		}
		Corriente = ILED * NLED;
		DropVol = VIn - TotalVolt;
		TotalRes = Math.ceil(DropVol/Corriente);
		Potencia = Corriente * DropVol;
		document.getElementById('Result').value = "Se necesita una resistencia de "+ TotalRes +"ohm(s) de una potencia de superior a "+ Potencia + " Watt(s)";
		}

}
</script>
</head>
<body>
		<form class="formResCal">
			<span class="h1RC">Voltaje de alimentacion (V):</span><br />
			<input class="TextRC" id="InV" type="number" value = "5" placeholder = "Voltaje en volts"></input><br />
			<span class="h1RC">Voltaje del LED (V):</span><br />
			<input class="TextRC" id="LEDV" type="number" value = "3.1" placeholder = "Voltaje en volts"></input><br />
			<span class="h1RC">Corriente del LED (A):</span><br />
			<input class="TextRC" id="LEDI" type="number" value = "0.02" placeholder = "Corriente en Amperes"></input><br />
			<span class="h1RC">Numero de LED's:</span><br />
			<input class="TextRC" id="LEDN" type="number" value = "1"></input><br />
			<input type="radio" name="Conexion" value="1" checked> Serie<br>
			<input type="radio" name="Conexion" value="2"> Paralelo con una sola resistencia<br>
		<br>
			<input class="ButtonRC" id="ToAny" onclick="CalculateRes()" type="button" value="Calcular" /><br />
			<br />
			<span class="h1RC">Resultado:</span><br />
			<textarea class="textareaRC" id="Result" rows="5" placeholder = "Resultado"></textarea><br/>
			<br />
		</form>
</body>
</html>

Cómo podrás observar, simplemente pasamos a la computadora los cálculos que hicimos la vez pasada. El programa consta de dos funciones solamente. La primera de ellas es "RadioSelected()", que cómo su nombre lo indica, su trabajo es revisar cual de los controles del tipo "radio" es el que está seleccionado de la colección "Conexion", para ello itera a traves de todos los elementos y cuando encuentra uno que tenga la propiedad "checked" en "true" devuelve el valor del indice de este elemento.

Luego tenemos la funcion "CalculateRes()" primero lo que hacemos es obtener los valores que necesitamos usado la función "document.getElementById()" y los asignamos a la variables, luego se manda a llamar a la función "RadioSelected()" para ver que tipo de conexión es la que tienen los LED, en este caso, cuando es uno, significa que la conexión es en serie en caso contrario es paralelo .
Si revisas los apartado, veras que son muy similares y de hecho lo son, pero la diferencia, es que cuando la conexión es en serie, el voltaje aumenta y la corriente permanece, entonces la diferencia esta en cómo se mide esta, en una será la corriente que tenga la variable "VIn" y en la otra será la que resulte de multiplicar {"VIn * NLED"} donde "NLED" es el número de LED's conectados.

Finalmente, el resultado de los cálculos de la resistencia y la potencia se asignan al control "textarea" llamado "Result".

Cómo podrás ver, los cálculos son realmente sencillos y muy fáciles de portar a otro lenguajes; cosa que haremos la siguiente semana, ya que al igual que otros de los programas que hemos hecho, haremos una versión web, de escritorio y móvil.

El código lo puedes descargar de mi dropbox para que lo pruebes, pero además en breve subiré una versión al blog para que se pueda usar.

Y bien, por ahora es todo, en el próximo post veremos la version de C#.

Los leo luego.

No hay comentarios.