Wie kann ich einen Takt von 50kHz mit dem Arduino Mega2560 erzeugen?

Hallo zusammen,

Wie oben schon beschrieben die Frage, wie ich einen Takt von 50kHz mit dem Arduino Mega2560 erzeugen kann.

Das ist mein derzeitiger Sketch:

const int outputPin = 5;  // digitale Ausgangspin
unsigned long startTime;   // Variable zur Speicherung des Startzeitpunkts


void setup() {
  pinMode(outputPin, OUTPUT);  // Setzen des Pin als Ausgang
  Serial.begin(9600);  // Starten der serielle Kommunikation mit 9600 Baud
}


void loop() {
  // Einschaltphase messen
  startTime = micros();  // Aktuelle Zeit speichern
  digitalWrite(outputPin, HIGH);  // Pin auf HIGH
  delayMicroseconds(10);  // Warten für die halbe Periode (T_high)
  unsigned long onTime = micros() - startTime;  // Berechnen Sie die Einschaltzeit in Mikrosekunden


  // Ausschaltphase messen
  startTime = micros();  // Aktuelle Zeit speichern
  digitalWrite(outputPin, LOW);  // Pin auf LOW 
  delayMicroseconds(10);  // Warten für die andere halbe Periode (T_low)
  unsigned long offTime = micros() - startTime;  // Berechnen der Ausschaltzeit in Mikrosekunden


  // Ausgabe der gemessenen Zeiten
  Serial.print("Einschaltzeit: ");
  Serial.print(onTime);
  Serial.print(" µs  ----  ");
  Serial.print("Ausschaltzeit: ");
  Serial.print(offTime);
  Serial.println(" µs");


  delay(1000);  // Eine Sekunde warten, bevor der nächste Zyklus beginnt
}


// Soll Periodendauer = 20µs -> f = 50kHz

Leider erhalte ich mit diesem Code folgende Ausgabe:

Einschaltzeit: 20 µs  ----  Ausschaltzeit: 16 µs
Einschaltzeit: 16 µs  ----  Ausschaltzeit: 20 µs
Einschaltzeit: 16 µs  ----  Ausschaltzeit: 20 µs
Einschaltzeit: 16 µs  ----  Ausschaltzeit: 20 µs
Einschaltzeit: 20 µs  ----  Ausschaltzeit: 16 µs
Einschaltzeit: 16 µs  ----  Ausschaltzeit: 20 µs
Einschaltzeit: 16 µs  ----  Ausschaltzeit: 20 µs
Einschaltzeit: 16 µs  ----  Ausschaltzeit: 20 µs
Einschaltzeit: 20 µs  ----  Ausschaltzeit: 20 µs
Einschaltzeit: 16 µs  ----  Ausschaltzeit: 16 µs
... usw.

Mir ist klar, das der Controller durch die Funktion Serial.print() und auch die delayMicroseconds() zeit verbraucht.

Gibt es aber eine möglichkeit möglichst genau einen Takt von 50kHz mit dem Arduino zu erzeugen?

Vielen Dank!

Computer, programmieren, Elektrik, Arduino, Physik, Sketch, arduino mega
Zugriff auf svg Element in HTML gibt immer "null" zurück?

Hallo zusammen,

folgendes Problem:

Ich möchte aus meinem javascript Code zu laufzeit auf meine sonarGrafik.svg zugreifen können um deren Elemente zu manipulieren (oder neue hinzufügen zu können).

So sieht erstmal der ganze HTML Code aus:

<!DOCTYPE html>
<html>
<head>
    <title>Arduino Daten</title>
    <link rel="icon" href="data:,">
    <script src="scripts/script.js"></script>
    <link rel="stylesheet" href="styles/style.css"> 
</head>
<body>
    <object id = "svgObject" data="styles/sonarGrafik.svg" type="image/svg+xml"></object>
</body>
</html>

Der betroffene Teil in meinem javascript Code:

function insertDots(cx, cy) {
    const svgObject = document.getElementById("svgObject");
    console.log(svgObject.contentDocument) // hier erhalte ich in der Console immer "null"


    svgObject.addEventListener("load", function() {
        if (svgObject && svgObject.contentDocument) {
            const sonarSVG = svgObject.contentDocument.getElementById("sonar");
            console.log(sonarSVG);
        }
    });
}

(Die funktion insertDots(cx, cy) wird alle paar sekunden aufgerufen und ich erhalte in der Browser Konsole immer nur null. Dementsprechend ist die if Bedienung darunter auch nie wahr)

In meiner .svg Datei gibt es definitv die id= "sonar":

<svg id="sonar" width="700" height="700" xmlns="http://www.w3.org/2000/svg">
  <rect x="0" y="0" width="100%" height="100%" fill="rgba(128, 128,   128, 0.25)" />
</svg>

So sieht meine Ordnerstruktur aus:

Website
│   SonarVisuallisierung.html
│
├── scripts
│       script.js
│
└── styles
        style.css
        sonarGrafik.svg


Gibt es irgendwo einen Fehler oder eine andere Möglichkeit auf die Elemente der .svg Datei über das script zuzugreifen? (Den Inhalt der .svg will ich ausgelagert lassen und nicht in das HTML einfügen wegen der Übersichtlichkeit)

Danke für alle Lösungsvorschläge.

HTML, Webseite, JavaScript, Code, Programmiersprache
Weitere Inhalte können nur Nutzer sehen, die bei uns eingeloggt sind.