WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Auslesefehler Ardunino Uno "unable to read any data&quo

 

Simon05072023
Forum-Newbie

Forum-Newbie


Beiträge: 1
Anmeldedatum: 05.07.23
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.07.2023, 11:53     Titel: Auslesefehler Ardunino Uno "unable to read any data&quo
  Antworten mit Zitat      
Hallo,

ich habe folgendes System:
Ein Sensor schaltet zwischen an und aus unregelmäßig hin und her. Diesen Sensor habe ich an einen Arduino Uno angeschlossen. Der Arduino soll die Zeit ermitteln, die zwischen zwei aus/an-Schaltungen vergeht. Also immer wenn der Sensor von "aus" auf "an" springt, soll das Programm die Zeit bis zum nächsten "aus" zu "an" messen und ausgeben. Dazu habe ich folgenden Code für den Arduino:

Code:
const int inputPin = 3;  // Pin 3 als Eingang für das Signal festlegen
int previousState = LOW; // Vorheriger Zustand des Eingangs
unsigned long previousTime = 0; // Vorherige Zeit des Zustandswechsels

void setup() {
  pinMode(inputPin, INPUT); // Pin als Eingang festlegen
  Serial.begin(9600); // Serielle Kommunikation starten
}

void loop() {
  int currentState = digitalRead(inputPin); // Aktuellen Zustand des Eingangs lesen

  if (currentState != previousState) { // Wenn sich der Zustand geändert hat
    if (currentState == HIGH) { // Wenn der Zustand "an" ist
      unsigned long currentTime = millis(); // Aktuelle Zeit erfassen
      unsigned long elapsedTime = currentTime - previousTime; // Zeitdifferenz berechnen
      Serial.print(elapsedTime); // Zeitdifferenz über die serielle Schnittstelle ausgeben
      Serial.println(";"); // Terminator hinzufügen
      previousTime = currentTime; // Vorherige Zeit aktualisieren
    }

    previousState = currentState; // Vorherigen Zustand aktualisieren
  }
}


Mit Matlab möchte ich jetzt auslesen, was der Arduino ausgibt und habe dazu folgendes Programm:

Code:
% Serielle Verbindung zum Arduino herstellen
arduino = serial('COM3', 'BaudRate', 9600);
fopen(arduino);

% Startzeitpunkt festlegen
startTime = tic;

% Endlosschleife zum Lesen der Daten vom Arduino für 60 Sekunden
while toc(startTime) < 60
    % Daten vom Arduino lesen
    data = fscanf(arduino, '%s');

    % ASCII-Code anzeigen
    fprintf('Zeit: %s\n', data);
end

% Serielle Verbindung schließen
fclose(arduino);


Das Programm soll erstmal 60 Sekunden laufen (denke mir dann noch eine andere Abbruchbedingung aus) und dabei permament auslesen was der Arduino ausgibt, also immer wenn der eine neue Zeit ausgibt, soll Matlab sie anzeigen.
Leider klappt das ganze nur ein Mal und bei weiteren Schaltungen nicht.
Hier die Ausgabe:

"Warning: serial will be removed in a future release. Use serialport instead.
Zeit: 7899;
Warning: Unsuccessful read: A timeout occurred before the Terminator was reached.
'serial' unable to read any data. For more information on possible reasons, see Serial Read Warnings.
Zeit:
Warning: Unsuccessful read: A timeout occurred before the Terminator was reached.
'serial' unable to read any data. For more information on possible reasons, see Serial Read Warnings.
Zeit:
Warning: Unsuccessful read: A timeout occurred before the Terminator was reached.
'serial' unable to read any data. For more information on possible reasons, see Serial Read Warnings.
Zeit:"

Um serial zu serialport kümmere ich mich wenn das Programm funktioniert. Man sieht auch, dass die erste Schaltung (Programmstart bis Sensorschaltung) ausgegeben wird und die Zeit in ms ist auch realistisch. Danach kommt nichts mehr und die Meldung wiederholt sich mit der Zeit. Leider konnte ich das Problem bisher nicht lösen. Ich bin mir auch nicht sicher, ob der Fehler in Matlab oder im Arduino gemacht wird. Dennoch würde es mir schon helfen, wenn mir bestätigt würde, dass der Matlabcode passt und vielleicht kennt sich ja zufällig hier auch jemand mir Arduino aus Very Happy

Viele Grüße und schon mal Danke,

Simon
Private Nachricht senden Benutzer-Profile anzeigen


Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2024 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.