Arduino Forum

International => Deutsch => Topic started by: fridi on Jun 07, 2018, 02:23 pm

Title: Winkelberechnung mit Arduino UNO
Post by: fridi on Jun 07, 2018, 02:23 pm
Moin moin aus HU.
ich habe nicht geglaubt, dass ich mich mit 68 Jahren noch mal mit Winkelberechnungen rum  schlagen muss.
Konstellation:
Ich habe einen Scanner mit waagerechter variabler Entfernung des Scann Objekts.
Die Kamera sitzt auf dem senkrechten Balken mit variabler Höhe.
Problem:
Ich möchte, dass die Kamera automatisch in festen Höhen abhängig von der Höhe des Scann-Objekts und der Entfernung einen Bogen fährt, um das Objekt aus allen Richtungen zu scannen.
Dazu muss der Uno den Winkel für die Kamera berechnen.
Ich würde die Kamera waagerecht zum Start auf das Objekt ausrichten. Danach soll die Kamera nach unten fahren und nach oben fotografieren. Danach ein Stück höher, den Winkel einstellen und Fotos machen.

Irgendwie bin ich zu alt oder zu blöd, die entsprechende Winkelberechnung zu machen.
Es versteht sich von selbst, dass das Objekt sich beim Fotografieren um 360° dreht. Kann mir jemand die Formel für den Arduino erstellen. Das in Schritte um zu wandeln ist dann kein Problem.
Liebe Grüße an die Mathematiker hier im Forum.
Title: Re: Winkelberechnung mit Arduino UNO
Post by: Theseus on Jun 07, 2018, 02:42 pm
Viel Hilfreicher als ein Photo des Bedienpanels wäre eine Skizze deines Aufbaus.
In welche Richtung fährt die Kamera? Wo ist das Objekt? Wo sind die Winkel, die berechnet werden müssen? Aus deiner Beschreibung wird nicht klar, wie die Kamera fährt. Zum einen soll sie einen 360° Bogen machen, zum anderen fährt sie Hoch und runter also auf einer Geraden. Was denn nun?
Title: Re: Winkelberechnung mit Arduino UNO
Post by: fridi on Jun 07, 2018, 03:00 pm
Das Objekt ist auf einem Schlitten in der Waagerechten montiert und kann da gedreht werden. Die Kamera sitzt auf einem senkrechten Schlitten mit Stepper verfahr bar. Die Kamerahalterung kann mit einem Stepper gekippt werden.
Nun soll die Kamera auf der Senkrechten stückweise nach oben fahren und so ausgerichtet werden, dass sie immer auf das Objekt zeigt, also um das Objekt einen senkrechten Bogen  fährt. Es ist damit immer eine Berechnung eines rechtwinkligen Dreiecks.

Das da keine 360° möglich sind, erklärt sich von selbst. Das Objekt dreht sich beim Fotografieren um 360°.
Title: Re: Winkelberechnung mit Arduino UNO
Post by: Theseus on Jun 07, 2018, 03:22 pm
Jetzt ist alles klarer. Mit Skizze ist das kein Problem. Die Lösung ist der Tangens s ist horizontaler Abstand zum Drehteller, h ist die Kamerahöhe, phi ist der Winkel um den, die Kamera nach unten gekippt werden muss.


(https://forum.arduino.cc/index.php?action=dlattach;topic=551938.0;attach=261259)
Title: Re: Winkelberechnung mit Arduino UNO
Post by: fridi on Jun 07, 2018, 04:18 pm
Danke für die Antwort. Bei einer Höhe von 10 und einer Entfernung von 20 komme ich auf einen Wert von 0,5. Soweit war ich bisher auch schon. Wie komme ich jetzt auf den Winkel von 63,4°. Grafisch ermittelt.
Title: Re: Winkelberechnung mit Arduino UNO
Post by: Doc_Arduino on Jun 07, 2018, 04:46 pm
Hallo,

du nimmst den tangens von h / s (Gegenkathete durch Ankathete) = 10 / 20 = 0,5 und davon den Tangens = 26,565°
Der gesuchte Winkel im Bild links oben ist gleich groß.
Title: Re: Winkelberechnung mit Arduino UNO
Post by: Whandall on Jun 07, 2018, 04:51 pm
Hallo,

du nimmst den tangens von h / s (Gegenkathete durch Ankathete) = 10 / 20 = 0,5 und davon den Tangens = 26,565°

Arkustangens doch eher, oder?
Title: Re: Winkelberechnung mit Arduino UNO
Post by: Doc_Arduino on Jun 07, 2018, 05:13 pm
Hallo,

wenn damit der Cotangens gemeint sein soll, bleibe ich bei nein. Außer du vertauscht die Gegenkathete mit der Ankathete, dann stimmt auch das wieder. Obiges Bild neu gezeichnet. Man hat 2 Möglichkeiten.
tangens (@) = b/a   oder    cotanges (@) = a /b
Auf Grund des rechtwinkliges Dreiecks und Höhe kleiner Abstand (10/20) muss der Winkel kleiner 45° sein.
Wäre Höhe und Abstand gleich groß, dann wäre der Winkel 45°.

(https://forum.arduino.cc/index.php?action=dlattach;topic=551938.0;attach=261292)
Title: Re: Winkelberechnung mit Arduino UNO
Post by: Whandall on Jun 07, 2018, 05:25 pm
wenn damit der Cotangens gemeint sein soll, bleibe ich bei nein.
Nein, meist meine ich das was ich schreibe nämlich genau den Arkustangens (https://de.wikipedia.org/wiki/Arkustangens_und_Arkuskotangens).

Du errechnest zwar den Wert des Tangens, willst aber den dazu gehörenden Winkel wissen.
Dazu benötigst du die eingeschränkte Umkehrfunktion von Tangens namens Arkustangens.
Title: Re: Winkelberechnung mit Arduino UNO
Post by: Doc_Arduino on Jun 07, 2018, 05:40 pm
Hallo,

ja stimmt, Punkt für dich.  :)

Title: Re: Winkelberechnung mit Arduino UNO
Post by: fridi on Jun 07, 2018, 05:50 pm
Bei der Berechnung muss der Winkel größer 45° sein. Grafisch im CAD Programm 63,4°.
Arkustangens kann aber der Arduino nicht.
Ich bekomme aber bei der Berechnung mit dem WIN Rechner mit TAN nur Werte kleiner 1 raus.
Title: Re: Winkelberechnung mit Arduino UNO
Post by: Whandall on Jun 07, 2018, 05:59 pm
Arkustangens kann aber der Arduino nicht.
Woher beziehst du diese Fehlinformation?

Code: [Select]
void setup() {
  Serial.begin(250000);
  Serial.print(F("Arkustangens von 0.5 ist "));
  Serial.print(atan(.5));
  Serial.print(F(" das entspricht "));
  Serial.print(atan(.5) * 360 / (2 * PI));
  Serial.println(F(" Grad"));
}
void loop() {}

Code: [Select]
Arkustangens von 0.5 ist 0.46 das entspricht 26.57 Grad

Title: Re: Winkelberechnung mit Arduino UNO
Post by: Doc_Arduino on Jun 07, 2018, 06:09 pm
Hallo,

gut, dann haben wir aneinander vorbei geredet, Du suchst den Winkel gegenüber von alpha. Wäre dann 90° abzüglich des berechneten Winkels.  Sorry.   arctan (@) =  a/b = Abstand/Höhe, dann musste nichts von 90° abziehen.

Mich machen nur die unterschiedlichen Werte stutzig.
Mein Taschenrechner sagt mir von arctan () = 20/10 = 63,43°
Der Windows 10 Rechner sagt mir 70,48°.
Arduino ermittelt 26,57°, was im gleichen Kontext bezogen 90-26,57 = 63,43° entspricht.
Was zur Hölle macht der Windowsrechner? Oder bedien ich den falsch?
wissenschaftlich  > 2 > Pfeil nach oben > tan^-1

Edit:
wegen Win Rechner, hatte ausversehen zwischen RAD und GRAD umgeschalten, dass Problem sitzt immer vorm Rechner  :)
Title: Re: Winkelberechnung mit Arduino UNO
Post by: Whandall on Jun 07, 2018, 06:21 pm
Mein Windows 7 Calc hat keinen atan, dafür tanh.

Vielleicht hast du Deg/Rad/Grad (oder wie es bei dir heißt) unglücklich ausgewählt.
Title: Re: Winkelberechnung mit Arduino UNO
Post by: Doc_Arduino on Jun 07, 2018, 06:25 pm
Hallo,

ja genau, da bin ich ausversehen draufgekommen. Wenn du in den wissenschaftlichen Modus gehst, sollte eine Taste mit Pfeil nach oben auf dem Tastenfeld sein. Die heißt invers Taste oder so ähnlich. Dann ändern sich die anderen Tastenbeschriftungen und es sollte tan-1 sichtbar sein. Probier mal ...     wissenschaftlich  > 2 > Pfeil nach oben > tan^-1

Edit:
nicht oben die HYP Funktion aktivieren!, dann wechselt es zwischen tan und tanh

Ich liebe meinen einfachen Schulrechner.   :)
Title: Re: Winkelberechnung mit Arduino UNO
Post by: Theseus on Jun 07, 2018, 06:26 pm
Mein Windows 7 Calc hat keinen atan, dafür tanh.
Tanh ist der Tangens hyperbolicus. Das ist eine wenig benutzte Funktion. Du musst im Rechner auf <Inv> drücken. Dann berechnet er die inversen Funktionen (=Umkehrfunktionen).
Title: Re: Winkelberechnung mit Arduino UNO
Post by: Whandall on Jun 07, 2018, 06:55 pm
Ok, das unscheinbare Inv hatte ich bisher übersehen.  ;)
Title: Re: Winkelberechnung mit Arduino UNO
Post by: fridi on Jun 07, 2018, 08:08 pm
Danke, Leute. Ihr habt mir sehr weitergeholfen. Bin natürlich bei der Variable in die INT Falle gelaufen. Welche Variable soll ich nehmen. Habe jetzt eine float Variable generiert.
Title: Re: Winkelberechnung mit Arduino UNO
Post by: Doc_Arduino on Jun 07, 2018, 08:17 pm
Hallo,

float ist schon richtig für Kommazahlen, alles andere sind Ganzzahldatentypen.
Title: Re: Winkelberechnung mit Arduino UNO
Post by: Doc_Arduino on Jun 07, 2018, 08:45 pm
Hallo,

