Ich freue mich, wenn mir jemand eine kurze Antwort auf meine Frage geben kann. Ich selbst bin ziemlicher Frischling auf dem Gebiet und bitte euch nun darum, meinen grundsätzlichen Gedankengang zu bestätigen (oder zu vernichten).
Folgendes soll passieren:
Ich habe einen Seilzuggeber mit analogem Ausgangssignal. Dieser soll an einen Arduino UNO seine Messwerte liefern. Hier gehe ich mal davon aus, dass der Anschluss so verläuft wie bei einem Poti?
Auf dem UNO sollen die Messwerte geglättet werden (per map()?), gefiltert werden muss nicht, die Genauigkeit ist bei dem Vorhaben in bestimmtem Maße vernachlässigbar.
Angenommen, der Arduino spuckt jetzt geglättete Werte zwischen 0 und 60 aus. Diese möchte ich auf einem PC weiterverwenden, wo sie auf einem lokalen Webserver für ein Browser-Minispiel weiterverwendet werden. Wie greife ich diese Werte am besten ab?
Kann ich via NodeJS einfach den Seriellen Monitor auslesen, ohne dass der UNO sich daran stört oder resettet?
Meine bisherige Recherche hat da verschiedenste Ergebnisse ausgespuckt besonders in der Kombination meiner Anforderung, daher trete ich an euch heran um das Gedöns da einmal in seiner Gesamtheit zu betrachten. Vielen Dank!
wie iich das sehe gibt es den Geber in drei Varianten
-Spannungsausgang 0-10V Versorgung 24V DC
-Stromausgang 2Draht Geber 4-20mA Versorgung über die Stromschleife
-Potiausgang ( sollte nicht zu hochohmig sein <=10KOhm ist ein guter Wert )
Du solltest sehen das Du die Potivariante hast, dann kommst Du ohne Hilfsspannung aus. Die Variante mit dem Stromaugang kannst Du so ohne weiteres nicht an den UNO anschliessen, da er keinen Stomeingang hat. Das ging dann nur mit einem Shunt Widerstand, damit Du wieder eine Spannung bekommst.
map dient zum skalieren des Wertes, wenn du den Wert glätten willst must du das selbst was programieren. Mittelwert über mehrer Messwerte oder gleitender Mittelwert. Letzteres kann man in drei Zeilen packen.
Innerhalb der IDE gibts unter Hilfe viele Beispiele mit denen man ganz gut die grundsätzlichen Dinge lernen kann.
Top, dann hab ich ja schonmal ein bisschen was richtig gemacht. Werd mir dann übers Wochenende mal die Basics zu Gemüte führen und mich freuen wenn das alles hinhaut.
So, das Ganze funktioniert jetzt in seinen Grundzügen ganz vorzüglich. Ich hab den Seilzuggeber am Arduino und bekomme seine Werte von 0 bis 1023.
Nun gehts darum, indem an dem Seil gezogen wird, einen bestimmte Gesamtstrecke zu erreichen, sozusagen, als zöge man einen Gegenstand immer weiter zu sich heran, bis eben eine bestimmte Distanz zurückgelegt wurde. Nun sitz ich gerade nur mit Laptop und ohne Arduino hier und versuche was zu basteln, das ich morgen mit der Hardware testen kann. Meine Idee ist momentan eine Lösung via do-while. Könnte das so funktionieren?
void setup() {
Serial.begin(9600);
}
void loop() {
int cable = 0; //aktueller Wert an Analogeingang A0
int prev = 0; //Vergleichsvariable um zu pruefen, ob der Wert an A0 steigt
int bucket = 0; //Hier wird spaeter die bisher zurueckgelegte Strecke gespeichert
prev = cable;
cable = analogRead(A0);
do {
delay(100);
if (cable > prev) {
prev = cable; //Solange "cable" steigt/stagniert wird ihr Wert in "prev" abgelegt
} else if (cable < prev) {
bucket = bucket + prev; //Sobald "cable" kleiner ist als "prev" wird der letzte Wert zu bucket addiert
Serial.println(bucket + "Meter geschafft!"); //Print wieviele "Meter" man bereits gezogen hat
} } while (bucket < 12000);
Serial.println("Fertig, der Eimer ist oben!"); //"Wenn 12000 in "bucket" erreicht wird --> Ende
}