Xwork's Blog

The lord is waiting to take your hand.

Vamos a programar #72 - Calculadora de resistencias para diodos LED (ver. Java para android).

No hay comentarios.
Hola de nuevo a todo, el día de hoy vamos a ver el código en java para hacer una calculadora de resistencias para diodos LED.

En los post anteriores vimos cómo hacer la calculadora en javascript para los navegadores y en C# para las computadoras de escritorio ahora con está versión tenemos la versión para los teléfonos móviles.

Cómo el código (y su funcionamiento) es muy similar al de las otras versiones vamos a pasar directamente a el. El código que hacer funcionar la calculadora es el siguiente:

package com.mdev.ledrescalc;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.RadioButton;

public class MainActivity extends Activity {
EditText ETVin, ETVLed, ETILed, ETNLed, ETResult;
Button BtnCalc;
RadioButton RConexion1, RConexion2;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		ETVin = findViewById(R.id.ETVin);
		ETVLed = findViewById(R.id.ETVLed);
		ETILed = findViewById(R.id.ETILed);
		ETNLed = findViewById(R.id.ETNLed);
		ETResult = findViewById(R.id.ETResult);
		BtnCalc = findViewById(R.id.BtnCalc);
		RConexion1 = findViewById(R.id.Conexion1);
		RConexion2 = findViewById(R.id.Conexion2);
		BtnCalc.setOnClickListener(new View.OnClickListener() {
			@Override
			public void onClick(View v) {
				ETResult.setText(CalculateRes(ETVin.getText().toString(),ETVLed.getText().toString(),ETILed.getText().toString(),ETNLed.getText().toString(),RConexion1.isChecked()));
			}
		});
	}

	private String CalculateRes(String VIn, String VLed, String ILed, String NLed, boolean Serie)
	{
		double Corriente = 0;
		double DropVol = 0;
		double TotalRes = 0;
		double TotalVolt = 0;
		double Potencia = 0;
		double Vin = Double.parseDouble(VIn);
		double Vled = Double.parseDouble(VLed);
		double Iled = Double.parseDouble(ILed);
		double Nled = Double.parseDouble(NLed);
		if (Serie)
		{
			TotalVolt = Vled * Nled;
			if (Vin < TotalVolt){
				return "El voltaje es bajo";
			}
			Corriente = Iled;
			DropVol = Vin - TotalVolt;
			TotalRes = DropVol/Corriente;
			Potencia = Corriente * DropVol;
			return "Se necesita una resistencia de "+ TotalRes +" ohm(s) de una potencia de superior a "+ Potencia + " Watt(s)";
		}
		else{
			TotalVolt = Vled;
			if (Vin < TotalVolt){
				return "El voltaje es bajo";
			}
			Corriente = Iled * Nled;
			DropVol = Vin - TotalVolt;
			TotalRes = DropVol/Corriente;
			Potencia = Corriente * DropVol;
			return "Se necesita una resistencia de "+ TotalRes +" ohm(s) de una potencia de superior a "+ Potencia + " Watt(s)";
		}
	}
}

EL código anterior solo consta de una funcion llamada "CalculateRes()" qué cómo su nombre lo sugiere, se usa para hacer el cálculo para saber el valor de la resistencia necesaria. Recibe cinco parametros. Los primeros cuatro son del tipo "String" y que en orden de aparicion se usan para:

  1. El voltaje de entrada.
  2. El voltaje del LED.
  3. La corriente del LED.
  4. El número de LED's conectados.
El quinto parámetro es del tipo "boolean" y se usa para indicar se las conexiones son en serie o paralelo.

Con la anterior tenemos la calculadorra lista para poder usarla en el celular. Cómo de costumbre puede bajar el APK ya compilado o puedes descargar el código fuente; recuerda que solo incluye el código fuente y se quito la gran mayoria de archivos generados por android studio.

Los leo luego.

No hay comentarios. :

Publicar un comentario

Vamos a programar #71 - Calculadora de resistencias para diodos LED (ver. C#).

No hay comentarios.
Hola de nuevo a todos, el día de hoy vamos a continuar con mas sobre resistencias y diodos LED.
En el post anterior vimos el código en javascript que ya disponible en el blog para que lo revises y para que lo pruebes en linea (ya está corregido un par de errores que tenía).
Cómo el código es realmente similar al anterior, simplemente lo pongo para que lo revises, la explicación es un tanto similar a la versión en Javascript.

El código.


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace LedResCalculator
{
	public partial class FrmMain : Form
	{
		
	private string CalculateRes(decimal VIn, decimal VLed, decimal ILed, int NLed, bool Serie)
	{
		decimal Corriente = 0;
		decimal DropVol = 0;
		decimal TotalRes = 0;
		decimal TotalVolt = 0;
		decimal Potencia = 0;
		if (Serie)
		{
			TotalVolt = VLed * NLed;
			if (VIn < TotalVolt){
				return "El voltaje es bajo";
			}
			Corriente = ILed;
			DropVol = VIn - TotalVolt;
			TotalRes = DropVol/Corriente;
			Potencia = Corriente * DropVol;
			return "Se necesita una resistencia de "+ TotalRes +" ohm(s) de una potencia de superior a "+ Potencia + " Watt(s)";
		}
		else{
			TotalVolt = VLed;
			if (VIn < TotalVolt){
				return "El voltaje es bajo";
				}
				Corriente = ILed * NLed;
				DropVol = VIn - TotalVolt;
				TotalRes = DropVol/Corriente;
				Potencia = Corriente * DropVol;
				return "Se necesita una resistencia de "+ TotalRes +" ohm(s) de una potencia de superior a "+ Potencia + " Watt(s)";
			}
	}
		public FrmMain()
		{
			InitializeComponent();
		}

		private void BtnCalculate_Click(object sender, EventArgs e)
		{
			TxtResult.Text = CalculateRes(NUDVolt.Value, NUDVLed.Value, NUDILed.Value, (int)NUDNLED.Value, RBConexion1.Checked);
		}
	}
}

EL código consta de una sola función llamada "CalculateRes()" y recibe cinco parámetros; los primeros tres son del tipo "decimal" y en orden representan: el voltaje de entrada, el voltaje del LED y la corriente del LED. El siguiente parámetro es del tipo "int" y nos servirá para indicar el número de LED's que se conectan. Finalmente el parámetro llamado "Serie" del tipo "bool" nos indica si la conexión está en serie cuando su valor es "true". La decisión de usar valores del tipo decimal es simple, los controles "NumericUpDown" devuelven un valor de este tipo cuando se accede a la propiedad "Value" y es un tipo bastante adecuado para llevar a cabo la tarea que queremos realizar.

Cómo de costumbre el código lo puedes descargar de mi dropbox para probarlo.

Los leo luego.

No hay comentarios. :

Publicar un comentario

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

No hay comentarios.
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. :

Publicar un comentario