hallo miteinander,
ich habe mal wider eine verrückte Idee
meine Schieblehren gehen nun und meine Zug wage auch.
Jedoch geht es mir nicht aus dem Kopf bei der Schieblehre die Zeiten des HIGH bzw. LOW zu erfassen und auszugeben.
laut der Beschreibung vom DOC_Arduino bewegen wir uns hier im Bereich von 6,3µs langen des LOW pegels.
Also dachte ich mir, das müsste ich doch hin bekommen das auch ausgeben zu können.
doch das ist irgend wie nicht ganz so einfach glaube ich, daher habe ich mir ein Test Programm geschrieben.
- Ausgabe eines Tabellen Kopfes
- Warten auf Tasten druck
- Schleife 60 mal durchführen
3.1 Aktuelle Zeit nehmen
3.2 Warten solange ein LOW Pegel anliegt -> weiter bei HIGH Pegel
3.3 ID, "LOW" und Zeitdauer ausgeben
3.4 Aktuelle Zeit nehmen
3.5 Warten solange ein HIGH Pegel anliegt -> weiter bei LOW Pegel
3.6 ID, "HIGH" und Zeitdauer ausgeben
dann wider bei 3.0 weiter machen
ach ja die ID wird auch immer mit hoch gezählt.
das Ergebnis war dann auch fast so wie ich es mir dachte, nämlich 0
ich glaube das die Ausgabe über den Seriellen Monitor zu lange dauert.
und ich auch den Falschen Befehl für die Zeitmessung verwende, bzw.
die Variable falsch deklariere.
Könnte mir da jemand etwas unter die Ahme keifen, ... und mir sagen
ob das überhaupt so machbar ist,
oder ob alle Ergebnisse zu erst in ein Array Speichern sollte und dann am Schluss erst ausgeben
damit cih weniger Zeitverlust zwischen drin habe?
und ob ich die Zeit so richtig nehme, oder ob ich auf dem Totalen Holzweg bin mit dem was ich mache.
/*
µC Arduino Mega 2560 (Getestet)
November 2014
Beide Signale vom Messschieber werden mittels OPV LM393 nicht invertierend auf 5V Pegel angehoben
Test ist es die Pegel Länge (Zeit) von HIGH und LOW auszugeben, um ein Musster zu erkennen.
die zeiten bewegen sich im µs.
Ports etc: http://greentechhobby.com/images/Arduino/ArduinoMega.pdf
*/
unsigned long temp_millis; // Variable für Zeitstempel
int Taster = 13; // Taster PIN
int ID = 0; // Vortlaufende ID
int Clock = 24; // Clock Signal der Schieblehre
void setup()
{
Serial.begin(9600); // initialisiert die serielle Kommunikation mit 9600 Bits pro Sekunde:
pinMode(Taster, INPUT); // Taster als Eingang festlegen
pinMode(Clock, INPUT); // Clock Signal als Eingang festlegen
}
// PIN 24 am Arduino Mega ist PORT = A bit = PA2
void loop()
{
Serial.println("ID \tTyp \tDauer"); // Tabelen Kopf ausgabe
while(digitalRead(Taster)== HIGH) { } // warten bis Taster betätigt wurde
while(digitalRead(Taster)== LOW) { } // warten bis Taster betätigt wurde
while(ID < 60)
{
ID++; Serial.print(ID); Serial.print("\t"); // ID ausgabe
temp_millis = millis(); // aktuelle Zeitnahme
while ( !(PINA & (1 << PA2)) ) {} // wenn CLOCK auf LOW, dann warten bis wieder HIGH
Serial.print("LOW \t"); Serial.println(millis() - temp_millis); // TYP LOW und Zeitdauer asugeben
ID++; Serial.print(ID); Serial.print("\t"); // ID ausgabe
temp_millis = millis(); // aktuelle Zeitnahme
while ( (PINA & (1 << PA2)) ) {} // wenn CLOCK auf HIGH, dann warten bis wieder LOW
Serial.print("HIGH \t"); Serial.println(millis() - temp_millis); // TYP HIG und Zeitdauer asugeben
}
while(digitalRead(Taster)== HIGH) { } // warten bis Taster betätigt wurde
while(digitalRead(Taster)== LOW) { } // warten bis Taster betätigt wurde
}