Arduino-Sketche kombinieren...

Moderatoren: Sven, Heaterman, TDI, Finger

Arduino-Sketche kombinieren...

Beitragvon RMK » Fr 10. Aug 2018, 07:16

Hallo Leute,

nach mehrfachen Anstupsern habe ich angefangen mit den uCs zu spielen - bevor es jetzt aber an die
geplante Ofensteuerung geht, habe ich eine kleinere Baustelle, die gamz gut für ein erstes ernsthaftes
Projekt geeignet wäre:


ich möchte gern eine Wasserwaage mit einem Arduino bauen, so in der Art hier:

https://www.youtube.com/watch?v=fadT2ODVMbc

also mit einer Reihe LEDs, die mittlere grün, und die Kippung soll nicht seitlich sondern nach vorn/hinten verlaufen, das ist ja aber egal.
schön wäre wenn nicht nur einzelne LEDs leuchten würden, sondern immer mehr, je "schiefer" das Ganze wird. Ist aber nicht so wichtig.

einen ADXL345 und den Sketch hier habe ich schon ausprobiert, das läuft:

https://github.com/jarzebski/Arduino-AD ... simple.ino
(ich habe Z- und Y-Achse auskommentiert, ich brauche nur eine Richtung, aber das ist ja nicht schlimm)

die Werte werden schön auf den seriellen Monitor geschickt. prima.


das würde ich gern mit einer Bargraph-Anzeige verheiraten:

https://www.arduino.cc/en/Tutorial/BarGraph

