SyedWaqad's picture
Create app.py
551bd7a verified
import gradio as gr
def calculate_vdc(num_resistors, resistances, connection_type, target_current):
# Convert space-separated resistance values to floats
try:
r_list = [float(r) for r in resistances.split()]
if len(r_list) != num_resistors:
return "⚠️ Number of resistance values does not match the count!", ""
except:
return "⚠️ Invalid resistance values!", ""
# Equivalent resistance
if connection_type == "Series":
req = sum(r_list)
else:
try:
req = 1 / sum([1/r for r in r_list])
except:
return "⚠️ Invalid parallel combination!", ""
# Voltage calculation
vdc = req * target_current
# Suggest nearest standard DC supply
standard_vdc_levels = [3, 5, 6, 9, 12, 15, 24, 48]
nearest_vdc = min(standard_vdc_levels, key=lambda x: abs(x - vdc))
result = (
f"Equivalent Resistance: {req:.3f} Ω\n"
f"Target Current: {target_current:.3f} A\n"
f"Required VDC: {vdc:.3f} V\n"
)
suggestion = f"Nearest Standard DC Voltage Source: {nearest_vdc} V"
return result, suggestion
# ----------------------
# Gradio Interface
# ----------------------
with gr.Blocks(title="DC Voltage Source Selector") as demo:
gr.Markdown("## 🔋 DC Voltage Source Selector")
gr.Markdown(
"Enter the number of resistors, their values, and connection type.\n"
"The app will calculate the required **DC voltage source**."
)
num_resistors = gr.Number(label="Number of Resistors", value=1, precision=0)
resistances = gr.Textbox(
label="Enter Resistance Values (space-separated, in ohms)",
placeholder="Example: 10 20 30"
)
connection_type = gr.Radio(
["Series", "Parallel"],
label="Connection Type",
value="Series"
)
target_current = gr.Number(
label="Desired Current (A)",
value=0.1,
step=0.01
)
output_text = gr.Textbox(label="Calculation Result")
suggestion = gr.Textbox(label="Recommended DC Voltage Source")
btn = gr.Button("Calculate Voltage")
btn.click(
calculate_vdc,
inputs=[num_resistors, resistances, connection_type, target_current],
outputs=[output_text, suggestion]
)
demo.launch()