muss jetzt nochmal nachfragen. tan liefert den tangens und atan liefert den Winkel. Nur leider liefert die Funktionen nur das Bogenmaß von dem Winkel. Deswegen musste Whandall das Ergebnis nochmal weiter behandeln. Das irretiert mich jetzt. Liefern alle Winkelfunktionen auf einem µC nur das Bogenmaß des Winkels zurück? Ich meine das steht zwar im direkten Zusammenhang, nur ist eben ein Bogenmaß nicht der Winkel. Versteht ihr meine Frage?
Title: Re: Winkelberechnung mit Arduino UNO
Post by: Whandall on Jun 07, 2018, 08:49 pm
Ja, standardmäßig benutzen die trigonometrischen Funktionen in C(++)/Java/python/... Bogenmaß.
Title: Re: Winkelberechnung mit Arduino UNO
Post by: fridi on Jun 07, 2018, 08:52 pm
Komischerweise bekomme ich keine Werte <1 angezeigt
Code: [Select]


  int Schleifer = analogRead(Poti)+10;   //+10));//10);        // Für Fotomenge
  int Schleifer1 = analogRead(Poti1)+1;      // für Hebestrecke
  int Schleifer2 = analogRead(Poti2)+1;      // für objektentfernung
  Serial.print("Scannhoehe: ");            //Anzeigen der Scannhöhe
  Serial.print(Schleifer1);              //Anzeigen der Scannhöhe
  Serial.print(" ");
  Serial.print("Entfernung: ");            //Anzeigen der Entfernung
  Serial.print(Schleifer2);              //Anzeigen der Entfernung
  Serial.print(" ");
float  Winkel=(Schleifer1/Schleifer2);
  Serial.print("Winkel: ");
  Serial.print(Winkel);
  Serial.println(" ");     

 

 
//  Serial.print(F("Arkustangens von Winkel "));
 // Serial.print(atan(Winkel));
 // Serial.print(" ");
 // Serial.print(F(" das entspricht "));
 // Serial.println(atan(Winkel) * 360 / (2 * PI));

// Serial.println(F(" Grad"));



Title: Re: Winkelberechnung mit Arduino UNO
Post by: Doc_Arduino on Jun 07, 2018, 09:01 pm
@ Whandall: jetzt ist alles klar, Danke
@ fridi, zeig mal den Sketch

Edit:
zeig mal bitte den lauffähigen Code der falsche Werte liefert

Edit 2:
ich ahne, du meinst deinen Winkelwert, dass liegt am fehlenden Typcast

so
Code: [Select]
float  Winkel=(1.0*Schleifer1/Schleifer2);

oder
Code: [Select]
float  Winkel= (float)(Schleifer1/Schleifer2);

Title: Re: Winkelberechnung mit Arduino UNO
Post by: fridi on Jun 07, 2018, 09:16 pm
Komischerweise habe ich den Fehler schon beim Teilen der Poti Einstellungen.
Title: Re: Winkelberechnung mit Arduino UNO
Post by: Doc_Arduino on Jun 07, 2018, 09:31 pm
Hallo,

zeige mal bitte den lauffähigen Sketch der das Problem zeigt
Title: Re: Winkelberechnung mit Arduino UNO
Post by: fridi on Jun 07, 2018, 11:06 pm
Jetzt gehts. das mit dem 1* wars. Ich muss den Wert nur noch von 90° abziehen und der Winkel stimmt.

Danke danke für die Hilfe. Den Rest werde ich wohl auch noch schaffen. Händisch geht der Scanner ja. Nun muss ich mir überlegen, wie ich den Bogen in variablen Höhen konstruiere.
Title: Re: Winkelberechnung mit Arduino UNO
Post by: fridi on Jun 09, 2018, 07:01 pm
Moin moin aus HU.
Jetzt muss ich doch noch einmal Nerven.
Meine Stepper machen mit einer TR8 Gewindestange 2mm Höhe pro Umdrehung. Meine Potis ermitteln einen Wert von 0 bis 1023.

Der Potiwert soll die Höhe des zu scannenden Objekts angeben. Eine Umdrehung des Motors sind 6400 Steps. Wenn ich nun den Wert der Steps bei einer Höhe von zB. 1000 mm errechne, soll dann der Wert 1000* 6400/2 = 6400000 Steps betragen. Der Monitor zeigt mir aber einen  kleineren Wert mit negativem Vorzeichen  an.
Ist das nur ein Darstellungsproblem oder ein Rechenfehler.
Title: Re: Winkelberechnung mit Arduino UNO
Post by: Tommy56 on Jun 09, 2018, 07:12 pm
Ohne einen aktuellen Stand Deines Sketches wird da keiner etwas sinnvolles sagen können.

Gruß Tommy
Title: Re: Winkelberechnung mit Arduino UNO
Post by: Whandall on Jun 09, 2018, 07:13 pm
Meine Glaskugel zeigt: 16-Bit-Integer Überlauf, ist aber ziemlich verwaschen.
Title: Re: Winkelberechnung mit Arduino UNO
Post by: fridi on Jun 09, 2018, 07:34 pm
Ich habe long Variablen generiert, weil die Werte zu groß werden.


