Infocenter Jetski

Hallo zusammen,

Ich möchte mich kurz vorstellen:
Mein Name ist Patrick, komme aus NRW, bin 35 Jahre alt und KFZ-Techniker-Meister.
Meine Programmierkenntnisse sind nicht sehr fortgeschritten, ich beschäftige mich seit einigen Jahren mit
3D Druck und nun seit einigen Tagen damit, ein neues Kombiinstrument für meinen Jetski zu bauen weil das alte abgesoffen ist.

Mit dem Sketch bin ich nun soweit, dass es so läuft, wie ich es mir vorstelle, als nächstes muss ich die
richtigen Variablen am Jetski messen und noch eintragen.
Ich würde mich freuen, wenn mal jemand drüber gucken mag, ob da so passt oder ob es sehr schlecht umgesetzt ist weil das Meiste aus copy and paste aus verschiedenen Programmen besteht.

Bitte steinigt mich nicht gleich wenn es sehr unordentlich ist.

GSXgauge.txt (12.1 KB)

Hi

Nach Genfer Konvention hatten wir uns hier auf Teeren und Federn geeinigt - hoffe, Das geht klar?
Was mir gerade auffiel - buttonPushCounter hast Du als INT deklariert - rechnest Du mit negativen Tastendrücken?
Also, zählst Du auch runter?

//Tankanzeige
int Tanksensor = A0; ->const byte, der Pin ist positiv und ändert sich nicht mehr
int fuellstand = 0; negativer Tankinhalt möglich? -->unsigned
int sensorwert;

pinMode(Tachosignal, INPUT);
digitalWrite(Tachosignal, HIGH); --> entspricht INPUT_PULLUP, digitalWrite auf einen INPUT schaltet den PullUP

Das Abschalten/Zuschalten des Interrupt INNERHALB der ISR-Routiene sollte nicht nötig sein.

Variablen, Die Du INNERHALB UND AUSSERHALB der ISR-Routiene benutzt, müssen VOLATILE deklariert werden.
Auch muß der Zugriff auf Diese ATOMAR erfolgen - ein Byte KANN nur 'am Stück' eingelesen werden - Alles, was größer ist lebt in der Gefahr, daß BEIM AUSLESEN der Interrupt dazwischen funkt.

Du benutzt sehr viele INT - wenn Du den Zahlenbereich nicht benötigst, würde ich auf andere Typen umsteigen.
Keine negativen Zahlen? Dann einen UNSIGNED Typ - netter Nebeneffekt: Du hast den doppelten Platz 'nach Oben'.

Denke, bin durch - was Du mit den Interrupts machst, habe ich noch nicht durchblickt.

MfG

warum hast nur die halben Pins const definiert?
Nochmal jede int Variable überprüfen ob es ein int sein muss oder nicht vieleicht eine Einbyte Variable auch reicht
F-Makro nutzen für Fixtexte ala lcd.print(F("Geschwindigkeit"));
Leerzeilen entfernen wo keine benötigt wird.
Interupts in einem Sketch mit delay(42) finde ich generell, sagen wir mal "eigenartig"...
apropos eigenartig, Kommentare ala
// selbstredend
sind sinnarm.
Zu deinen Variablen:
-Mix von englischen und deutschen Variablennamen - grauslich.
-Mix von GROSSBUCHSTABEN, camelCase, Under_Score, startMitKlein, AnfangGroß ... - bunt gewürfelt. Einig dich auf eine Schreibweise

postmaster-ino:
Nach Genfer Konvention hatten wir uns hier auf Teeren und Federn geeinigt - hoffe, Das geht klar?
Was mir gerade auffiel - buttonPushCounter hast Du als INT deklariert - rechnest Du mit negativen Tastendrücken?
Also, zählst Du auch runter?

Teeren und Federn ist mir sogar lieber...

Ja, ich zähle auch runter, da ich zwei Taster am Jetski habe

lg

noiasca:
warum hast nur die halben Pins const definiert?
Nochmal jede int Variable überprüfen ob es ein int sein muss oder nicht vieleicht eine Einbyte Variable auch reicht
F-Makro nutzen für Fixtexte ala lcd.print(F("Geschwindigkeit"));
Leerzeilen entfernen wo keine benötigt wird.
Interupts in einem Sketch mit delay(42) finde ich generell, sagen wir mal "eigenartig"...
apropos eigenartig, Kommentare ala
// selbstredend
sind sinnarm.

Die Komentare sind grösstenteils nicht vom mir, wie gesagt, copy and paste und dann so
lange gebastelt bis es irgendwie funktioniert...
lg

Hi

Mit Runterzählen war gemeint, ob Du auch ins Negative runter zählst.
Wenn ich Deinen Sketch richtig interpretiere, ist Das eine Art Menü-Auswahl - von 0 bis 6 (oder so).
Da braucht's kein INT, dafür reicht BYTE (0...255).

MfG

Petroleum321:
Die Komentare sind grösstenteils nicht vom mir, wie gesagt, copy and paste und dann so
lange gebastelt bis es irgendwie funktioniert...
lg

Du hast nach Feedback gefragt, daher bekommst du es.
Du brauchst keine Entschuldigung abgeben warum etwas so ist wie es ist.
Mit der Übernahme der Sachen in deinen Code, ist es nun dein Monster für das du voll unfänglich verwantwortlich bist.

Arbeite es durch und stelle eine verbesserte Version ein.

Egal ob rauf oder runter, :wink: wenn du mehr User an der Diskussion teilnehmen lassen möchtest, solltest du deinen Sketch hier in Code-Tags posten.
Verwende dazu die Schaltfläche </> oben links im Editorfenster.

Hi

Ich sehe wenig Hoffnung, daß der TO in dem Sketch 3000 Zeichen einsparen kann.
Unnötige Leerzeilen - machen aber wohl nur wenige Bytes.
Sinnlose Kommentare (uns ist durchaus klar, was MAP macht) - das 'selbsterklärend' kam mir noch nicht unter - könnte aber - da ja eh selbsterklärend - auch weg.

Hätte Da die Menü-Struktur statt einen Haufen IF->WHILE mit switch gemacht - ob's kürzer geworden wäre?

MfG

Wenn der Sketch zu viele Zeichen hat, kann man den wie schon beschrieben, optimieren und evtl. auch noch aufteilen.

Das muss der TO nur wollen und machen.