einzeln tut das auch, aber gemeinsam - da klemmts jetzt bei mir... :-(

eine Messung -10°-waagerecht- +10° wäre völlig ausreichend, mit 11 oder 13 LEDs in einer Reihe..


Hintergrund der ganzen Sache: mein Papa hat einen Radlader, aber kriegt es nicht so leicht hin, die
Gabeln beim stapeln von Gitterboxen oder Paletten waagerecht zu stellen und trifft dann immer gern mal
eine andere Gitterbox oder wirft die sogar runter :(

ich habe schonmal ein Kästchen gebaut mit einem Potentiometer, einem Pendelgewicht da dran und einem
LM-3916, das einfach an der (senkrechten) Fläche der Gabel befestigt wurde, aber leider ist das Pendel
nicht präzise genug bzw. braucht ein bisschen Losbrechmoment bis es sich bewegt - klappt nicht sonderlich gut.


daher jetzt der Umstieg auf nen Arduino Nano... in der Hoffnung dass der empfindlicher reagiert.

vielleicht hat jemand einen heissen Tip oder sogar ein kombinierten Sketch für mich..?
ich kriege die Anpassungen nicht hin :-/

danke!
Benutzeravatar
RMK
 
Beiträge: 1457
Registriert: Di 20. Jan 2015, 14:59
Wohnort: östlich von Stuttgart

Re: Arduino-Sketche kombinieren...

Beitragvon bastelbjoern » Fr 10. Aug 2018, 08:04

RMK hat geschrieben:
die Werte werden schön auf den seriellen Monitor geschickt. prima.


das würde ich gern mit einer Bargraph-Anzeige verheiraten:

https://www.arduino.cc/en/Tutorial/BarGraph

einzeln tut das auch, aber gemeinsam - da klemmts jetzt bei mir... :-(


Der Baragraph erwartet ein analog Eingang an A0
dein Ausgang ist seriell da ich nur geraten habe welche Datei du hast (ADXL345? )
hat digitales signal.
das muss erst zu analog gewandelt werden. oder der Baragraph auf Digital Eingang gestrickt werden (was in meinen Augen Sinnvoller ist)
Aber da muss ich leider passen.
Im Augenblick reden deine Programmteile nicht miteinander. Jetzt brauchen wir(eigentlich DU ) nur einen, der für die Psychiater spielt :lol:

Gruss BJ
bastelbjoern
 
Beiträge: 195
Registriert: So 12. Okt 2014, 22:46

Re: Arduino-Sketche kombinieren...

Beitragvon RMK » Fr 10. Aug 2018, 14:05

bastelbjoern hat geschrieben:Der Baragraph erwartet ein analog Eingang an A0


jupp, das ist mir klar (ist ja ein Poti dran)

dein Ausgang ist seriell da ich nur geraten habe welche Datei du hast (ADXL345? )
hat digitales signal.


ja, auch das hab ich realisiert...

das muss erst zu analog gewandelt werden. oder der Baragraph auf Digital Eingang gestrickt werden (was in meinen Augen Sinnvoller ist)
Aber da muss ich leider passen.


siehste, ich auch. ich wollte den Bargraph auch auf "friss digitale Werte!" haben, aber da haperts noch...

Im Augenblick reden deine Programmteile nicht miteinander. Jetzt brauchen wir(eigentlich DU ) nur einen, der für die Psychiater spielt :lol:


...und daher diese Anfrage hier :)

R
Benutzeravatar
RMK
 
Beiträge: 1457
Registriert: Di 20. Jan 2015, 14:59
Wohnort: östlich von Stuttgart

Re: Arduino-Sketche kombinieren...

Beitragvon Sir_Death » Fr 10. Aug 2018, 21:51

Ich habe leider keinen ADXL345, darum kann ich dir nur grob die Richtung weisen.

Aus dem Sketch https://github.com/jarzebski/Arduino-AD ... simple.ino
kannst du den gesamten read normalized / output normalized Teil raus werfen - nachdem du die Daten ja auf eine LED-Anzeige wandeln willst, musst du sowieso selbst umwandeln, und brauchst aus dem Sketch nur die raw-Daten.

Weiters kannst du die beiden Unterroutinen showRange und showDataRate inklusive Ihrem Aufruf in void setup { } raus werfen, und dazu auch noch die serielle Schnittstelle - die könntest du maximal beim TEsten brauchen, aber danach macht sie das Programm nur langsamer.

Ich versuche es mal einzudampfen - wie gesagt ungetestet.

Code: Alles auswählen
#include <Wire.h>
#include <ADXL345.h>

ADXL345 accelerometer;

void setup(void)
{
  // Initialize ADXL345
  accelerometer.begin();
  // Set measurement range
  // +/-  2G: ADXL345_RANGE_2G
  // +/-  4G: ADXL345_RANGE_4G
  // +/-  8G: ADXL345_RANGE_8G
  // +/- 16G: ADXL345_RANGE_16G
  accelerometer.setRange(ADXL345_RANGE_16G);
}

void loop(void)
{
  // Read raw values
  Vector raw = accelerometer.readRaw();

  // Output to Bargraph
  // Hier gehört die Bargraph-Umrechnung und Ausgabe inkludiert.

 

  delay(100);
}


Der Rest von der simple.ino ist nicht notwendig.

Der gekürzte Bargraph-Code:

Code: Alles auswählen
const int ledCount = 10;    // the number of LEDs in the bar graph

int ledPins[] = {
  2, 3, 4, 5, 6, 7, 8, 9, 10, 11
};   // an array of pin numbers to which LEDs are attached


void setup() {
  // loop over the pin array and set them all to output:
  for (int thisLed = 0; thisLed < ledCount; thisLed++) {
    pinMode(ledPins[thisLed], OUTPUT);
  }
}

void loop() {
  // Hier gehört der "Read Raw Values" - Teil aus dem ADXL345 Code her:
  //.......

  // map the result to a range from 0 to the number of LEDs: - Hier rechnen wir deinen X-Wert in die LED-Kette um. dein kleinster Wert soll nur die LED am weitesten links zu leuchten bringen, dein größter Wert nur die LED ganz rechts. steht er gerade, dann die mittlere LED. DAher ist es wichtig, dass dein Min und Max gleich groß sind!
  int ledLevel = map(raw.XAxis, 0, 1023, 0, ledCount);  // statt der "0" kommt dein Minimalwert, statt der "1023" dein Maximalwert. Dieser Befehl macht aus deinem Minimalwert einen LED-Level von "0", aus deinem Maximalwert einen LED-Level mit "ledCount" - sprich der Anzahl deiner LEDs. dazwischen wird linear interpoliert.

  // loop over the LED array:
  for (int thisLed = 0; thisLed < ledCount; thisLed++) {
    // if the array element's index is less than ledLevel,
    // turn the pin for this element on:
    if (thisLed < ledLevel) {
      digitalWrite(ledPins[thisLed], HIGH);
    }
    // turn off all pins higher than the ledLevel:
    else {
      digitalWrite(ledPins[thisLed], LOW);
    }
  }
}


jetzt musst du nur noch die beiden Dateien verheiraten.
-) Alles was oberhalb von "void setup" steht, wird ganz oben hinein kopiert.
-) Die beiden "void setup" werden gemeinsam ein "void setup", in dem alle Teile aus beiden drinnen stehen
-) gleiches gilt für die beiden "void loop" - Zusammenfassen auf eines.

Ob du dann am Ende das delay(100); noch lässt musst du entscheiden, wie schnell sich die Anzeige aktualisieren soll.

Ich hoffe, damit hast du einen ersten Anhaltspunkt, wie die beiden zu verheiraten sind. - Ansonsten einfach nochmal fragen - genau so hab ich vor ein paar Jahren auch begonnen ;)

EDIT: Gerade noch gesehen: Der ADXL345 ist ein Beschleunigungssensor - kein Lagesensor. Da muss irgendwo dazwischen noch ein schlaues Stück Software rein (Umrechnung/Merker), damit daraus die Lage werden kann. - Diese Physik überlege ich mir aber heute nicht mehr - sorry ;) - Die Grundsätze zum Zusammenfassen der zwei Programme stimmen aber weiterhin.

EDIT2: http://www.pcmx.de/?p=204 so macht das der Typ im Video - Sourcecode ist aber auf Fußpilzebene (Assembler)
Weiterführende Literatur:
https://forum.arduino.cc/index.php?topic=372235.0
https://learn.adafruit.com/adxl345-digi ... rogramming

Da hast du dir für den Anfang gleich mal ein schwereres Projekt als deinen Ofen ausgesucht. :lol:
Sir_Death
 
