h1 LED resistor calculator
p Input electric current value and diode working characteristics:
form
  .line
    label(for="#currentValue") Input's voltage:
    input#sourceU(type="text", size="4", placeholder = "12")
  .line
    label(for = "#diodeU") Diode voltage:
    input#diodeU(type = "text", size = "4", placeholder = "3")
  .line
    label(for = "#diodeI") Diode current (mA):
    input#diodeI(type = "text", size = "4", placeholder = "20")
  
  label#solution Your should use a resistor not less than #[strong 0 &#x3A9] ;
View Compiled
// variables
$font-size: 18px;


body {
  font-family: sans-serif;
  font-size: 16px;
}
.line {
  display: block;
  & label {
    width: 10em;
    margin: .5em;
    display: inline-block;
  }
}
#solution {
  font-size: 1.25em;
  & strong {
    color: #900;
    font-size: 1.25em;
  }
}
View Compiled
// DOM vars:
var diodeVoltage = document.getElementById("diodeU");
var inputVoltage = document.getElementById("sourceU");
var diodeCurrent = document.getElementById("diodeI");
var solutionR = document.getElementById("solution");
// Logic VARs:
var diode = {
  voltage: Number(diodeVoltage.value),
  current: Number(diodeCurrent.value)
};
var input = {
  voltage: Number(inputVoltage.value)
};
var resistor = 0;
var omegaEnding = " \u03A9";
// initial settings with defaults
input.voltage === 0 ? input.voltage = 12 : input.voltage;
diode.current === 0 ? diode.current = 20 : diode.current;
diode.voltage === 0 ? diode.voltage = 3 : diode.voltage;
console.log("We have now:\n" + diode.voltage + "\n" + diode.current + "\n" + input.voltage);

// Logic
function calculateResistor() {
  if (input.voltage <= diode.voltage) {
    console.log("You can't use either input or such diode. Input voltage might be not less then " + diode.voltage + " \u03A9\n");
    input.voltage = 12;
    console.log(input.voltage);
    resistor = Math.ceil((input.voltage - diode.voltage) * 1000 / diode.current);
    console.log("Resistor calculated: " + resistor + " \u03A9\n");
    solutionR.children[0].innerText = resistor + omegaEnding;
    // make this rows red
  } else {
    console.log("Ok, input is bigger then diode, calculating...\n");
    resistor = Math.ceil((input.voltage - diode.voltage) * 1000 / diode.current);
    console.log("Resistor calculated: " + resistor + " \u03A9\n");
    solutionR.children[0].innerText = resistor + omegaEnding;
  }
}

calculateResistor();

inputVoltage.addEventListener("input", function(){
  console.log("Catching the input.voltage change");
  input.voltage = Number(inputVoltage.value);
  console.log("input.voltage: " + input.voltage);
  calculateResistor();
});

diodeVoltage.addEventListener("input", function(){
  console.log("Catching the diode.voltage change");
  diode.voltage = Number(diodeVoltage.value);
  console.log("diode.voltage: " + diode.voltage);
  calculateResistor();
});

diodeCurrent.addEventListener("input", function(){
  console.log("Catching the diode.current change");
  diode.current = Number(diodeCurrent.value);
  console.log("diode.current: " + diode.current);
  calculateResistor();
});

External CSS

This Pen doesn't use any external CSS resources.

External JavaScript

This Pen doesn't use any external JavaScript resources.