Arduino steuerung mit millis?

Hallo liebe comunety,

Habe ein Programm zur Rolladensteuerung geschrieben leider weißt das Programm noch Fehler auf und ich kann diese nicht finden.

Hab das erste mal mit millis programmiert und nicht mit delay.

Bitte um nachsicht ich versuche noch zu lernen.

const int buttonPin  = 7;
     int RolloAb    = 3;
     int RolloAuf   = 4;
     int Hupe       = 5;
     int Lampe      = 6;
     int myTimer    = 0;
     int myTimer2   = 0;
     int myTimer3   = 0;
     long myTimeout = 20000;
     long myTimeout2 = 20000;
     long myTimeout3 = 2000;
void setup() {
 pinMode (buttonPin, INPUT_PULLUP);
 pinMode (RolloAb,  OUTPUT);
 pinMode (RolloAuf, OUTPUT);
 pinMode (Hupe,     OUTPUT);
 pinMode (Lampe,    OUTPUT);
}
void loop()                            {
 digitalRead(buttonPin);
 delay(20);
 if(buttonPin == HIGH);               {
   myTimer2 = millis();
   digitalWrite(Lampe, HIGH);
  if(millis() < myTimer + myTimeout)  {
   digitalWrite(RolloAb, HIGH);
  if(millis() < myTimer3 + myTimeout3) {
    myTimer3 = millis();
    if(Hupe == LOW)                   {
    digitalWrite(Hupe,HIGH);
 }
   if(Hupe == HIGH)                   {
   digitalWrite(Hupe,LOW);
 }
 }
 }
 }
 if(buttonPin == LOW);                {
   myTimer = millis();
  if(millis() < myTimer2 + myTimeout2) {
   digitalWrite(RolloAuf, HIGH);
  }
  }
}

Zum Ablauf des Programmes:

bei betätigung des schalters soll der Rollo nach unten fahren.

Zeitgleich soll eine Hupe schalten und ein getaktetes akustisches Signal ausgeben.

Die Warnleuchte soll auch während der fahrt nach unten Läuchten.

Beim rücksetzen des Tasters soll der Rollo wieder noch oben fahren dabei sind Lampe und Hupe NICHT aktiv.

Danke für Ihre Hilfe

Mit freundlichen Grüßen

Paul

Computer, Schule, Technik, programmieren, Arduino
Testmethode schreiben fiese Falle... Java?

Hallo!

In Software-Entwicklung 2 haben wir ein Java Projekt bekommen. Es ist eine Mediathek in welcher man CDs, DVDs und Videospiele ausleihen kann. Nun habe ich eine Aufgabe gestellt bekommen:

Die Mediathek möchte nun noch Bücher ausleihen. Es gibt eine Methode berechneMietgebuehr, welche als Parameter int mietTage entgegeben nimmt und einen Geldbetrag in Eurocent zurückgibt. Hierzu sei gesagt, dass der Zurückgegebene Wert kein int ist, sondern ein Objekt aus einer Klasse "Geldbetrag". Die Mietgebühr sollte sich folgendermaßen berechnen lassen: 500+mietTage*100 für mietTage >= 0. (Wobei ich persönlich den Fall mietTage = 0 eher blöd finde...)

Nun soll ich eine Testmethode schreiben in dem ich assertEquals benutzte und ein Testexemplar _buch1. Das Problem ist, dass wir laut der Aufgabenstellung nicht wissen wie berechneMietgebuehr wirklich implementiert wurde. Ich habe das erstmal so gemacht:

public void testBerechneMietgebuehr()

{

Geldbetrag geld = new Geldbetrag(700);

assertEquals(geld,_buch1.berechneMietgebuehr(2));

}

Jetzt kommt folgendes Problem. Ich bekomme als Rückmeldung:

Bedeutet: Nun wird mir gesagt, wie berechneMietgebuehr implementiert ist. Und egal was ich bei assertEquals hinein schreibe, die Methode "passt sich an":

Ich weiß nicht wie ich das "umgehen" kann... Ich habe schon versucht alles mal private zu machen oder, damit nicht mehr darauf zugegriffen werden kann, aber das funktioniert auch nicht.