Code: [Select]
[
#define Poti 0                  // A0    Abort
#define Poti1 3                 // A3   CoolEn
#define Poti2 5                 // A5 separat angelötet
// --------------------PIN Benennung----------------------------------
int Kamera=10;                  // Kameraauslöser Servosteuerung alt Y Endstop
//int Servo2=11;                // frei                        alt Z endstop
int StepStpHoch=4;              // step Hoch                    alt step z
int StepStpDreh=3;              // Step Drehen  Dreehteller     alt step y
int StepStpKipp=2;              // Step  Kippen                 alt step x 
int StepDirHoch=7;              // Die Hoch  Hoch               alt z Dir
int StepDirDreh=6;              // Drehteller                   alt y DIR
int StepDirKipp=5;              // Kippen                       alt x Dir
int StepAllEna=8;               // alle Stepper einschalten
int EndstopHoch=9;              // Endstop x Achse              alt Endstop X
int Start=15;                    // schwarz    A1              Hold
int TastePlusMinus=16;           // Gelb       A2               resum
int TasteHochtief=12;           // grün   Hoch/tief             alt enable spin
int TasteKippen=13;             // braun  Kippen                alt spin dir
//----------------------------Variablen----------------------------------
int Umdrehungssteps=6400;                 //6443 Umdrehungen Teller hier 2 x 360°  12886
int Tempo=10;                   // Umdrehungsgeschwindigkeit
int Hub=1;                      //Hubgeschwindigkeit
int Kipp=3;                     //Kippgeschwindigkeit
int Klick=0;
int Servopause=1500;            //Zeit für die Einstellung des Servos auf Klick
int Fotomenge=0;                // Fotos pro Umdrehung 
int Speicherpause=3500;         //Die Zeit. die ein Foto digital abgespeichert wird
int Bildmenge=0;                // bildmenge pro Umdrehung waehlen
int Hoehe = 0;                  // Hoehe des Modells
int Ebene = 0;                  //Fotoebenen
int Drehsegment=0;              // Menge der Schritte pro Foto
int Step =0;                    //Umdrehungszähler
float Winkel=0;
long Stepshoehe=0;              //Steps der Höhe
long Stepsentfernung = 0;       // Steps der Entfernung
long Kippwinkel = 0;            //Kamera kippen





void setup()                           

{
 Serial.begin(9600);
 pinMode(Poti,INPUT);             
 //--------------------Ausgabe/ Lesen/Schreiben--------------------------
  // Pin Funktion einstellen
  pinMode(Kamera, OUTPUT);        // rRXals digital für Kamerasteuerung
  pinMode(1, OUTPUT);             //TX als digital-   für Kamerasteuerung 
  pinMode(StepAllEna, OUTPUT);
  pinMode(StepDirHoch, OUTPUT);
  pinMode(StepStpHoch, OUTPUT);
  pinMode(StepDirDreh, OUTPUT);
  pinMode(StepStpDreh, OUTPUT); 
  pinMode(StepDirKipp, OUTPUT); 
  pinMode(StepStpKipp, OUTPUT);
  pinMode(EndstopHoch,INPUT);      // Endstop für Spindel unten  alt X Endstop   
  pinMode(Start,INPUT);            // Start Knopf      alt Y Endstop
  pinMode(TastePlusMinus,INPUT);   // Plus Minus      alt Z endstop
  pinMode(TasteHochtief,INPUT);    // Hoch/tief       alt enable spin
  pinMode(TasteKippen,INPUT);      // Kippen          alt spin dir

  // Pullup Widerstände für die Tasten einschalten
  pinMode(EndstopHoch, INPUT_PULLUP);       //9 Pullup ein
  pinMode(Start, INPUT_PULLUP);             //10 Pullup ein
  pinMode(TastePlusMinus, INPUT_PULLUP);    //11 Pullup ein
  pinMode(TasteHochtief,INPUT_PULLUP);      //12 Pullup ein
  pinMode(TasteKippen, INPUT_PULLUP);       //13 Pullup ein 
  digitalWrite(StepAllEna,HIGH);            // set Ena aus

}
//---------------------------------Programmablauf----------------------
void loop(){

//.................Anzeigen der Potieinstellungen..............
  int Schleifer =  analogRead(Poti)+10;     //+10));//10);        // Für Fotomenge
  int Schleifer1 = analogRead(Poti1);     // für Objekzhoehe
  int Schleifer2 = analogRead(Poti2);     // für objektentfernung
  Stepshoehe = Schleifer1 * 3200;            // 1mm Höhe je Analog Wert
  Stepsentfernung = Schleifer2 *3200;       // 1mm Entfernung je Analog Wert
 
 
 
 
  Serial.print("Hoehe: ");            //Anzeigen der Scannhöhe
  Serial.print("Steps ");            //Anzeigen der Scannhöhe
   Serial.print(Stepshoehe);              //Anzeigen der Scannhöhe
  Serial.print(" ");
  Serial.print(Schleifer1);              //Anzeigen der Scannhöhein mm
  Serial.print("mm  ");

  Serial.print("Entfern: ");            //Anzeigen der Entfernung
  Serial.print(" Steps= ");
  Serial.print(Stepsentfernung);              //Anzeigen der Entfernung
   Serial.print(" ");
  Serial.print(Schleifer2);
  Serial.print(" mm");



/code]
Title: Re: Winkelberechnung mit Arduino UNO
Post by: Whandall on Jun 09, 2018, 07:52 pm
Code: [Select]
  int Schleifer1 = analogRead(Poti1);     // für Objekzhoehe
  int Schleifer2 = analogRead(Poti2);     // für objektentfernung
    Stepshoehe = Schleifer1 * 3200;            // 1mm Höhe je Analog Wert
    Stepsentfernung = Schleifer2 * 3200;       // 1mm Entfernung je Analog Wert

Wie wäre es mit

Code: [Select]
  Stepshoehe = Schleifer1 * 3200L;            // 1mm Höhe je Analog Wert
  Stepsentfernung = Schleifer2 * 3200L;       // 1mm Entfernung je Analog Wert
Title: Re: Winkelberechnung mit Arduino UNO
Post by: postmaster-ino on Jun 09, 2018, 08:25 pm
Hi

Warum L und nicht UL?
(werde negative Werte benötigt?)

MfG
Title: Re: Winkelberechnung mit Arduino UNO
Post by: fridi on Jun 09, 2018, 08:33 pm
Danke Danke. Das hat geholfen. Da wäre ich im Leben nicht drauf gekommen. Jetzt beim Nachlesen ist das klar.
Ja, es kommen auch negative Werte vor, wenn der Schlitten unter das Objekt fährt.
Title: Re: Winkelberechnung mit Arduino UNO
Post by: Whandall on Jun 09, 2018, 08:38 pm
Warum L und nicht UL?
(werde negative Werte benötigt?)
Keine Ahnung ob die benötigt werden, das Programm ist jedenfalls dafür ausgelegt

Code: [Select]
long Stepshoehe=0;              //Steps der Höhe
long Stepsentfernung = 0;       // Steps der Entfernung
  int Schleifer1 = analogRead(Poti1);     // für Objekzhoehe
  int Schleifer2 = analogRead(Poti2);     // für objektentfernung
  Stepshoehe = Schleifer1 * 3200;            // 1mm Höhe je Analog Wert
  Stepsentfernung = Schleifer2 *3200;       // 1mm Entfernung je Analog Wert

Da würde ein UL doch eher komisch wirken und u.U. Warnungen hervorrufen, da finde ich

Code: [Select]
 Stepshoehe = Schleifer1 * 3200L;            // 1mm Höhe je Analog Wert
  Stepsentfernung = Schleifer2 * 3200L;       // 1mm Entfernung je Analog Wert

logisch passender.
Title: Re: Winkelberechnung mit Arduino UNO
Post by: fridi on Jun 09, 2018, 09:07 pm
Mal zur Erklärung, was ich vor habe.
Das Objektive wird auf die Mitte des Objektes ausgerichtet, Dann fahre ich auf  die halbe Höhe runter + 5cm.Dort den Winkel des Fotoapparates einstellen. Das Objekt macht eine 360° Umdrehung und dort werden dann die vordefinierten Fotomengen gemacht Danach fährt  der Schlitten eine Strecke nach oben. Wie viel, weiß ich noch nicht. Dann wieder eine Fotosequenz. Das geht dann bis auf 5cm über das Objekt.
Händisch geht das ja schon alles, aber automatisch ist besser. Zudem will ich auch noch ein Display einbauen, wo ich die Höhe, Entfernung und Bildermenge ablesen kann.  Mit dem Editor ist das lästig und nicht autonom.
 Da werde ich Euch sicherlich noch mal nerven, wenn ich das nicht nachgelesen bekomme. Ich muss dafür wohl eine LIB einbinden wie bei meinem 3D Drucker. Schauen wir mal.
Title: Re: Winkelberechnung mit Arduino UNO
Post by: P_Extruder on Jun 10, 2018, 07:50 am
Hallo fridi,
vielleicht steht es ja schon irgendwo, aber bei soviel Formeln krieg ich eine Leseschwäche. Vermute ich richtig, dass Du Photogrammetrie vereinfachen willst ? Als glücklicher Besitzer von Agisofts PhotoScan habe ich mich bisher begnügt meine "Fotos" aus GoogleEarthPro zu beziehen, weil GE in meiner Gegend dazu geeignete Luftaufnahmen bietet.
Bis 500 Bilder habe ich schon zu einem druckbaren Objekt verarbeitet.

Bei kleinen Objekten, für die Dein Projekt für mich taugen würde, muss ich noch an der Aufnahmetechnik basteln. Da ich noch absoluter Arduino-Neuling bin hatte ich bisher an eine rein mechanische Lösung per Malteserkreuz gedacht. Da könnte es aber Probleme geben, weil sich die Bilder ja weder zu viel noch garnicht überlappen dürfen. Wer wissen will was ich meine, der findet bei Agisoft einschließlich Demo-Version alles Nötige (ausgenommen Speicherung als STL, OBJ usw. - das bleibt der Bezahlversion vorbehalten).

Auf alle Fälle bin ich auf Deine Erfolgsberichte gespannt !

p.s.: mein Drucker ist ein RF1000; da kämpfe ich gerade darum, neue Firmware aufzuspielen.
Title: Re: Winkelberechnung mit Arduino UNO
Post by: fridi on Jun 10, 2018, 07:31 pm
Moin Extruder. Ich bin auch hier drin. https://www.facebook.com/groups/142108429832711/
Agisoft habe ich mir auch gekauft. Ist die beste Lösung. Alles in einem. Meine Scanns funzen händisch. Dh, ich stelle den Winkel und die Höhe händisch mit den Steppern ein und der Scann in der Ebene läuft automatisch. Ich meine, dich auch in diesem Forum schon gelesen zu haben.

Was ich jetzt festgestellt habe, ist, dass ich mit dem Uno an die PIN Grenzen komme. Ich werde jetzt auf den MEGA 2560 ausweichen Die sind Pin kompatibel.. Habe davon noch einige liegen. Das Einbinden des Displays scheint nicht so schwierig zu sein, nach dem, was ich nachgelesen habe.
Title: Re: Winkelberechnung mit Arduino UNO
Post by: P_Extruder on Jun 11, 2018, 05:54 am
... Ich meine, dich auch in diesem Forum schon gelesen zu haben.


Ausgeschlossen - war mein erster Beitrag hier. Habe aber wohl richtig geraten.
Bin meistens hier : http://3d-drucker-community.de/ - da wird man zuverlässig über neue Beiträge informiert.
Dass hier die IP aller Welt preisgegeben wird ist ja ein Unding. Da werde ich mich in Zukunft lieber auf´s Lesen beschränken.
Title: Re: Winkelberechnung mit Arduino UNO
Post by: SpaghettiCode on Jun 11, 2018, 09:01 am
Dass hier die IP aller Welt preisgegeben wird ist ja ein Unding. Da werde ich mich in Zukunft lieber auf´s Lesen beschränken.
Dir ist schon aufgefallen, daß Du angemeldet nur Deine eigene IP siehst, die eh ÜBERALL mitgeloggt wird, egal wo im Netz?!

Gruß André
Title: Re: Winkelberechnung mit Arduino UNO
Post by: P_Extruder on Jun 11, 2018, 03:36 pm
Dir ist schon aufgefallen, daß Du angemeldet nur Deine eigene IP siehst, die eh ÜBERALL mitgeloggt wird, egal wo im Netz?!

Gruß André
Die Frage wäre, ob ich alleine meine IP sehe und zu welchem Zweck.

Mich selbst interessiert diese IP nicht, weil sie dynamisch wechselt.

Ob jetzt irgendwer die IP solange missbrauchen kann, solange ich Online bin (also nicht nur hier im Forum), das entzieht sich meiner Kenntnis - macht aber ein ungutes Gefühl.
Title: Re: Winkelberechnung mit Arduino UNO
Post by: Tommy56 on Jun 11, 2018, 03:48 pm
Wenn Kenntnis durch Gefühl ersetzt wird, ist das immer ungut.

Die IP siehst nur Du im Forum öffentlich. Bei den anderen steht logged.

Wenn Du Angst hast, dass Deine IP missbraucht wird, hilft Knipex (https://www.knipex.de/nc/us/produkte/?groupID=1472&page=group_detail&parentID=1367) an allen Leitungen.

Gruß Tommy
Title: Re: Winkelberechnung mit Arduino UNO
Post by: P_Extruder on Jun 11, 2018, 04:53 pm
Wenn Kenntnis durch Gefühl ersetzt wird, ist das immer ungut.

Gruß Tommy
Ist doch gut, dass ich das Gefühl habe, dass das Ironie sein soll ?

Dass Forumsbetreiber die IP in Erfahrung bringen können weiß ich seit ein Webmaster mal einem Stänkerer erlärte, dass er soviel verschiedene Nicknames verwenden kann wie er will, solange die IP immer die selbe ist.

Ich selbst hatte auf meiner Webseite mal ein Plugin installiert, von dem ich auch sowas erwartete. Angezeigt hat es mir dann allerdings auch immer nur meine eigene IP; war also nutzlos für mich.

Tja, und ich beurteile solche Kommentare auch vorzugsweise danach, was verschwiegen wird : in diesem Fall also der Zweck der Anzeige.
Da schweigt mein Gefühl leider  :smiley-confuse:

Title: Re: Winkelberechnung mit Arduino UNO
Post by: postmaster-ino on Jun 11, 2018, 07:09 pm
Hi

Diese Anzeige soll DIR zeigen, daß DU mit Deiner IP geloggt bist - wenn Du hier Mist baust, ist ganz schnell klar, WO Du gesessen hast und kurz darauf, durch die Herren in Grün ... äh, jetzt wohl eher Blau-Weiß, Wer Du wirklich bist.

Mehr ist's nicht.

Je nach Alter haben 'Sie' kurz davor Deinen Papa im Visier - da Ihm der Anschluß gehört.

Lasse Dir von Einem erzählen, Der eine eigene Seite über Jahre am Netz hatte - die Nutzer-Identifikation kann man auch über die IP machen - wenn Du ganz frisch im Geschäft bist, machst Du Das auch so.
Spätestens, wenn zwei User von gleichen Einwahl-Punkt kommen, ist Deine ganze Prüferei nämlich durchgefallen - Multi-Account erkannt, wo gar Keiner ist.

Wenn Du Mal auf Deine IP und auf mein 'Logged' klicken willst?
Für ganz Mutige gibt's noch wieistmeineip.de (https://www.wieistmeineip.de/)
(dort siehst Du dann auch, mit welchem Browser Du unterwegs bist - also so ziemlich ALLE Daten, Die Du selber ins Netz raus posaunst)

Also auch nur Zeug, Was Du eh JEDEM sendest, Dessen Seite Du besuchst.

MfG

Title: Re: Winkelberechnung mit Arduino UNO
Post by: fridi on Jun 15, 2018, 05:38 pm
Moin moin aus HU.
So, mein Display läuft.
Nun habe ich aber bei der Überprüfung immer Fehlermeldungen. zB
 if(digitalRead(TasteKippen)==LOW)      //Unterprogramm Kamera kippen
 expected unqualified-id before 'if'

 Habe mein Programm auf die üblichen Fehler ( Klammer falsch, Semikolon nicht gesetzt ) durchsucht und bisher nichts gefunden. Gibt es eigentlich einen Debugger, mit dem man das Programm Schrit für Schritt durchlaufen lassen kann?
Title: Re: Winkelberechnung mit Arduino UNO
Post by: uxomm on Jun 15, 2018, 06:02 pm
Da fehlt sicher eine Klammer, ein Semikolon oder Ähnliches.

Schalte doch die ausführlichen Warnungen ein.
Menü / Datei / Voreinstellungen / Ausführliche Warnungen während Kompilierung ANHAKEN

Dann bekommst du eine genauere Beschreibung.
Und zeige deinen Code.
Title: Re: Winkelberechnung mit Arduino UNO
Post by: michael_x on Jun 15, 2018, 06:33 pm
Quote
before 'if'
deutet an, dass der Fehler vermutlich vor der Zeile liegt, die du "gezeigt" hast.

Immherhin, du hast die Fehlermeldung geliefert, sogar als Text.
Gibt Experten die stattdessen einen Screenshot als Bild oder gar Handy-Video oder nur "bringt eine Fehlermeldung" als Beschreibung bringen.
Title: Re: Winkelberechnung mit Arduino UNO
Post by: fridi on Jun 15, 2018, 06:36 pm
Habe nun doch den UNO genommen. Hatte noch einen versteckten Pin gefunden. Ich hatte da reingeschrieben (Reserviert ). Wer lesen kann ist stark im Vorteil.
Das Display geht auch schon, nur das Gelb ist etwas hell.
Hier wird mir der Fehler angezaigt:      if(digitalRead(TasteKippen)==LOW)      //Unterprogramm Kamera kippen
exit status 1
expected unqualified-id before 'if'

Code: [Select]


//#include <LiquidCrystal_I2C.h>

#include <Wire.h> //Wire.h Bibliothek einbinden
#include <LiquidCrystal_I2C.h> //LiquidCrystal_I2C.h Bibliothel einbinden
LiquidCrystal_I2C lcd1(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); //Hier wird
                //Display 1 als lcd1 benannt, die Adresse angegeben „0x27" und die
                //Pinnbelegung durch das I²C Modul angegeben

#define Poti 0                  // A0    Abort
#define Poti1 3                 // A3   CoolEn
#define Poti2 2                 // A2 alt enable spin
// --------------------PIN Benennung----------------------------------
int Kamera=10;                  // Kameraauslöser
int StepStpHoch=4;              // step Hoch                    alt step z
int StepStpDreh=3;              // Step Drehen  Dreehteller     alt step y
int StepStpKipp=2;              // Step  Kippen                 alt step x  
int StepDirHoch=7;              // Die Hoch  Hoch               alt z Dir
int StepDirDreh=6;              // Drehteller                   alt y DIR
int StepDirKipp=5;              // Kippen                       alt x Dir
int StepAllEna=8;               // alle Stepper einschalten
int EndstopHoch=9;              // Endstop x Achse              alt Endstop X
int Start=15;                    // schwarz    A1              Hold
int TastePlusMinus=11;           // Gelb       alt Z endstop            resum
int TasteHochtief=12;           // grün   Hoch/tief             alt enable spin
int TasteKippen=13;             // braun  Kippen                alt spin dir
//  I2C Bus1 A4
//  I2C Bus2 A5
//----------------------------Variablen----------------------------------
int Umdrehungssteps=6400;                 //6443 Umdrehungen Teller hier 2 x 360°  12886
int Tempo=10;                   // Umdrehungsgeschwindigkeit
int Hub=1;                      //Hubgeschwindigkeit
int Kipp=3;                     //Kippgeschwindigkeit
int Klick=0;
int Servopause=1500;            //Zeit für die Einstellung des Servos auf Klick
int Fotomenge=0;                // Fotos pro Umdrehung  
int Speicherpause=3500;         //Die Zeit. die ein Foto digital abgespeichert wird
int Bildmenge=0;                // bildmenge pro Umdrehung waehlen
int Hoehe = 0;                  // Hoehe des Modells
int Ebene = 0;                  //Fotoebenen
int Drehsegment=0;              // Menge der Schritte pro Foto
int Step =0;                    //Umdrehungszähler
float Winkel=0;
long Stepshoehe=0;              //Steps der Höhe
long Stepsentfernung = 0;       // Steps der Entfernung
long Kippwinkel = 0;            //Kamera kippen





void setup()                          

{
lcd1.begin(16,2);             //Display 1 wird gestartet und die Größe des Displays
                              //wird angegeben(16 Zeichen, zwei Zeilen)
lcd1.backlight();             //Beleuchtung Display 1 einschalten  
  
 Serial.begin(9600);
 pinMode(Poti,INPUT);            
 //--------------------Ausgabe/ Lesen/Schreiben--------------------------
  // Pin Funktion einstellen
  pinMode(Kamera, OUTPUT);        // rRXals digital für Kamerasteuerung
  pinMode(1, OUTPUT);             //TX als digital-   für Kamerasteuerung  
  pinMode(StepAllEna, OUTPUT);
  pinMode(StepDirHoch, OUTPUT);
  pinMode(StepStpHoch, OUTPUT);
  pinMode(StepDirDreh, OUTPUT);
  pinMode(StepStpDreh, OUTPUT);  
  pinMode(StepDirKipp, OUTPUT);  
  pinMode(StepStpKipp, OUTPUT);
  pinMode(EndstopHoch,INPUT);      // Endstop für Spindel unten  alt X Endstop  
  pinMode(Start,INPUT);            // Start Knopf      alt Y Endstop
  pinMode(TastePlusMinus,INPUT);   // Plus Minus      alt Z endstop
  pinMode(TasteHochtief,INPUT);    // Hoch/tief       alt enable spin
  pinMode(TasteKippen,INPUT);      // Kippen          alt spin dir

  //................... Pullup Widerstände für die Tasten einschalten..........
  pinMode(EndstopHoch, INPUT_PULLUP);       //9 Pullup ein
  pinMode(Start, INPUT_PULLUP);             //10 Pullup ein
  pinMode(TastePlusMinus, INPUT_PULLUP);    //11 Pullup ein
  pinMode(TasteHochtief,INPUT_PULLUP);      //12 Pullup ein
  pinMode(TasteKippen, INPUT_PULLUP);       //13 Pullup ein  

  digitalWrite(StepAllEna,HIGH);            // set Ena an

}
//---------------------------------Programmablauf----------------------
void loop()
{

//.................Anzeigen der Potieinstellungen..............
  int Schleifer =  analogRead(Poti)+10;     //+10));//10);        // Für Fotomenge
  int Schleifer1 = analogRead(Poti1);     // für Objekzhoehe
  int Schleifer2 = analogRead(Poti2);     // für objektentfernung
  Stepshoehe = Schleifer1 * 3200L;            // 1mm Höhe je Analog Wert
  Stepsentfernung = Schleifer2 *3200L;       // 1mm Entfernung je Analog Wert
  Fotomenge=Schleifer/10;
    // LCD Ausgabe........................................................
  lcd1.setCursor(0,0); //Ab hier kann das I2C LCD Modul genau wie das einfache
                       // LCD Modul programmiert werden.
  lcd1.print("                 ");          // Zeile löschen
  lcd1.setCursor(0,0);
  lcd1.print("Hoe:");
  lcd1.print(Schleifer1);
  lcd1.setCursor(8,0);
  lcd1.print("Ti:");
  lcd1.print(Schleifer2);
  lcd1.setCursor(0,1);
  lcd1.print("                 ");           // Zeile löschen
  lcd1.setCursor(0,1);  
  lcd1.print("Bilder:");
  lcd1.print(Fotomenge);

  Serial.print("TastePlusMinus: ");
  Serial.print(digitalRead(TastePlusMinus));
  Serial.print(" ");
  Serial.print("Start: ");
  Serial.print(digitalRead(Start));
  Serial.print(" ");  
  Serial.print("TasteHochtief: ");
  Serial.print(digitalRead(TasteHochtief));
  Serial.print(" ");
  Serial.print("TasteKippen: ");
  Serial.print(digitalRead(TasteKippen));
  Serial.println(" ");
      
//  Serial.print(F("Arkustangens von Winkel "));
//  Serial.print(atan(Winkel));
//  Serial.print(" ");
//  float  Winkel=(1.*Schleifer1/Schleifer2);  
//  Serial.print(F(" das entspricht "));
//  Serial.print(atan(Winkel) * 360 / (2 * PI));
//  Serial.println(F(" Grad"))//;
 
  //.............. Einstellung für Bildmenge..................


  Drehsegment=Umdrehungssteps/Fotomenge;
//........................................................

  
  digitalWrite(StepAllEna,LOW);                // Motoren an
    if(digitalRead(Start)==LOW)            //Unterprogramm Teller drehen
    {
      if (digitalRead(Start)==LOW)               //Unterprogramm Teller drehen
      while(Start==LOW);                    //Entprellen und Doppeldruck unterdrücken
      {
      }
    }
    if(Schleifer1==0)
    {
//      Drehen();
    }
     else
    {    
//      Kontur();
    }
}  
//.............................Heben einleiten...............  
    if (digitalRead(TasteHochtief)==LOW)   //Unterprogramm Hoch/Tief fahren/
    {
//      Heben();
    }
//.............................Kippen einleiten...............  
    if(digitalRead(TasteKippen)==LOW)      //Unterprogramm Kamera kippen
    {
 //     Kippen();
    }
 
}


Title: Re: Winkelberechnung mit Arduino UNO
Post by: postmaster-ino on Jun 15, 2018, 06:58 pm
Hi

Drück Mal STRG+T

Dann wird Dir auffallen, daß die schließende Klammer über 'Heben einleiten' bereits ganz links steht.

Du hast Da wohl eine Klammer-Zu zu viel.

MfG
Title: Re: Winkelberechnung mit Arduino UNO
Post by: uxomm on Jun 15, 2018, 07:03 pm
Die letzten Zeilen des Codes sind ausserhalb von loop.

Code: [Select]

...
 if (Schleifer1 == 0)
  {
    //      Drehen();
  }
  else
  {
    //      Kontur();
  }
}   // <-- das ist die schließende Klammer von loop

