Programmieren – die neusten Beiträge

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

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

c++ Mindestgenauigkeit?

Hey Leute,

brauche Hilfe bei folgender Aufgabe:

Lassen Sie dafür den Benutzer eine frei wählbare Mindest-Genauigkeit der Berechnung eingeben, wie z.B. 0.001(ein Tausendstel), und brechen Sie die Schleife ab, sobald die gewünschte Genauigkeit erreicht ist. Die Genauigkeit ergibt sich natürlich aus der Differenz zwischen den Werten von xnund xn-1.

Mein quellcode sieht bis jetzt so aus:

int main()
{
    double in{ 0.0 };                                       //Initialisieren der input Zahl
    double x{ 1.0 };
    double xn{ 1.0 };
    int p{ 0 };

    cout << "Geben Sie eine Fliesskommazahl ein um die Wurzel zu berechnen: \n";
    cin >> in;                                                      //Einlesen der zu berechnenden Zahl

    cout << "Geben Sie die gewuenschte Genauigkeit ein: " << "\n";  //User wird aufgefordert die Genauigkeit der double einzugeben
    cin >> p;

    if (in > 0);                                            //Wenn input höher als null ist wird ausgeführt:
    {
        cout << "Sie haben folgende Zahl zum berechnen eingegeben: " << in << "\n";                                 //Input Zahl wird ausgegeben
        while (x - (x-1) <= p)                         //i startet bei 0 und wird bis zum 8. Durchlauf ausgeführt
        {
            x = xn;                                         //Zuweisung für die Wurzel
            xn = (x + in / x) / 2;                          //Zuweisung der Formel der Wurzelberechnung für xn
           // cout.precision(p);                              //Die Zahlen werden mit der Genauigkeit p ausgegeben
            cout << x << "\n";                              //Ausgabe der Wurzelberechnung
        }
        
        cout << "Die Wurzelberechnung ergibt: " << x << "\n";
    }
    
    return 0;
}

wie kann ich meine while schleife ändern, sodass ich die aufgabe erfülle? hänge hier fest..

Computer, Schule, Mathematik, Technik, programmieren, CPP, Informatik

Meistgelesene Beiträge zum Thema Programmieren