Ich hoffe ihr habt einen Tipp oder vielleicht auch Fragen, falls ich es nicht gut erklären konnte. Danke und LG!

Bild zum Beitrag
Computer, programmieren, Java, testen, Informatik, Moodle
Wie zeichne ich einen Graph in Javascript D3.js?

Ich möchte ein Graphendiagramm erstellen. Dazu habe ich eine JSON-Datei erstellt. Die Skills ("java, python, HTML, json") sind die Knoten und die Indexe (KayO, BenBeck, Borea usw.) sind die Kanten. Der Knoten muss eine Mindestgröße haben und darf nicht zu groß werden. Anschließend möchte ich mit einem Klick auf den Knoten die Liste der Publikationen auf der rechten Seite aufrufen können. Dabei soll der aktuell ausgewählte Knoten in der Visualisierung hervorgehoben werden. Ich habe bereits aus diesem Beispiel (https://bl.ocks.org/heybignick/3faf257bbbbc7743bb72310d03b86ee8) was implementiert. Aber leider komme ich nicht weiter.

Diese ist meine JSON Datei:

const persona = {
    "KayO": {
      firstname: "Kay",
      lastname: "Ohran",
      City: "California",
      skills: "java, python, HTML, json",
    },
    BenBeck: {
      firstname: "Ben",
      lastname: "Beckamm",
      City: "New York",
      skills: "css, ruby, php, training, simulator, java, web, webgl, json",
    };

Das ist mein Code

    const bib = persona;
    console.table(bib);
    const graph = {nodes: [{id: "a"}, {id: "b"}], links: [{source: "a", target: "b"}]};
    const linkColor = d3.scaleLinear().domain([0, 1]).range(["#eee", "#000"]);

    const svg = d3.select("svg");
    const width = +svg.attr("width");
    const height = +svg.attr("height");

    const simulation = d3
      .forceSimulation()
      .force("link", d3.forceLink().id(function (d) { return d.id; }))
      .force("charge", d3.forceManyBody())
      .force("center", d3.forceCenter(width / 2, height / 2));

      //linien -> Kanten
      var link = svg.append("g").attr("class", "links")
      .selectAll("line")
      .data(graph.links).enter().append("line")
      .attr("stroke", "#aaa");

      //kreise -> Knoten
    var node = svg.append("g")
      .attr("class", "nodes")
      .selectAll("circle").data(graph.nodes).enter().append("circle")
      .attr("r", 5).call(d3.drag().on("start", dragstarted).on("drag", dragged).on("end", dragended));

    node.append("title").text(d => d.id);


    simulation.nodes(graph.nodes).on("tick", ticked)
simulation.force("link").links(graph.links);

    function ticked() {
      link
        .attr("x1", d => d.source.x)
        .attr("y1", d => d.source.y)
        .attr("x2", d => d.target.x)
        .attr("y2", d => d.target.y);
      node.attr("cx", d => d.x).attr("cy", d => d.y);
    }

    function dragstarted(event) {
      if (!event.active) simulation.alphaTarget(0.3).restart();
      event.subject.fx = event.subject.x;
      event.subject.fy = event.subject.y;
    }

    function dragged(event) {
      event.subject.fx = event.x;
      event.subject.fy = event.y;
    }

    function dragended(event) {
      if (!event.active) simulation.alphaTarget(0);
      event.subject.fx = null;
      event.subject.fy = null;
    }
programmieren, JavaScript
VBA mehrere Tabellen zur PDF zusammenfügen?

Hallo,

ich habe ein kleines Problem mit dem Erstellen von mehreren PFD-Seiten aus unterschiedlichen Tabellenblätter. Je nach Erfüllung der Bedingung (If-Abfrage) wird eine PDF erstellt.

Sofern nur ein eine Tabelle angesprochen wird, gibt es keine Probleme mit der Erstellung. Dabei ist es egal, ob die Tabelle oder zwei Seiten hat. Die Formatierung/Range ist korrekt und das Makro läuft durch.


Sheets("DUZ").Select
Range("A1:Y52").Select
Selection.ExportAsFixedFormat _
Type:=xlTypePDF, _
Filename:=ThisWorkbook.Path & "\DUZ.pdf", _
Quality:=xlQualityStandard, _
IncludeDocProperties:=True, _
IgnorePrintAreas:=False, _
OpenAfterPublish:=False

Aber soweit ich auf zwei oder mehr Tabellenblätter zugreife, gibt es Probleme:

Sheets(Array("Deckblatt", "Übersicht", "Tagebuch", "Ges", "Reisekosten", "DUZ")).Select
Selection.ExportAsFixedFormat _
Type:=xlTypePDF, _
Filename:=ThisWorkbook.Path & "\Tagebuch_RZ_DUZ.pdf", _
Quality:=xlQualityStandard, _
IncludeDocProperties:=True, _
IgnorePrintAreas:=False, _
OpenAfterPublish:=False

Wie kann ich entsprechend die Range unterbringen, sodass es evtl. problemlos klappt?

'Sheets("Deckblatt").Select --> Hochformat (1 Seite)
'Range("A1:H43").Select
                    
'Sheets("Übersicht").Select --> Querformat (1 Seite)
'Range("A1:R35").Select
                    
'Sheets("Tagebuch").Select --> Hochformat (6 Seiten)
'Range("A1:V146").Select
                    
'Sheets("Ges").Select --> Hochformat (1 Seite)
'Range("A1:G43").Select
                    
'Sheets("DUZ").Select --> Querformat (2 Seiten)
'Range("A1:Y52").Select
                    
'Sheets("Reisekosten").Select --> Hochformat (1 Seite)
'Range("A1:N57").Select

Aktueller Fehlerhinweis: Anwendungs- oder objektdefinierter Fehler.

Ich hatte es auch mal wie folgt versucht, aber dann stimmt die Formatierung nicht (wenn es einzeln gespeichert wird, ist sie aber richtig). Außerdem wird dann beim Schreibschutz rumgemeckert (am Ende werden die Blätter wieder mit Schreibschutz versehen). Jedenfalls gibt es diese Probleme beim einzelnen nicht.

Sheets("DUZ").Select
Range("A1:Y52").Select
                    
Sheets("Reisekosten").Select
Range("A1:N57").Select

Sheets(Array("Reisekosten", "DUZ")).Select
Selection.ExportAsFixedFormat _
Type:=xlTypePDF, _
Filename:=ThisWorkbook.Path & "\Reisekosten_DUZ.pdf", _
Quality:=xlQualityStandard, _
IncludeDocProperties:=True, _
IgnorePrintAreas:=False, _
OpenAfterPublish:=False

Hat jemand eine Idee?
Gruß
Computer, Microsoft Excel, Technik, programmieren, VBA, Technologie
Nicht alle Codepfade geben ein Wert zurück?

Ich bekomme den Fehler, dass nicht alle Codepfade einen Wert zurück geben "Form1.GetKugel()".

Wenn ich das in else stehende so hinstelle ohne else funktioniert es einwandfrei..

ich habe gerade erst angefangen zu lernen und es ist hoffe ich nur ein dämlicher Anfängerfehler :D

private struct Kugel
        {
            public double radius, sg;
        }
        private double gew;
        private Kugel GetKugel()
        {
            
            if (textBox1.Text == "")
            {
                MessageBox.Show("Bitte trage einen Wert ein", "Hinweis", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
            }
            else if (textBox1.Text.Length > 0)
            {
                MessageBox.Show("Bitte trage einen gültigen Wert ein", "Hinweis", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
                textBox1.Clear();
            }
            else
            {
                Kugel kug;
                kug.radius = Convert.ToDouble(textBox1.Text) / 2;
                if (radioButton1.Checked) kug.sg = 1.4D;
                else if (radioButton2.Checked) kug.sg = 2.7D;
                else if (radioButton3.Checked) kug.sg = 3.0D;
                else if (radioButton4.Checked) kug.sg = 7.87D;
                else kug.sg = 11.3D;
                return kug;  
            }
             
        }
Computer, programmieren, C Sharp, Visual Studio

Meistgelesene Beiträge zum Thema Programmieren