// alles was danach kommt ist ausserhalb und der Grund für die Fehlermeldung


//.............................Heben einleiten...............
if (digitalRead(TasteHochtief) == LOW) //Unterprogramm Hoch/Tief fahren/
{
  //      Heben();
}
//.............................Kippen einleiten...............
if (digitalRead(TasteKippen) == LOW)   //Unterprogramm Kamera kippen
{
  //     Kippen();
}

}

Title: Re: Winkelberechnung mit Arduino UNO
Post by: Doc_Arduino on Jun 15, 2018, 07:04 pm
Hallo,

in Zeile 160, nach Kontor() ist die Klammer zu viel
und zusätzlich das Semikolon der while Zeile 148 muss weg
Title: Re: Winkelberechnung mit Arduino UNO
Post by: fridi on Jun 15, 2018, 08:24 pm
Jungs, ihr seid ja so gut. Dankeschön. Ich hatte das komplett durchsucht, aber scheinbar immer übersehen.
Das mit den Klammern und Semikola ist aber auch gewöhnungsbedürftig. Immer die gleichen Fehler.
Habt ihr da nen Trick, um so was zu finden?Ich habe mir den Wolf gesucht zumal die Fehlermeldungen ja nicht gerade aussagefähig sind.
Title: Re: Winkelberechnung mit Arduino UNO
Post by: uxomm on Jun 15, 2018, 08:58 pm
Ein paar "Tricks" wurden schon erwähnt:
- ausführlichen Warnungen einschalten
- Auto-Formatierung mit STRG+T
Title: Re: Winkelberechnung mit Arduino UNO
Post by: Doc_Arduino on Jun 15, 2018, 09:04 pm
Hallo,

