Guten Tag erstmal,
Ich stehe vor folgendem Problem:
Ich möchte den Ladevorgang eines Kondensators Visualisieren.
Jedoch will mir partout nicht einfallen wie ich die Formel des Ladevorgangs:
U(t)=U*(1-exp^t/R*C)
in meiner Anwendung darstellen, bzw. in einem Koordinatensystem zeichen soll
Hier der Quelltext:
Ich bin für jede Hilfestellung dankbar!
Mit freundlichem Gruß,
Huggybear
Ich stehe vor folgendem Problem:
Ich möchte den Ladevorgang eines Kondensators Visualisieren.
Jedoch will mir partout nicht einfallen wie ich die Formel des Ladevorgangs:
U(t)=U*(1-exp^t/R*C)
in meiner Anwendung darstellen, bzw. in einem Koordinatensystem zeichen soll
Hier der Quelltext:
Code:
import java.awt.*;
import java.awt.event.*;
public class Kondensator extends Frame
{
int rectWidth = 30;
int rectHeight = 12;
private double u_min = 0; // Startwert für U
private double r_start = 0; // Startwert für den Widerstand
private double c_start = 0; // Startwert für die Kapazität
private TextField tfu_min = new TextField("");
private TextField tfr_start = new TextField("");
private TextField tfc_start = new TextField("");
private Label lbu = new Label("U=");
private Label lbr = new Label("R=");
private Label lbc = new Label("C=");
private Label lbueb = new Label("Ladevorgang eines Kondensators"); // Überschrift des Programms
private Label lblad = new Label("Ladekurve des Kondensators:"); // Überschrift des Koordinatensystems
private Label lbrsz = new Label("R"); //Beschriftung Schaltplan
private Label lbusz = new Label("U"); //Beschriftung Schaltplan
private Label lb_meldung = new Label();
private Button b1 = new Button("Berechne"); // Button
//------------------------------Frame Kondensator---------------------------------------------
public static void main (String args[])
{
Kondensator malik = new Kondensator();
}
public Kondensator()
{
super("Kondensator");
setSize(750,500);
setLocation(100,100);
setVisible(true);
addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent event)
{
System.exit(0);
}
});
setLayout(null); // Layout zuweisen
//-------------------------------Bounden und----------------------------------------------
lbu.setBounds(50,70,15,20); // Bounden der Elemente
lbr.setBounds(50,100,15,20);
lbc.setBounds(50,130,15,20);
lblad.setBounds(320,160,300,20);
lbueb.setBounds(235,25,200,20);
lbrsz.setBounds(90,243,40,15);
lbusz.setBounds(20,274,20,15);
lb_meldung.setBounds(20,450,350,20);
tfu_min.setBounds(70,70,35,20);
tfr_start.setBounds(70,100,35,20);
tfc_start.setBounds(70,130,35,20);
b1.setBounds(350,70,120,20);
add(lbu);
add(lbr);
add(lbc);
add(lblad);
add(lbueb);
add(lbrsz);
add(lbusz);
add(tfu_min);
add(tfr_start);
add(tfc_start);
add(b1);
add(lb_meldung);
b1.addActionListener(new B1());
}
//-----------------------------------Schaltplan Kondensator--------------------
public void paint(Graphics g)
{
g.drawLine(50,236,100,236); // erste Waagerechte Line
g.drawRect(100,229, rectWidth, rectHeight); // Widerstand
g.drawLine(130,236,180,236); // Linie vom Widerstand bis zur Ecke
g.drawLine(180,236,180,283); // Linie runter bis zum Kondi
g.drawLine(170,283,190,283); // Kondi oberer Balken
g.drawLine(170,287,190,287); // Kondi unterer Balken
g.drawLine(180,287,180,331); // Linie vom Kondie runter
g.drawLine(180,331,50,331); // Linie vom Bordstein bis zur Skyline Zurück
g.drawLine(50,331,50,287); // Linie von der ecke unten links bis zum Versorger
g.drawLine(42,287,58,287); // Linie Versorger Unten
g.drawLine(37,280,63,280); // Linie Versorger Oben
g.drawLine(50,280,50,236); // Linie vom Versorger bis Oben Ecke
g.drawLine(39,273,45,273); // + Horizontal Linie Versorger
g.drawLine(42,270,42,276); // + Verikal Linie Versorger
g.drawLine(39,293,45,293); // - Linie Versorger
g.drawLine(185,273,191,273); // + Horizontal Kondi
g.drawLine(188,276,188,270); // + Vertikal Kondi
g.drawLine(185,293,191,293); // - Linie Kondi
//--------------------------------Beschriftung Schaltplan----------------------
//-------------------------------Koordinatensystem-----------------------------
g.drawRect(320,180, rectWidth +300, rectHeight +250);
g.drawLine(345,200,345,422); // Konstruktion der Y-Achse
g.drawLine(345,422,630,422); // Konstruktion der X-Achse
g.drawLine(630,422,624,428); // Konstruktion der Pfeile (X-Achse)
g.drawLine(630,422,624,416); // Konstruktion der Pfeile (X-Achse)
g.drawLine(345,200,339,206); // Konstruktion der Pfeile (Y-Achse)
g.drawLine(345,200,351,206); // Konstruktion der Pfeile (Y-Achse)
g.drawString("Zeitkonstante T",450,438);
//´----------------------Ohm-Zeichen-------------------------------------------
g.drawArc(110,104,10,10,310,295); //Kreissegment zeichen
g.drawLine(109,114,113,114); //Ohm Strich Links
g.drawLine(117,114,121,114); //Ohm Strich Rechts
//----------------------µ-Zeichen----------------------------------------------
g.drawString("µF",110,143);
//------------------------V-Buchstabe am Textfeld------------------------------
g.drawString("(U)V",107,83);
//------------------Button mit Prüfung der Zahlen------------------------------
}
class B1 implements ActionListener // Button mit umfangreicher Logikprüfung
{ // und eigener Meldungsmethode
public void actionPerformed(ActionEvent ae)
{
int nr = 0;
lb_meldung.setText("");
try
{
u_min = Double.parseDouble(tfu_min.getText());
}
catch(NumberFormatException nfe)
{
nr = 1;
}
try
{
r_start = Double.parseDouble(tfr_start.getText());
}
catch(NumberFormatException nfe)
{
nr = 2;
}
try
{
c_start = Double.parseDouble(tfc_start.getText());
}
catch(NumberFormatException nfe)
{
nr = 3;
}
if (u_min < 0) nr = 4;
if (u_min > 50) nr = 5;
if (r_start < 0) nr = 6;
if (r_start > 100) nr = 7;
if (c_start < 0) nr = 8;
if (c_start >100) nr = 9;
if (nr == 0)
{
repaint();
}
else
{
ausgabe(nr);
}
}
public void ausgabe(int nr) // Meldungsmethode
{
if (nr == 1)
{
tfu_min.requestFocus(); // Cursor auf Element positionieren!!
lb_meldung.setText("Also ne Vernünftige Eingabe wäre nice oO");
}
else if (nr == 2)
{
tfr_start.requestFocus();
lb_meldung.setText("Bitte in Zahlen schreiben!!");
}
else if (nr == 3)
{
tfc_start.requestFocus();
lb_meldung.setText("So kann ich nicht arbeiten...Zahl eingeben!!.");
}
else if (nr == 4)
{
tfu_min.requestFocus();
lb_meldung.setText("Die Spannung sollte schon Positiv sein ;-) ");
}
else if (nr == 5)
{
tfu_min.requestFocus();
lb_meldung.setText("Ruhig Brauner!");
}
else if (nr == 6)
{
tfr_start.requestFocus();
lb_meldung.setText("Ein negativer Widerstand? Erzähl mir mehr davon...");
}
else if (nr == 7)
{
tfr_start.requestFocus();
lb_meldung.setText("Größenwahn??");
}
else if (nr == 8)
{
tfc_start.requestFocus();
lb_meldung.setText("Also so nicht Freundchen, Positiv wenns geht!");
}
else if (nr == 9)
{
tfc_start.requestFocus();
lb_meldung.setText("Nicht so große Zahlen Bitte!");
}
}
}
}
Ich bin für jede Hilfestellung dankbar!
Mit freundlichem Gruß,
Huggybear