1
votes

I'm trying to make a GUI of an electronic circuit, and I need to calculate the frequency based on the resistance and capacitance, which you can select from a Panel containing Radio Buttons.

function pushbutton1_Callback(hObject, eventdata, handles)
global myDataR
global myDataC

R1=get(handles.radiobutton1,'Value');
R2=get(handles.radiobutton2,'Value');
R3=get(handles.radiobutton3,'Value');
R4=get(handles.radiobutton4,'Value');

if R1
    myDataR.val=1;
elsif R2
    myDataR.val= 2;
elsif R3
    myDataR.val=3;
elsif R4
    myDataR.val=5;
end

C1=get(handles.radiobutton5,'Value');
C2=get(handles.radiobutton6,'Value');
C3=get(handles.radiobutton7,'Value');
C4=get(handles.radiobutton8,'Value');

if C1
    myDataC.val=6;
elsif C2
    myDataC.val=10;
elsif C3
    myDataC.val=15;
elsif C4
    myDataC.val=20;
end

r=myDataR;
c=myDataC;
f=1/(2*pi*r*c);
set(handles.text3,'String',strcat(num2str(f*1000,2),' Hz'))

I wrote this code in the pushbutton section, to calculate and show the frequency, but I get the error ** matlab.graphics.internal.figfile.FigFile/read>@(hObject,eventdata)oscil('pushbutton1_Callback',hObject,eventdata,guidata(hObject)) Error while evaluating UIControl Callback. **

1
Without the code that makes the GUI, we cannot reproduce the error you are getting.Kenneth Boyd

1 Answers

0
votes

This may or may not be useful. It is a Graphical User Interface (GUI) that uses the SelectionChangedFcn callback method/listener to find out the value of the Resistance and Capacitance as any of the radio buttons have been pressed. You may need to parse the strings accordingly if you use Text that isn't a set of numbers for the radio buttons.

Frequency Calculator GUI

%******************************************************%
%GUI ELEMENT SETUP/PROPERTIES%
%******************************************************%

global Resistance;
global Capacitance;

%Default values%
Resistance = "10KΩ";
Capacitance = "10µF";

%App figure properties%
App = uifigure();
App.Name = "Resistor and Capacitor Frequency Calculator";
X_Position = 200; Y_Position = 200; Height = 200; Width = 600;
App.Position = [X_Position Y_Position Width Height];

%Container for resistor radio buttons%
Resistor_Button_Group = uibuttongroup('Parent',App);  
X_Position = 50; Y_Position = 25; Height = 150; Width = 150;
Resistor_Button_Group.Position = [X_Position Y_Position Width Height];

%Resistor radio buttons%
X_Position_Button = 10; Y_Position_Button = 20; Height = 15; Width = 140; Offset = Height + 10;
Resistor_1 = uiradiobutton(Resistor_Button_Group,'Position',[X_Position_Button Y_Position_Button Width Height]);
Resistor_1.Text = '5KΩ (Resistor 1)';
Resistor_2 = uiradiobutton(Resistor_Button_Group,'Position',[X_Position_Button Y_Position_Button+Offset Width Height]);
Resistor_2.Text = '10KΩ (Resistor 2)';
Resistor_3 = uiradiobutton(Resistor_Button_Group,'Position',[X_Position_Button Y_Position_Button+2*Offset Width Height]);
Resistor_3.Text = '20KΩ (Resistor 3)';
Resistor_4 = uiradiobutton(Resistor_Button_Group,'Position',[X_Position_Button Y_Position_Button+3*Offset Width Height]);
Resistor_4.Text = '40KΩ (Resistor 4)';

%Container for capacitor radio buttons%
Capacitor_Button_Group = uibuttongroup('Parent',App); 
X_Position = 220; Y_Position = 25; Height = 150; Width = 150;
Capacitor_Button_Group.Position = [X_Position Y_Position Width Height];

%Capacitor radio buttons%
X_Position_Button = 10; Y_Position_Button = 20; Height = 15; Width = 140; Offset = Height + 10;
Capacitor_1 = uiradiobutton(Capacitor_Button_Group,'Position',[X_Position_Button Y_Position_Button Width Height]);
Capacitor_1.Text = '10µF (Capacitor 4)';
Capacitor_2 = uiradiobutton(Capacitor_Button_Group,'Position',[X_Position_Button Y_Position_Button+Offset Width Height]);
Capacitor_2.Text = '1µF (Capacitor 3)';
Capacitor_3 = uiradiobutton(Capacitor_Button_Group,'Position',[X_Position_Button Y_Position_Button+2*Offset Width Height]);
Capacitor_3.Text = '200nF (Capacitor 2)';
Capacitor_4 = uiradiobutton(Capacitor_Button_Group,'Position',[X_Position_Button Y_Position_Button+3*Offset Width Height]);
Capacitor_4.Text = '100nF (Capacitor 1)';


%Callbacks to update the resistance and capacitance upon new selection%
Resistor_Button_Group.SelectionChangedFcn = @Update_Resistance;
Capacitor_Button_Group.SelectionChangedFcn = @Update_Capacitance;

%Function to update the resistance%
function Update_Resistance(~,event)
    global Resistance;
    global Capacitance;
    Resistance_Label = event.NewValue.Text;
    Resistance = strsplit(Resistance_Label," ");
    Resistance = Resistance{1};
    Calculate(Resistance,Capacitance);
end

%Function to update the capacitance%
function Update_Capacitance(~,event)
    global Resistance;
    global Capacitance;
    Capacitance_Label = event.NewValue.Text;
    Capacitance = strsplit(Capacitance_Label," ");
    Capacitance = Capacitance{1};
    Calculate(Resistance,Capacitance);
end

%Function to parse and calculate the frequency%
function Calculate(Resistance,Capacitance)
    disp(Resistance);
    disp(Capacitance);
    disp('----------')
    %Parse the resistance and capacitance strings and calculate frequency%


end

Ran using MATLAB R2019b