mach mal die falsche Klammer wieder rein und gehe mit dem Cursor danach direkt hinter die Eröffnungsklammer von loop. Dann scrollste langsam nach unten guckst welche Schließklammer dir die IDE zugehörige anzeigt. Dann machste die falsche Klammer weg und guckst nochmal.

Bei Verdacht auf Klammerfehlern gehe immer alle durch dort wo ich zuletzt Code geschrieben oder geändert habe.
Eine gute Code Formatierung ist dabei viel wert.

Das falsche while Semikolon wird nicht als Fehler erkannt. Wäre fehlerfreier Syntax, nur die Wirkung vom Code ist damit verfälscht. Wenn man das wirklich bewusst mal so schreibt, sollte man das für später kommentieren.
Title: Re: Winkelberechnung mit Arduino UNO
Post by: michael_x on Jun 15, 2018, 11:19 pm
Quote
Code: [Select]
    if(digitalRead(Start)==LOW)            //Unterprogramm Teller drehen
    {
      if (digitalRead(Start)==LOW)               //Unterprogramm Teller drehen
      while(Start==LOW);                    //Entprellen und Doppeldruck unterdrücken
      {
      }
    }

Quote
zusätzlich das Semikolon der while Zeile 148 muss weg
Das verändert gar nichts.
Ist so oder so Schrott.
Title: Re: Winkelberechnung mit Arduino UNO
Post by: fridi on Jun 16, 2018, 06:54 pm
Wieso ist das Schrott. Wenn ich das nicht mache, läuft der Tastendruck ins Untermenü und stopt dort den Ablauf. Es ist ja eine Start/Stop Taste. Richtiges Entprellen geht natürlich anders.
Title: Re: Winkelberechnung mit Arduino UNO
Post by: Doc_Arduino on Jun 16, 2018, 07:38 pm
Hallo,

du musst den Taster entprellen. Danach schaltest du mit dem "entprellten Signal" eine Statusvariable einfach nur um. Andere sagen toggeln dazu. Dann haste eine Schalterfunktion und nicht die Tasterfunktion.

@ micha:
Ja okay, dass Semikolon macht den Anweisungsblock überflüssig, weil dieser hier leer ist macht das nichts, angewöhnen sollte man sich das dennoch nicht, sonst wundert man sich nur noch was schief läuft.
Title: Re: Winkelberechnung mit Arduino UNO
Post by: P_Extruder on Jun 16, 2018, 08:09 pm
... Ist so oder so Schrott.
Ich äußere mich mal zum anderen "so" : https://youtu.be/ne7okNbXym0

Wenn man sieht wie Sanladerer da mit den Tücken der Objekt-Positionierung kämpft, dann kann man das Projekt von Fridi nur begrüßen.
Da man aber tunlichst vermeiden sollte dass sich der Abstand zum Objekt durch den vertikalen "Aufzug" mit jeder Reihe ändert, habe ich mir einen Halbkreis aus Holz gebastelt. Da bleibt der Abstand stets gleich und jede Winkelberechnung wird überflüssig.
Title: Re: Winkelberechnung mit Arduino UNO
Post by: fridi on Jun 16, 2018, 09:48 pm
Die Abstandsveränderung ist nicht so schlimm. Wichtig ist, dass sich die Fotoeinstellung nicht verändert. Ich mache die Fotos ja von Hand mit dem gleichen Prinzip und des geht. Das Programm Agisoft liest die Metadaten des Fotos aus und kann das dann berücksichtigen. Zudem hat man bei dem Halbkreis auch eine Veränderung zum Objekt. Bei der Figur ist der Kopf von unten gesehen erst weit weg und dann von oben dicht dran.
Bei großen Objekten oder kleinem Kreis sind die Abweichungen noch größer.
Und wenn ich den Sanladerer drucken sehe, wird mir ganz schlecht. Zudem ist die X Box Kinect völlig ungeeignet für kleine Sachen
Title: Re: Winkelberechnung mit Arduino UNO
Post by: fridi on Jun 16, 2018, 11:14 pm
Um noch mal auf den "Fehler" mit dem Semikolon in der While Schleife zurück zu kommen. Lasse ich das Semikolon weg, bekomme ich eine Fehlermeldung. Also ist das Setzen des Semikolons nicht falsch?
Title: Re: Winkelberechnung mit Arduino UNO
Post by: Doc_Arduino on Jun 17, 2018, 12:03 am
Hallo,

schlag mal die while Funktion auf. Es gehört kein Semikolon dorthin. Da ich deine lcd lib nicht habe, lösche ich alles was lcd betrifft raus, entferne die falsche Klammer und das falsche Semikolon und es kompiliert fehlerfrei. Wennn das bei dir nicht fehlerfrei kompiliert, dann musst du demzufolge etwas anders machen.  Ich hätte es letztens nicht geschrieben wenn es nicht fehlerfrei kompiliert hätte.
Die Frage wäre welche Fehlermeldung du bekommst. Sketch samt Fehlermeldung zeigen wäre jetzt gut. Dann können wir alle erneut drüberschauen.
Title: Re: Winkelberechnung mit Arduino UNO
Post by: fridi on Jun 17, 2018, 12:54 am
Bei While (Bedingung)
{
}

ist es scheinbar egal.

Bei
Do
{
}
while(Bedingung);

geht es nicht ohne Semikolon.

Um noch mal auf die Start/Stop Taste zurück zu kommen.

   if (digitalRead(Start) == LOW)             //Unterprogramm Teller drehen
      while (Start == LOW)                 // Doppeldruck unterdrücken
      {
      }

Dieses ist in der Fernmeldetechnik eine übliche 4Takt Schaltung. Das habe ich 1966 schon in der Lehre gelernt und mit Relais nachgebildet. War in jeder Telefonanlage zur Erdtastenfunktion eingebaut. Rückfragefunktion.
Ich werde aber noch das Entprellen in die Funktion  einbauen.

Title: Re: Winkelberechnung mit Arduino UNO
Post by: Theseus on Jun 17, 2018, 09:08 am
Um noch mal auf die Start/Stop Taste zurück zu kommen.

   if (digitalRead(Start) == LOW)             //Unterprogramm Teller drehen
      while (Start == LOW)                 // Doppeldruck unterdrücken
      {
      }

Dieses ist in der Fernmeldetechnik eine übliche 4Takt Schaltung. Das habe ich 1966 schon in der Lehre gelernt und mit Relais nachgebildet. War in jeder Telefonanlage zur Erdtastenfunktion eingebaut. Rückfragefunktion.
Ich werde aber noch das Entprellen in die Funktion  einbauen.
Du musst dann aber   while (digitalRead(Start) == LOW)  schreiben, da Start die Pinnummer ist, die nicht LOW wird. In so einem Fall kannst du einfach mit Delay(50) entprellen.

Deine obige Doppeldruckunterdrückung ist aber in vielen Fällen nicht geschickt, da sie blockierend ist. Während die Taste gedrückt ist, ist der Arduino blockiert und kann auf keine Sensoren reagieren oder ein Display aktualisieren.

Besser ist
Code: [Select]
Status=digitalRead(Start);
 if ((Status == LOW) && (oldStatus==High)) {reagiere auf Taste}
 oldStatus=Status;


Entprellen kann man hier auch mit einem kurzen Delay oder mit mills und einem Interval.
Title: Re: Winkelberechnung mit Arduino UNO
Post by: Doc_Arduino on Jun 17, 2018, 10:28 am
Hallo,

nochmal. Hier ist es nicht egal ob nach der Bedingung ein Semikolon steht oder nicht. Du merkst das nur im Moment nicht, weil dein Anweisungsblock leer ist.

Code: [Select]

while (Bedingung)
{
  ... mach was sinnvolles
}





do while ist eben nicht while, Semikolon muss hingeschrieben werden
Code: [Select]

do
{
  ... mach was sinnvolles
}
while(Bedingung);

