Forum: Projekte & Code Taschenrechner mit Touchscrenn und Serieller Eingabe auf Arduino Uno gequetscht


von Andreas T. (andreas_t210)


Angehängte Dateien:

Lesenswert?

Features des Codes
1. Touchscreen-Bedienung

    5x5 Tastenfeld auf 3,5" TFT mit MCUFriend
    (Zahlen, Operatoren, Funktionen, Klammern, Löschen usw.)
    Große Tastenflächen und klare Labels für einfaches Tippen
    Jede Taste reagiert direkt auf Berührung

2. Serieller Modus (USB/Serial Monitor)

    Rechnen per Serial Monitor (z.B. Arduino IDE → Werkzeuge → Serieller 
Monitor)
    Komplette Rechnungen eingeben (12+34/2, sqrt(16)+2, 1/0)
    Auch Operatoren-Fortsetzung:
    Wenn ein Ergebnis im Display steht, reicht z.B. /2, um mit diesem 
Wert weiterzurechnen
    (Anzeige: 20, Serial: /2 → Anzeige: 10)

3. Autokorrektur von Eingaben

    Automatische Korrektur typischer Syntaxfehler und unvollständiger 
Eingaben:
        Komma wird zu Punkt (1,5 → 1.5)
        Doppelte Operatoren werden entfernt (1++2 → 1+2)
        Operatoren direkt nach ( werden entfernt ((+)5 → (5))
        Leere Klammern entfernt (() → entfernt)
        Zahlen direkt vor einer Klammer (2(3+4)) → 
Multiplikationszeichen eingefügt (2*(3+4))
        Klammer gefolgt von Zahl ((2)3 → (2)*3)
        Fehlende schließende Klammern werden ergänzt
        Ausdruck ohne Zahl (++--((()))) wird zu "0"
        Leere Eingabe wird zu "0"
        End-Operatoren werden entfernt (2+3+ → 2+3)
        Doppelte Plus/Minus am Anfang werden reduziert (--4 → 4)
    Ergebnis:
    Sehr viel weniger „ERR“ – Eingaben werden wie bei modernen Rechnern 
interpretiert

4. Mathematik-Parser

    Eigener Parser für Ausdrücke mit Klammern, Punkt-vor-Strich, mehrere 
Operatoren
    Operatoren: +, -, *, /, %
    Klammern beliebig verschachtelt
    Funktionen:
        sqrt(…) (Wurzel)
        sq(…) (Quadrat)
        inv(…) (Kehrwert, 1/x)
    Direkte Quadrat-/Wurzel-Taste am Touchscreen (x^2, sqrt, 1/x)

5. Komfortables Fehlerhandling

    Division durch Null, zu große/kleine Ergebnisse, Stacküberlauf → 
Anzeige „ERR“
    Nach „ERR“ kann weitergerechnet werden (Touch oder Serial, keine 
Blockade mehr)
    **„C“ löscht alles und setzt auf „0“ zurück
    Watchdog-Timer (2s):
    Sollte dennoch ein Fehler im Code (Endlosschleife, Stacküberlauf) 
passieren, startet das System automatisch neu

6. Ergebnisformatierung

    Ganze Zahlen werden als Integer angezeigt (ohne .0)
    Kommazahlen werden ohne unnötige Nullen ausgegeben
    Sehr große Zahlen (Überlauf) führen zu „ERR“

7. Synchronisierte Anzeige

    Egal ob über Touch oder Serial gerechnet wird:
    Das Ergebnis ist immer sofort auf dem Display und im Serial Monitor 
sichtbar

8. Zusätzliche Komfortfunktionen

    Löschen einzelner Zeichen („<-“)
    Vorzeichen umschalten („+/-“)
    Prozent-Umrechnung
    Automatisches Weiterrechnen nach Touch oder Serial

9. Speichersicher, stabil und absturzfest

    Alle Array-Kopien und -Längen werden korrekt geprüft (Buffer 
Overflow-Schutz)
    Eingabegrößen (Touch und Serial) sind begrenzt (INPUT_MAX)
    Alle Stackoperationen geprüft:
    Tiefe Klammerausdrücke führen zu „ERR“, nicht zum Absturz

10. Benutzerfreundlichkeit

    Fehlerkorrektur statt Fehlermeldung
    Keine Angst mehr vor Syntaxfehlern
    Funktioniert wie ein smarter Taschenrechner am Smartphone

Funktioniert mit Touchscreen(3.5 TFT Lcd Shield, kalibrieren nicht 
vergessen) oder Seriel (115200 baud)

von Manfred P. (pruckelfred)


Lesenswert?

Andreas T. schrieb:
> 5x5 Tastenfeld auf 3,5" TFT mit MCUFriend

Bilder?

von Michael B. (laberkopp)


Lesenswert?

Andreas T. schrieb:
> Features

Schön, aber:

Es ist kein Taschenrechner so lange man float verwendet.

Taschenrechner rechnen dezimal mit guard-Ziffern (meist 3 mehr als 
angezeigt) und nutzen andere Algorithmen für transzendente Funktionen, 
meist Cordic.

Damit (1/3)*3 wieder 1 wird, arcsin(sin(0.5)) wieder 0.5.

von Mi N. (msx)


Lesenswert?

Michael B. schrieb:
> Es ist kein Taschenrechner so lange man float verwendet.

Es ist ein Taschenrechner, wenn er in eine Tasche passt.
Wenn DIR etwas nicht passt, dann ergänze es doch, anstatt darauf zu 
pochen, daß in einem Kopp zwangsläufig auch ein Inhalt steckt.

von Hannes J. (Firma: _⌨_) (pnuebergang)


Lesenswert?

Gequetscht? Bitte was? Kleiner Realitätscheck:

Der klassische TI-30 lief mit 2K ROM (9 Bit Breite) und 576 Bits RAM 
http://www.datamath.org/Chips/TMC0980.htm Funktionen ähnlich dem was du 
geschrieben hast, nur mit richtigem internen Taschenrechner-Zahlenformat 
und ohne Parser.

Der HP28C, ein Meilenstein bei den technisch-wissenschaftlichen 
Taschenrechnern, hatte 64KB ROM 
http://mycalcdb.free.fr/main.php?l=0&id=831

In diesen 64KB ROM war ein Taschenrechner auf Speed:

Unter anderem programmierbar und mit symbolischem und numerischem 
Solver, einem Satz von eingebauten Funktionen die in einem 400+ Seiten 
Handbuch dokumentiert waren, diverse Zahlensysteme, Matrixfunktionen, 
Differenzieren, Integrieren, Rechnen mit komplexen Zahlen, 
Plotfunktionen, Statistikfunktionen, und, und, und. Ach ja, und eine 
Katalog von 120 Einheiten inklusive Symbolen die man in Rechnungen 
verwenden konnte und Umrechnungsfunktionen. SI Prefixe, einschließlich 
allem was man in der E-Technik braucht, wurden dabei auch verstanden.

Das war gequetscht. Aber wirklich gequetscht. Ach ja, und das war im 
Jahr 1987.

von Wastl (hartundweichware)


Lesenswert?

Andreas T. schrieb:
> Funktioniert mit Touchscreen(3.5 TFT Lcd Shield,

Ach das! Da es ja nur ein 3.5" TFT Shield gibt ist ja alles
klar. Manche Leute würden es dennoch genauer wissen wollen.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.