Beiträge: 1608
Registriert: Mo 11. Mai 2015, 22:36
Wohnort: südlich von Wien

Re: Arduino-Sketche kombinieren...

Beitragvon Bastelbruder » Fr 10. Aug 2018, 22:43

Sir_Death hat geschrieben:EDIT: Gerade noch gesehen: Der ADXL345 ist ein Beschleunigungssensor - kein Lagesensor. Da muss irgendwo dazwischen noch ein schlaues Stück Software rein (Umrechnung/Merker), damit daraus die Lage werden kann

Duitse spracke- schwere spracke. Synonyme, vergessene Worte und Worte mit mehreren Bedeutungen. Martin Luther bei so einer Gelegenheit das Tintenfaß an die Wand geworfen.
Der ADXL345 ist sehr wohl ein statisch arbeitender Lagesensor, der ist allerdings auch für Gegenden mit etwas höherer Gravitation geeignet. Oder für Kurvenfahrten mit ernsthaftem Fahrwerk.
The ADXL345 is a complete 3-axis acceleration measurement system with a selectable measurement range of ±2 g, ±4 g, ±8 g, or ±16 g. It measures both dynamic acceleration resulting from motion or shock and static acceleration, such as gravity, that allows the device to be used as a tilt sensor.

Reine Beschleunigungssensoren arbeiten dynamisch und haben eine untere Grenzfrequenz, das sind beispielsweise Piezos mit Ladungsverstärker.

Die Wasserwaage wird so funktionieren, aber ich würde die Luftblasenanzeige nicht durch einen Balken ersetzen. Nach Möglichkeit die Abtast- und Anzeigerate hochsetzen, dann hilft das Rauschen dem Auge, die Mitte der leuchtenden Wolke zu finden. Überhaupt ist Latenz ist das allerletzte was der bio-Regler beim manuellen Einstellen der Waagrechte brauchen könnte.
Bastelbruder
 
Beiträge: 4741
Registriert: Mi 14. Aug 2013, 18:28
Wohnort: drunt' am Neckar - km142,7

Re: Arduino-Sketche kombinieren...

Beitragvon RMK » Sa 11. Aug 2018, 11:50

wie geschrieben, es ist für nen Radlader - da bewegt sich alles relativ gemächlich.
geht nur darum den *jetzt waagerecht!* -Zustand der Stapelgabel anzuzeigen,
über ca 2.5m Entfernung.... sonst hätt ich direkt ne Wasserwaage drangespaxt ;-)

und Kabel ziehen mit Anzeige im Führerhaus ist eher verwirrender als ne für helle
grüne LED die von weitem "jetzt passts!" anzeigt :)
Benutzeravatar
RMK
 
Beiträge: 1457
Registriert: Di 20. Jan 2015, 14:59
Wohnort: östlich von Stuttgart

Re: Arduino-Sketche kombinieren...

Beitragvon Sir_Death » So 12. Aug 2018, 20:42

Bastelbruder hat geschrieben:....and static acceleration, such as gravity, that allows the device to be used as a tilt sensor.
Reine Beschleunigungssensoren arbeiten dynamisch und haben eine untere Grenzfrequenz, das sind beispielsweise Piezos mit Ladungsverstärker.



OK - so weit habe ich nicht gelesen - dann sollte tatsächlich das von mir skizzierte passen - musst du nur noch deinen Minimal- und Maximalwert herausfinden (siehe oben) und wie skizziert verheiraten.
Sir_Death
 
Beiträge: 1608
Registriert: Mo 11. Mai 2015, 22:36
Wohnort: südlich von Wien

Re: Arduino-Sketche kombinieren...

Beitragvon Spike » Mi 15. Aug 2018, 14:11

Mal eine ganz andere Idee: Quecksilberschalter und Signallampe? Da tust Du Dir dann zwar keine Programmierkenntnisse drauf, könnte aber trotzdem funktionieren.
Benutzeravatar
Spike
 
Beiträge: 605
Registriert: Mi 15. Jul 2015, 08:05

Re: Arduino-Sketche kombinieren...

Beitragvon RMK » Mi 15. Aug 2018, 15:38

die Idee hatte ich sogar schon, mit einer Handvoll kleiner Quecksilberschalter und Lämpchen/LEDs.

theoretisch funktioniert das Ding mit dem Pendel am Potentiometer auch, nur braucht das Pendel einen kleinen
Schubs bis es sich bewegt, und das ist nicht ganz optimal. Könnte ich sicher noch verbessern (ich habe inzwischen
ein Poti gefunden mit "keiner" Reibung) aber ich dachte wenn alle Welt mit µCs arbeitet und ich eh mit den Dingern
anfangen wollte, warum nicht damit... :)

bin allerdings noch nicht dazu gekommen den geänderten Sketch zu testen, zu viel unterwegs grade :-/
Benutzeravatar
RMK
 
Beiträge: 1457
Registriert: Di 20. Jan 2015, 14:59
Wohnort: östlich von Stuttgart


Zurück zu Wer kann, ich brauche

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast

span