Fernmeldetechnik kann man vielleicht schlecht bzw. nicht 1:1 mit µC Programmierung vergleichen. Auch die Leute die aus der SPS Ecke kommen müssen hier und da umdenken. Wenn der µC auf alle Abfragen usw. im Programm jederzeit reagieren soll, dann muss die loop ohne Blockierung permanent durchlaufen können. Das ist das A & O.
Title: Re: Winkelberechnung mit Arduino UNO
Post by: fridi on Jun 17, 2018, 11:41 am
Danke für die Antworten. Jungs, ihr habt Recht. Ich werde die Vorschläge übernehmen und einarbeiten. Ich bin froh, dass ich hier etwas dazulernen kann. Dafür sind Profis Gold richtig.
Man muss sich ja wundern, was in so einem kleinen Prozessor alles drin steckt.
Title: Re: Winkelberechnung mit Arduino UNO
Post by: Doc_Arduino on Jun 17, 2018, 12:12 pm
Hallo,

keine Sorge das wird schon. Gerade das hantieren mit millis geht irgendwann in Fleisch und Blut über.  Bei millis muss man eigentlich nur an seine Armbanduhr denken, also was man mit der einen ständig laufenden Zeitanzeige alles machen kann.

Theseus erklärt millis()
http://forum.arduino.cc/index.php?topic=400102.msg2752141#msg2752141 (http://forum.arduino.cc/index.php?topic=400102.msg2752141#msg2752141)

GuntherB - BlinkwithoutDelay - Die Nachtwächtererklärung
http://forum.arduino.cc/index.php?topic=423688.0 (http://forum.arduino.cc/index.php?topic=423688.0)

Wenn du im Forum oder andere Foren mitliest, merkst du das jeder so seinen Fimmel hat. :)  Also jeder legt auf andere Dinge speziellen Wert. Man muss dann versuchen es zuverstehen und für sich sagen brauch ich das, gefällt mir das, übernehme ich das oder eben auch nicht.
Title: Re: Winkelberechnung mit Arduino UNO
Post by: fridi on Jun 17, 2018, 12:44 pm
Ja, das stimmt. Ich habe auch so meine Fimmel im Reprap Forum. Mich nervt es dort, dass die Leute nicht ansatzweise bereit sind, sich einzulesen oder etwas aus zu probieren. Da sollen es lieber die Anderen machen.
Ich habe vor 100 Jahren mit Klipper und Basic gearbeitet. Dann mit Access für Anwendungen bei der Bundeswehr. Dabei ist sogar mal ein Kochbuch heraus gekommen.
Das mit dem Arduino Programmieren macht mir mittlerweile richtig Spaß. Könnte neben dem Basteln, 3 D Drucken und 3D Scannen ein zusätzliches Hobby werden. Was erfinden und andere Wege beschreiten war schon immer mein Spaß. Das macht das Leben erst interessant und hält den Kopf fit.
Title: Re: Winkelberechnung mit Arduino UNO
Post by: P_Extruder on Jun 17, 2018, 07:33 pm
...Da sollen es lieber die Anderen machen.

Meine Rede, warum soll ich das Rad neu erfinden (Vorsicht Selbstironie)

https://www.glohbe.de/de/programmierung-arduino-camera-slider/

Keine Ahnung, ob der sich auch schon mit Winkeleinstellungen befasst, aber laufen tut´s schon.

https://learn.adafruit.com/how-tall-is-it?view=all
Title: Re: Winkelberechnung mit Arduino UNO
Post by: P_Extruder on Jun 23, 2018, 08:59 am
... Arkustangens kann aber der Arduino nicht.

https://learn.adafruit.com/how-tall-is-it?view=all (ist zwar für Höhenmessung - bezüglich vertikale Winkelmessung aber brauchbar).
Title: Re: Winkelberechnung mit Arduino UNO
Post by: fridi on Jun 23, 2018, 05:34 pm
So, bin mit meinem Scanner einen Schritt weiter. Er läuft jetzt das Objekt ab. Nur die Winkeleinstellung muss noch programmiert werden. Beim Konturfahren habe ich 5cm Schritte vorgesehen.
https://www.facebook.com/frithjof.lucht/videos/1799000820138594/
Title: Re: Winkelberechnung mit Arduino UNO
Post by: postmaster-ino on Jun 24, 2018, 01:22 pm
Dann eben ohne Video ... fahsebock will halt nicht jeder ...

*Edit*
halt statt hat korrigiert
*/Edit*
Title: Re: Winkelberechnung mit Arduino UNO
Post by: noiasca on Jun 24, 2018, 02:57 pm
auch mit facebook

Leider ist dieser Inhalt derzeit nicht verfügbar
Der von dir angeklickte Link ist abgelaufen oder die Seite ist nur für eine Zielgruppe sichtbar, in der du nicht enthalten bist.
Zurück zur vorherigen Seite · Zum News Feed · Besuche unseren Hilfebereich

na dann Zurück ;-)
Title: Re: Winkelberechnung mit Arduino UNO
Post by: fridi on Jun 24, 2018, 05:59 pm
So, nun noch einmal mit anderer URL. Hatte die Seite einer geschlossenen Gruppe angezeigt.
 
https://www.facebook.com/DasMonsterlebt/
Title: Re: Winkelberechnung mit Arduino UNO
Post by: P_Extruder on Jun 29, 2018, 06:53 am
Nachdem Facebook-Muffel hier wohl nicht mehr auf Information hoffen dürfen etwas in einer ähnlichen Richtung : https://youtu.be/uYgsmT7_Y7o?t=10m38s (https://youtu.be/uYgsmT7_Y7o?t=10m38s)

Dem Thema des Threads (Berechnung) wird es zwar nicht gerecht und mich irritiert, dass der Autor zunächst kein selbst erzeugtes Mesh zur Erklärung des freien "MeshLab" verwendet (das kommt dann später : https://youtu.be/uYgsmT7_Y7o?t=11m41s (https://youtu.be/uYgsmT7_Y7o?t=11m41s)) , aber immerhin werden die Winkel des Drehtellers vom Arduino gesteuert. Das sollte sich eigentlich auch für die Vertikale umsetzen lassen, oder?

Die STL-Files gibt es hier: https://www.thingiverse.com/thing:2981982 (https://www.thingiverse.com/thing:2981982)
Title: Re: Winkelberechnung mit Arduino UNO
Post by: fridi on Jun 29, 2018, 12:42 pm
Hier sind nähere Informationen aus meiner Cloud  Hier sind meine Versuche, eine Steuerung des UNO her zu stellen sowie die STL Dateien für den Bau des Scanners. Momentan bin ich noch an der Steuerung des UNO mit AT Mega dran. Ist aber falsch bezeichnet. Das ist noch ein Überbleibsel vom probeweisen Umstieg auf Mega. Aktuell läuft das Programm über einen UNO. Hatte doch noch einen reservierten Pin gefunden, um das Display einzubinden.  https://c.1und1.de/@519811777282709922/uMPwfeveRJeL0k4pOzWExg  Ich bin immer noch an der Programmierung der Winkeleinstellung dran. Zudem ist das Programm noch nicht aufgeräumt. Also bitte Nachsicht. Wenn das Programm läuft, werde ich die STL Dateien noch einmal kontrollieren und ergänzen. Zudem gibt es hier https://www.facebook.com/groups/142108429832711/ zusätzliche Informationen über den Selbstbau von Scannern und Software. Ist eine geschlossene Gruppe. Bitte melden, wenn jemand dort rein möchte. Ich weiß nicht, ob man da so mitlesen kann.
Title: Re: Winkelberechnung mit Arduino UNO
Post by: P_Extruder on Jun 29, 2018, 01:14 pm
... Also bitte Nachsicht. ...
Nachsicht ist immer besser als das Nachsehen ;-)

Das Video mit den Infrarotsensoren ist in Punkto Detailtreue wohl eh zu ernüchternd, als das jemand diese Methode wirklich brauchen könnte. Die Reichweite der Sensoren langt wohl einfach nur für Kleinteile.

Das lange Schweigen war für mich aber Anlass mein eigenes, auf Photogrammetrie gesetztes Programm zu forcieren. An Stelle der senkrechten Führung habe ich jetzt den größten Halbkreis im Bau, den ich noch in meinem Dachboden unterbringen kann (gut 2 Meter Radius). Statt des Drehtellers fährt der Bogen dann gradlinig auf Schienen.
Erstes Objekt wird ein rund 100 Jahre altes Modell eines Dampfschleppers (hieß zuletzt Moulay Idriss und war im Mai 2007 im SchiffsModell beschrieben).

Title: Re: Winkelberechnung mit Arduino UNO
Post by: fridi on Jun 30, 2018, 02:20 pm
Hallo an die Mathematiker. Ich komme nun doch an meine Grenzen. Vielleicht hat ja jemand eine Idee oder einen Ansatz. Mir schwirrt der Kopf.
Problemstellung. Ich habe ein Objekt variabel, aber zum Berechnen erst einmal in 600mm Entfernung   und die Kamera in der halben Objekthöhe rechtwinklig positioniert. Nun fahre ich die Kamera um die halbe Objekthöhe + 500mm nach unten. Dabei verändert sich die Entfernung (Hypotenuse). Hier den Winkel berechnen und die Kamera einstellen. Danach fahre ich die Kamera 500mm nach oben. Die Hypotenuse muss neu berechnet werden und der Winkel auch. Nun steht die Kamera ja schon auf einem Winkel. Also muss der vorherige Winkel davon abgezogen werden. Ab der Mitte des Objektes geht der Winkel in den negativen Bereich. Die Kamera in den Startwinkel drehen und dann den neuen Winkel einstellen wäre eine Option. Das lineare rauf und runter Fahren ist auch nicht das Problem. Ich hänge hier mal meine Programmierung an. Ist nicht aufgeräumt, weil ich da ständig am Probieren bin. Hinzu muss ich sagen das die Objekthöhe variabel ist. In meinem Testfall 100mm Objekt + 50mm nach unten und 50mm nach oben. Also hier Fahrweg 200mm.
Code: [Select]

