- fchao-Sinus-Wechselrichter AliExpress         
Ergebnis 1 bis 7 von 7

Thema: rechnen mit dem Arduino

  1. #1
    Unregistriert
    Gast

    rechnen mit dem Arduino

    Anzeige

    Praxistest und DIY Projekte
    Hallo,

    ich bin sehr neu in dieser Thematik und möchte gerne wissen, ob man mit der Programmiersprache für den Arduino auch rechnen kann; wie z.b. quadrieren, Wurzel ziehen, sin, cos? Ziel: ich möchte aus der Info von Winkeln und Längen eines Armes mit 3 Gelenken eine Position ausrechnen!!

    Wenn ja, wo kann ich dazu eine Anleitung finden?

    mfG und Dank

  2. #2
    Neuer Benutzer Öfters hier
    Registriert seit
    11.10.2013
    Beiträge
    11
    Servus,
    von Hause aus kann das 'C' nicht, aber 'C' ist mächtig genug um solche Berechnungen zu implementieren.
    Doch das muss man nach über 40 Jahre nicht mehr selber machen, sondern benützt die Standard Bibliothek <math.h>.
    Arduino nimmt dir auch das noch ab und du kannst die mathematischen und trigonometrischen Funktion einfach verwenden.

    In der Arduino Referenz solltest du alles finden: https://www.arduino.cc/en/Reference/HomePage
    pow(), sqrt(), sin(), cos()....

  3. #3
    Unregistriert
    Gast
    Prima, Herzlichen Dank!

    vG

  4. #4
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    8.652
    .. möchte gerne wissen, ob man mit der Programmiersprache für den Arduino auch rechnen kann; wie z.b. quadrieren, Wurzel ziehen, sin, cos? ..
    Können ist die eine Seite, Laufzeit die andere.

    Algebraische Funktionen (z.B. Wurzel) und besondes transzendente Funktionen (Beispiel trigonometrische und Arcusfunktionen) sind sehr rechenzeitintensiv. Ich hatte mich (zusammen mit einem Kollegen) mal bei der Arcusberechnung auf Mikrocontrollern mit diesem Gebiet auseinandergesetzt und einige Beispiele durchgerechnet. Dabei fanden wir, dass Näherungsfunktionen - !!KEINE Tabellen!! - bis zu fünfzig Prozent der Zeit einsparen können - und einiges an Länge des zugehörigen Maschinencodes. Beispiel siehe hier (klick).

    Fazit: Wenns zeitlich keinerlei Rolle spielt (das gilt m.E. keinesfalls bei Roboterarmen - wo noch dazu meherere Gelenke mit entsprechend aufwendigen Rechnungen behandelt werden müssen) dann macht das alles kein Problem. Andernfalls KÖNNTEN vorberechnete Tabellen eine Behelfslösung sein. In prähistorischen Zeiten der Mikrorechner (z.B. Z80 mit 2 .. 4 MHz) hatte ich diese Rechnungen in einen Rechenknecht (sprich externer Arithmetikprozessor) ausgelagert, aber das ist eine ganz andere Baustelle.
    Ciao sagt der JoeamBerg

  5. #5
    HaWe
    Gast
    Arduinos sind nicht nur AVRs, Arduinos sind auch ARMs, und die haben alle Geschwindigkeit der Welt für sowas.
    ich habe aber auch mit meinen ganzen AVRs (Nanos, Megas) noch nie Rechenzeit-Probleme gehabt.
    Hier ist ein speed Test u.a. auch für Int und Float Arithmetik auf allen möglichen Plattformen, u.a. auch Arduino megas und Dues:

    http://www.mindstormsforum.de/viewto...p=64772#p64772

    Code:
    HaWe brickbench © test (time: ms)     Arduino         Arduino         Arduino     PJRC Teensy   Raspberry Pi   
    Typ, OS, FW, PL, API                  Mega2560          Due             Zero          3.1     B+(2B)/Raspbian 
    MCU, cpu-Takt                        AVR/16MHz      ARM M3/84Mhz    ARM M0/48MHz  ARM M4/72MHz   800-1000MHz
    Firmware/vers.,Pr.Lang.            IDE 1.6x C++     IDE 1.6x C++    IDE 1.6x C++  IDE 1.6x C++  gnu C++, Geany 
    LCD / TFT (true color)             ILI9225 UTFT    ILI9341_due   (Adafr.ILI9340)  ILI9327 NC    HDMI,full-HD
    screen size tested                    240*176         320*240         320*240       320*240       1080*620
    ==============================================================================================================
     0 100000 integer add/subtr                129            8              15            5             1
     1 52000 integer multiply/division        1219            7             102            5             3
     2 5000 float operations                   326          107             397           92         (2)-13
     3 Mersenne Tw. PRNG (&,^,>>,<<)           313            7              36            4             2
    --------------------------------------------------------------------------------------------------------------
     4 matrix algebra (prod/determ.)           244           23              92           19             1
     5 int array sort [500]                   1366          171             379          110        (46)-88
    Code:
    float test_float_math() {
       float s = PI;
       int y;
    
       for (y = 0; y < 1000; ++y) {
          s *= sqrt(s);
          s = sin(s);
          s = exp(s);
          s *= s;
       }
       return s;
    }
    5x float-ops in dieser loop, die dann 1000x,
    also 5000 float operations
    in 326 ms auf dem Mega,
    und 107 ms auf dem Due...: na und ?

    in oberallgeiers prähistorischer Zeit war das vlt mal anders... :-/

  6. #6
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    27.08.2013
    Ort
    Region Basel
    Alter
    66
    Beiträge
    2.435
    Hallo HaWe.
    Zitat Zitat von HaWe Beitrag anzeigen
    5x float-ops in dieser loop, die dann 1000x,
    also 5000 float operations
    in 326 ms auf dem Mega,
    und 107 ms auf dem Due...: na und ?

    in oberallgeiers prähistorischer Zeit war das vlt mal anders... :-/
    Was sich nicht geändert hat ist, dass ein FPU etwa 100x schneller ist als eine Emulation.

    MfG Peter(TOO)
    Manchmal frage ich mich, wieso meine Generation Geräte ohne Simulation entwickeln konnte?

  7. #7
    HaWe
    Gast
    aja, aber was soll das?
    hast du nen Arduino mit FPU ?
    nein.
    Und wenn ich mit komplexen Zahlen rechnen oder Matrizen-Inverse oder FFTs rechnen muss, geh ich halt auf nen Teensy oder nen Raspi oder nen BBB!
    Bevor ich anfange, für Sinus, Cosinus, atan2 und e^x mit look-up Tabellen zu arbeiten - nee danke.

    Aber auch ohne FPU sind sie schnell genug, zumindest für Ottonormalverbraucher (siehe Benchmarks) -
    und natürlich ganz besonders dann, wenn sich ein Anfänger überlegt, ob man "überhaupt" damit "rechnen" könne...
    Und nochwas:
    WENN Arduinos durch irgendwas ausgebremst werden, dann nur dadurch, dass sie besch****n lahme Displays haben (wie mit UTFT libs) und wenn sie kein Multitasking haben, um die langsamen Sachen nebenher zu erledigen, damit die schnellen in ihren eigenen Tasks ungebremst sind.

    AVRs aber halte ich sowieso für Schnee von gestern.
    max. 8kB RAM, lachhaft, und dann noch die veralteten 5V-Signal-Level, die alle neuen Geräte kaputt machen ohne Levelshifter... was ein Umstand!

    Arduino-DUE-Klone (M3) gibts schon für 13 EUR, und nen Original (!!) Arduino-Zero M0 habe ich mir gerade für 20 EUR bestellt.
    Das ist eher der neue Standard.

    Die Raspi quadcores sind dann eher für anspruchsvolle Dinge, samt FPU.

Ähnliche Themen

  1. Mit dem asuro rechnen ????
    Von EIK im Forum Asuro
    Antworten: 7
    Letzter Beitrag: 12.06.2012, 11:14
  2. Rechnen mit Gleitkommazahlen
    Von daniel.weber im Forum C - Programmierung (GCC u.a.)
    Antworten: 20
    Letzter Beitrag: 09.05.2011, 14:38
  3. Rechnen Problem
    Von Movie85 im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 2
    Letzter Beitrag: 11.08.2008, 21:08
  4. Effizienter Rechnen?
    Von BASTIUniversal im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 7
    Letzter Beitrag: 02.01.2008, 17:54
  5. Zinsaufgabe rechnen (mit dem Boe-Bot)
    Von butt-bot im Forum Software, Algorithmen und KI
    Antworten: 4
    Letzter Beitrag: 28.03.2007, 21:14

Benutzer, die dieses Thema gelesen haben: 0

Derzeit gibt es keine Benutzer zum Anzeigen.

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

LiFePO4 Speicher Test