void Kontur()
{
  //..............Hoehe des Objektes berechnen................
  Serial.print(" Fahrwegunten  ");          // Zeile löschen
  Serial.println(Fahrwegunten);
  Gesamtzaehler = 0;
  WinkelCounter = 0;
  Absenken();

  digitalWrite(StepDirKipp, HIGH);      //Kippen nach oben drehen High
  while (Gesamtzaehler <= Fahrweg)
  {
    Kamerawinkel();
    //   Drehen();
    Hochfahren();
  }
}
//...............................Schlitten absenken........................
void Absenken()
{
  digitalWrite(StepDirHoch, HIGH);       //Nach unten drehen
  Serial.print(" Fahrwegunten  ");
  Serial.println(Fahrwegunten);
  Wegzaehler = 0;

  while (Wegzaehler <= Fahrwegunten)
  {
    digitalWrite(StepStpHoch, HIGH);          //Takt High
    delay(0.01);
    digitalWrite(StepStpHoch, LOW);           //Takt low
    delay(0.01);
    Wegzaehler++;
    if (digitalRead(EndstopHoch) ==  HIGH)     //Wenn Endstop ausgelöst
    {
      Ende();                                  //Dann Ende aufrufen
    }


  }
  Serial.print(" Wegzaehler  ");
  Serial.println(Wegzaehler);
}
//.............................Schlitten hoch fahren......................
void Hochfahren()
{
  digitalWrite(StepDirHoch, LOW);      //Nach oben drehen
  Gesamtzaehler = 0;

  while ( Gesamtzaehler <= Fahrweg)
  {
    Wegzaehlerrauf = 0;
    while ( Wegzaehlerrauf <= ScannAbschnitt * StepsMM)           // 50mm hochfahren
    {
      digitalWrite(StepStpHoch, HIGH);          //Takt High
      delay(0.01);
      digitalWrite(StepStpHoch, LOW);           //Takt low
      delay(0.01);
      Wegzaehlerrauf++;
      Gesamtzaehler++;
    }
    Serial.print(" Fahrweg: ");
    Serial.print(Fahrweg);
    Kamerawinkel();
    //   Drehen();
    // Serial.print("    Wegzaehler: ");
    // Serial.println(Wegzaehler);
  }
}
//..............................Winkel einstellen............................
void Kamerawinkel()
{
  if (Schleifer2 > 10)        //Wenn kleiner, dann keine Winkelanpassung, nur hoch fahren
  {
    //   Hoehe = (Schleifer1 * StepsMM);// + (100 * StepsMM);//Höhe des bjekts +Vor/NachLauf in Steps
    //   UntereHoehe = Hoehe / 2 ;              // Untere Höhe 1/2 Höhe der Höhe
    //    GefahreneStrecke = GefahreneStrecke + Wegzaehler;  //Tatsächlich gefahrene Strecke
 Position=Wegzaehler;
   
   
   
   
   
   
   
    Serial.print(" WinkelCounter: ");
    Serial.println(WinkelCounter);

   
      Serial.print(" WinkelCounter: ");
      Serial.println(WinkelCounter);

      Fahrwegunten = Fahrwegunten - (StepsMM * ScannAbschnitt);
   
    float Winkel = atan(1.*Fahrwegunten / Entfernung) * 360 / (2 * PI);
    Winkelsteps = Winkel * StepsGrad;
    if (Winkelsteps < 1)
    {
      Winkelsteps = Winkelsteps * -1;
    }
    Serial.print(" WinkelCounter: ");
    Serial.println(WinkelCounter);
    Serial.print(" Winkel: ");
    Serial.print(1.*Winkel);
    Serial.print("  Wegzaehler: ");
    Serial.print(Wegzaehler);
    Serial.print(" Winkelsteps: ");
    Serial.print(1.*Winkelsteps);
    Serial.print(" Fahrwegunten: ");
    Serial.print(Fahrwegunten);
    //    Serial.print(" Entfernung: ");
    //    Serial.print(1.*Entfernung);
    Serial.print("  Gradzaehler: ");
    Serial.println(Gradzaehler);

    //   Gradzaehler = 0;
    while (Gradzaehler <= Winkelsteps)        // Schleife zum Kippen
    {
      digitalWrite(StepStpKipp, HIGH);        //Takt High
      delay(Kipp);                            //Verzögerung
      digitalWrite(StepStpKipp, LOW);         //Takt LOW
      delay(Kipp);                            //Verzögerung
      Gradzaehler++;
    }
    //   Serial.print("  Fahrwegunten: ");
    //   Serial.print(Fahrwegunten);
    while (digitalRead(TastePlusMinus) == HIGH)  // Warten
    {
      digitalWrite(StepDirKipp, LOW);      //Kippen nach unten drehen

    }
  }

  else
  {
    //    while (digitalRead(TastePlusMinus) == HIGH)   //Warten
    //    {
    //    }
  }
  // Richtung = 1;             // Kipprichtung nach unten stellen
  Fahrwegunten = Fahrwegunten - Wegzaehler;
  WinkelAlt = Winkel;
}



//..................Endstopfunktion.................
void Ende()
{
  Endzaehler = 0;
  digitalWrite(StepDirHoch, LOW);          // nach oben drehen
  while (Endzaehler < 3 * StepsMM)
  {
    digitalWrite(StepStpHoch, HIGH);          //Takt High
    delay(1);
    digitalWrite(StepStpHoch, LOW);           //Takt low
    delay(1);
    Endzaehler++;
  }
  Endzaehler = 0;
  digitalWrite(StepDirHoch, HIGH);          //Dann wieder nach unten drehen schalten
}

//    Serial.print(F("Arkustangens von Winkel ist "));
//    Serial.print(atan(Winkel));
//    Serial.print(F(" das entspricht "));
//    Serial.print (atan(Winkel) * 360 / (2 * PI));
//    Serial.println(F(" Grad"));


//   Winkel1= (atan(Winkel) * 360UL / (2 * PI)); // Kamerawinkel
//    Serial.print("Winkel: ");
//    Serial.print(1.*Winkel1);

//   Serial.print(F("Arkustangens von Winkel "));
//   Serial.print(atan(Winkel));
//   Serial.print(" ");

//   Serial.print(F(" das entspricht "));
//    Serial.print(atan(Winkel) * 360 / (2 * PI));
//   Serial.println(F(" Grad"));
Title: Re: Winkelberechnung mit Arduino UNO
Post by: P_Extruder on Jun 30, 2018, 04:14 pm
Genau passend zur Wunschvorstellung kann ich zwar nichts liefern, aber gemäß dem Thread bezügl. Bilder im Text versuche ich es zunächst mit einer Illustration aus der ONE-Drive-Cloud :
https://1drv.ms/u/s!AhY4t4UjuOcbgesuvkb87LrGTYAyyA (https://1drv.ms/u/s!AhY4t4UjuOcbgesuvkb87LrGTYAyyA)
Ich bin hier vom Winkel (7.5°) ausgegangen; man kann natürlich auch von der Höhe ausgehen.
Gerade weil ich eigentlich weiß was Agisoft PhotoScan braucht bringt mich das Auf und Ab in Fridis Beschreibung etwas durcheinander.
Die entsprechende Formel war schon in einem meiner vorigen Posts enthalten - folgt aber hier nochmal: https://1drv.ms/u/s!AhY4t4UjuOcbgesvqM_U8CRdXX1OqQ (https://1drv.ms/u/s!AhY4t4UjuOcbgesvqM_U8CRdXX1OqQ)

Mögen geneigte Mathematiker bestätigen oder widerlegen was ich da in SketchUp fabriziert habe.
Ebenso simpel wären dann die von Fridi gewünschten Einstellungen zu ermitteln.
Umsetzung in Arduino-Code dann bitte durch Experten.
Title: Re: Winkelberechnung mit Arduino UNO
Post by: Tommy56 on Jun 30, 2018, 04:43 pm
Wenn Du Dich schon auf den Thread "Bilder im Text" beziehst, warum machst Du dann genau das Gegenteil?

Gruß Tommy
Title: Re: Winkelberechnung mit Arduino UNO
Post by: P_Extruder on Jun 30, 2018, 04:50 pm
Wenn Du Dich schon auf den Thread "Bilder im Text" beziehst, warum machst Du dann genau das Gegenteil?

Gruß Tommy
Weil es wie sich grad erwiesen hat für mich leichter ist . Aufgeschoben ist aber nicht aufgehoben; mir ist schon klar dass ein sofort sichtbares Bild willkommener ist. Bei sehr großen Dateien kann OneDrive nämlch ganz schön nerven.
___________________________________________________________________________________
http://3d-drucker-community.de/forum/3d-drucken/software/32372-marlin-installationsprobleme-auf-ramps-1-4-mit-china-arduino-2560-und-12864-display (http://3d-drucker-community.de/forum/3d-drucken/software/32372-marlin-installationsprobleme-auf-ramps-1-4-mit-china-arduino-2560-und-12864-display)

Ist ein in dieser Hinsicht vorbildliches Forum (mit anderen Schwächen). Man kann dort die Bildgröße ganz nach Bedarf ändern.
Title: Re: Winkelberechnung mit Arduino UNO
Post by: Tommy56 on Jun 30, 2018, 04:59 pm
Um die Bildgröße zu ändern gibt es Bildbearbeitungsprogramme. Manche Bildbetrachter können es auch.

Gruß Tommy
Title: Re: Winkelberechnung mit Arduino UNO
Post by: P_Extruder on Jun 30, 2018, 05:04 pm
Um die Bildgröße zu ändern gibt es Bildbearbeitungsprogramme. Manche Bildbetrachter können es auch.

Gruß Tommy
Sollte allgemein bekannt sein. Probier´s halt aus was schneller geht.
Title: Re: Winkelberechnung mit Arduino UNO
Post by: Tommy56 on Jun 30, 2018, 05:28 pm
Ganz einfach: Ich ignoriere Deine Bilder. Das geht für mich am Einfachsten.

Gruß Tommy
Title: Re: Winkelberechnung mit Arduino UNO
Post by: P_Extruder on Jun 30, 2018, 07:54 pm
Ganz einfach: Ich ignoriere Deine Bilder. Das geht für mich am Einfachsten.

Gruß Tommy
Die Bilder sind ja auch nur für diejenigen bestimmt, die am Thema interessiert sind.
Also passt das schon so.
Title: Re: Winkelberechnung mit Arduino UNO
Post by: postmaster-ino on Jun 30, 2018, 08:23 pm
Hi

Das Problem werden die Leute haben, Die erst in einigen Jahren Interesse dazu entwickeln - da ist 'also passt Das so' nicht mehr ganz so richtig.

MfG
Title: Re: Winkelberechnung mit Arduino UNO
Post by: Whandall on Jun 30, 2018, 08:26 pm
Die Bilder sind ja auch nur für diejenigen bestimmt, die am Thema interessiert sind.
Also passt das schon so.
Meine Hilfe ist auch nur für die bestimmt, die mir helfen, ihnen zu helfen.
Mein Nürnberger Trichter ist defekt.

Passt schon.
Title: Re: Winkelberechnung mit Arduino UNO
Post by: fridi on Jun 30, 2018, 08:47 pm
Danke, grafisch habe ich das Problem auch gelöst. Mir geht es um die Umsetzung. Aber ich bleibe dran. Wie ich schon schrieb, ist scheinbar bei meiner Birne der Draht lose. Ich kann so ein paar Stunden nicht über dem Problem brüten. Aber was solls, ich werde das Problem auch lösen. Dauert dann etwas länge
r und ich muss da mit einem generellen Plan ran.
Title: Re: Winkelberechnung mit Arduino UNO
Post by: postmaster-ino on Jun 30, 2018, 08:52 pm
Hi

Wenn Du doch das Problem auf Papier bringen kannst - dann kannst Du auch diverse Winkel darin einzeichnen - und Die sind Alle berechenbar.
Du musst Dir nur klar sein, welche zwei Angaben Du hast, damit Du nach-und-nach die Anderen berechnen kannst.

MfG
Title: Re: Winkelberechnung mit Arduino UNO
Post by: P_Extruder on Jun 30, 2018, 10:06 pm
...Mir geht es um die Umsetzung...
Ich nehme an, dass die Umsetzung in den Arduino-Code gemeint ist.
Denn zu berechnen gibt es eigentlich nichts. In meinem Beispiel macht SketchUp alle Berechnungen, aber jedes CAD-Programm kann das auch. Diese Werte (natürlich nicht in Metern) müssen doch nur in Schritte für den Stepper umgerechnet werden? Was an dem bei #75 angehängten Programm funktioniert den nicht wunschgemäß ?
Leider melden sich ja bisher nur Schulmeister, die schon x-Mal Gesagtes zu meiner Bilder-Schau wiederholen.

Zu dem von mir verlinkten Video gibt es ja schon den fertigen Code und der Autor kündigt auch eine Version an, die den "Lift" automatisch wieder in eine Nullposition fährt (nehme an in Höhe des Drehtellers).

Was geändert bzw. erweitert werden muss ist halt, dass bisher der Sensor nur waagrecht ausgerichtet ist. Die erforderliche Drehung wäre in meinem Beispiel immer 7,5° nur der "Lift" (in der Formel "motion" genannt) nimmt halt Stufe für Stufe so sehr zu, dass diese Methode für mich nicht in Frage kommt.
Title: Re: Winkelberechnung mit Arduino UNO
Post by: fridi on Jun 30, 2018, 10:38 pm
Ne, der Winkel ist immer ein anderer. Das ist nichts gleichmäßiges. Ich habe aber noch einmal überlegt. Die Hypotenusenlänge ist eigentlich egal. Es reichen die Entfernung und der Abstand vom Nullpunkt. Durch den rechten Winkel habe ich alle Daten. Danke für die Hilfeleistung. Ich werde das doch selbst versuchen. Ich will hier auch keinen Streit provozieren.

Edit:
Natürlich muss man das berechnen, da ja alle Werte wie Entfernung, Höhe des Objektes und Abtastrate variabel sind.Man kann natürlich in Sketchup ( habe ich auch gemacht ) alle Werte vorbestimmen, aber dann habe ich eine unendliche Menge an Daten. Das ist nicht praktikabel. Aber hier beim Schreiben sind mir dazu schon wieder einige Ideen gekommen. Man muss nur darüber sprechen. In meinem Stübchen sind das leider nur unreflektierte Monologe.
Title: Re: Winkelberechnung mit Arduino UNO
Post by: P_Extruder on Jun 30, 2018, 11:01 pm
Ne, der Winkel ist immer ein anderer....
Der Neigungswinkel der Kamera in Richtung Zentrum des Objektes (in meinem Bild der Halbkreis) variiert freilich, nur vom Mittelpunkt des Objektes ist er bei mir immer gleich. Natürlich ist bei dieser Methode ein Blick direkt von oben ausgeschlossen. Schon bei 82,5° vom Objekt-Zentrum bzw. 7,5° von der Kamera zur Senkrechten aus gemessen müsste sich die Kamera bereits in über 1128 m Höhe befinden.

Alles andere ist schon in der Beschreibung von PhotoScan zu sehen.

p.s.: auch wenn´s außer mir niemanden zu interessieren scheint nochmal die Frage: was läuft denn bei dem Programm falsch oder nicht nach Wunsch?
Title: Re: Winkelberechnung mit Arduino UNO
Post by: fridi on Jul 01, 2018, 12:13 pm
Die Winkeleinstellung läuft falsch. An der unteren Position ist die noch richtig. Fahre ich aber in Etappen nach oben, wird der Falschwinkel immer größer. Die Werte laufen auch ab 90° in den negativen Bereich, was sie ja auch sollen. Aber der Übergang von unter 90° nach über 90° ist schwer zu berechnen, da der Wert von Minus nach Plus springt und ich die Strecke damit nicht errechnen kann. Aber ich bin dran.
Bei Deinem Ring ist der Mittelpunkt immer gegeben aber bei hohen Objekten verändert sich die Entfernung extrem. Bei meinem System kann ich alles scannen. Auch weiter entfernte Objekte und die Größe spielt keine Rolle. Also Büsten Scanns gehen da auch wenn dann auch nur händisch. Versuche mal mit Deinem System einen Kopf zu scannen. Bei mir reicht ein Drehstuhl.
Title: Re: Winkelberechnung mit Arduino UNO
Post by: fridi on Jul 01, 2018, 03:16 pm
So, habe es jetzt hin bekommen. Bei den Winkeln muss ich noch ein paar Schritte kalibrieren, aber das ist einfach. Jetzt muss das Programm dringen aufgeräumt und dokumentiert werden, damit ich mich später noch zurecht finde. Jetzt ist alles noch frisch. Aber erst einmal den Besuch abarbeiten. Danke für die Gespräche, die mir letztendlich die richtigen Ideen gebracht haben.
Title: Re: Winkelberechnung mit Arduino UNO
Post by: P_Extruder on Jul 01, 2018, 06:15 pm
...
Bei Deinem Ring ist der Mittelpunkt immer gegeben aber bei hohen Objekten verändert sich die Entfernung extrem. ...Versuche mal mit Deinem System einen Kopf zu scannen...
Mein System hat den Vorteil, dass die Software schon vorhanden ist : https://1drv.ms/u/s!AhY4t4UjuOcbgesz2PPNVGwG8cE33w (https://1drv.ms/u/s!AhY4t4UjuOcbgesz2PPNVGwG8cE33w). Wenn man dieses Sensor-Gerät um 90° kippt, dann entspricht es schon fast dem was ich plane. Umsetzen müsste ich "nur" die Drehbewegung des Tellers in eine Kamerafahrt auf dem Bogen. Aber da der Bogen eigentlich belanglos ist genügt das Abfahren einer Strecke von ungefähr 7,5 Metern (Halbkreis bei 2,5 m Radius hoffe ich) . Für meine leider verreckte Casio wäre eine Option gewesen, sie auf bis zu 40 Bilder pro Sekunde einzustellen und dann die Kamera den Bogen in einer Sekunde befahren zu lassen.
___________________________________________________________________________________

Wie ich schon erwähnte hat der im Bau befindliche Bogen einen Radius von 2,5 m. Das ist zwar für ein Gesicht immer noch recht nah, aber schon weiter als vor einem Passbild-Automaten. Monsternasen kann  ich so wohl vermeiden.

Die Körperscanner von Agisoft-Profis haben auch etwas weniger Abstand. Dort sind übrigens dutzende Kameras fest um das Model installiert und werden gleichzeitig ausgelöst. Gibt ein YT-Video davon.

https://youtu.be/zb780hZMOdU (https://youtu.be/zb780hZMOdU) ist nicht ganz das was ich meine, die Richtung stimmt aber.
Title: Re: Winkelberechnung mit Arduino UNO
Post by: fridi on Jul 02, 2018, 05:05 pm
So, es ist vollbracht. Der Scanner läuft. Ich habe aber in den Einstellungen noch etwas geändert. Vorher musste ich dem Gerät sagen, wie groß das Scannobjekt ist. Nun brauch ich die Kamera nur noch rechtwinkelig auf das Objekt zu fahren, so dass der Bildschirm ausgefüllt ist. Dann die Entfernung und nun neu die Höhe der einzelnen Scann-Fahrten. Das Programm errechnet den Winkel der einzelnen Fahrten, produziert die vorher eingestellte Bildmenge und die Menge der Fahrten anhand der Größe des Objektes.
Nun kommt das Aufräumen des Programms und die Dokumentation. Da steckt noch eine guter Nachmittag Arbeit drin. Aber erst einmal spielen.
Title: Re: Winkelberechnung mit Arduino UNO
Post by: fridi on Jul 03, 2018, 05:49 pm
So, Software ist auch fertig. Alles nähere unter https://www.facebook.com/DasMonsterlebt/
Title: Re: Winkelberechnung mit Arduino UNO
Post by: P_Extruder on Aug 11, 2018, 02:04 am
Leider ist dieser Inhalt derzeit nicht verfügbar

Daran hat sich inzwischen was geändert und ich habe das Video gesehen. Man sieht auch, dass die Kamera hochgefahren wird, aber vom "Kippen der Kamera" (wie es auf dem Schaltpult heißt) ist nichts zu sehen. Sowohl das Display der Kamera wie auch die Kameraleuchte ändern ihren Winkel nie. Der Spot der Leuchte befindet sich am Ende denn auch deutlich oberhalb des Objektes. Der Drehteller dreht sich auch während der Aufnahme, was eigentlich der Bildschärfe nicht dienlich ist.

Nachtrag: inzwischen habe ich mir das Programm angesehen und konnte feststellen, dass sich weite Teile mit dem Kippen der Kamera befassen. Nur im Video ist davon nichts zu sehen.

Endlich habe ich auch begriffen, warum als Start die halbe Höhe des Objektes gewählt wurde. Im Video ist das Objekt ein Kegelstumpf, der mit dem größeren Querschnitt auf dem Drehteller steht. Würde er umgekehrt stehen oder würde eine Kugel verwendet, dann würde klar, dass die Kamera dann besser von unten nach oben fotografiert.

Das würde ich gerne im Video sehen ! Nebenbei : auf Facebook haben sich bisher 63 Leute das Video angeschaut und hier im Arduino-Forum hat der Thread schon weit über 2100 Views - da frage ich mich mal wieder, wozu Facebook überhaupt gut sein soll :-)