Go Down

Topic: Anfänger, neu im Forum  (Read 4994 times) previous topic - next topic

Alfaone79

Wie sähe ein Sketch mit der Zusammenfassung mehrerer Sketch aus?

Tommy56

Da gibt es kein allgemeines Beispiel. Der sähe wie ein normaler Sketch aus, nur umfangreicher.

Gruß Tommy
"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)

HotSystems

Oder du baust dir eine Menüstruktur auf, wo du entsprechend deine Funktion auswählst.
Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. 8)

Alfaone79

Ein Beispiel für eine Menü Steuerung habe ich gefunden, leider weiß ich nicht wie ich meine Sketche dort einbinden kann

HotSystems

Ein Beispiel für eine Menü Steuerung habe ich gefunden, leider weiß ich nicht wie ich meine Sketche dort einbinden kann
Wenn da keine Beschreibung bei ist, dann vergiss es.

Nimm besser dieses hier, das ist sehr gut beschrieben.
Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. 8)

Alfaone79

Ahhh, ok, das werde ich mal ausprobieren

Alfaone79

Hm......
Um Nochmal zurück auf den Sketch, mit den drei Tastern zurück zu kommen...
Wie wäre denn da der beste Ansatz um dieses Projekt zu realisieren?

agmue

#37
Oct 08, 2018, 01:03 pm Last Edit: Oct 08, 2018, 08:25 pm by agmue
1. Ich möchte mit drei Tastern und einem OLED SSD1327 Display verschiedene Zeichen anzeigen lassen. Z.b. Taster 1 und Taster 2 zugleich gedrückt „N", Taster 3 gedrückt „2", Taster 2 und Taster 3 gedrückt „5" usw.
Ich habe die kleinere Variante SSD1306 128X64, macht aber sonst keinen Unterschied. Als Ausgangspunkt für weitere Überlegungen:

Code: [Select]
#include <SPI.h>
#include <Wire.h>
#include "U8g2lib.h"

U8G2_SSD1306_128X64_NONAME_1_HW_I2C oled(U8G2_R0);

const byte T1 = 2;
const byte T2 = 3;
const byte T3 = 4;
bool t1, t2, t3;
char buf[] = "X";

void setup() {
  pinMode(T1, INPUT_PULLUP);
  pinMode(T2, INPUT_PULLUP);
  pinMode(T3, INPUT_PULLUP);

  oled.begin();

  ausgabe(buf);
}

void loop() {
  t1 = !digitalRead(T1);
  t2 = !digitalRead(T2);
  t3 = !digitalRead(T3);
  if (t1 && t2 && !t3) {
    buf[0] = 'N';
  }
  if (!t1 && !t2 && t3) {
    buf[0] = '2';
  }
  if (!t1 && t2 && t3) {
    buf[0] = '5';
  }
  ausgabe(buf);
}

void ausgabe(char * text) {
  static char vergleich[] = " ";
  if (0 != strncmp ( vergleich, text, 1 )) {
    strncpy ( vergleich, text, 1 );
    oled.firstPage();
    do {
      oled.setFont(u8g2_font_6x12_tr);
      oled.drawStr(0, 22, "Anzeige");
      oled.setFont(u8g2_font_profont29_tr);
      oled.drawStr(55, 35, text);
    } while ( oled.nextPage() );
  }
}
Die Vorstellungskraft ist wichtiger als Wissen, denn Wissen ist begrenzt. (Albert Einstein)

Alfaone79

Hallo agmue,
Ich habe den Sketch ausprobiert, ein wenig umgeändert, so schon wie ich es mir erhofft hatte.
Leider springen die Zahlen willkürlich durcheinander und reagieren nicht auf die Taster.

Code: [Select]
#include <SPI.h>
#include <Wire.h>
#include "U8g2lib.h"

U8G2_SSD1327_EA_W128128_1_HW_I2C u8g2(U8G2_R0, /* reset=*/ U8X8_PIN_NONE);

const byte T1 = 2;
const byte T2 = 3;
const byte T3 = 4;
bool t1, t2, t3;
char buf[] = "X";

void setup() {
  pinMode(T1, INPUT);
  pinMode(T2, INPUT);
  pinMode(T3, INPUT);

  u8g2.begin();

  ausgabe(buf);
}

void loop() {
  t1 = !digitalRead(T1);
  t2 = !digitalRead(T2);
  t3 = !digitalRead(T3);
  if (t1 && t2 && !t3) {
    buf[0] = 'N';
  }
  if (!t1 && !t2 && t3) {
    buf[0] = '2';
  }
  if (!t1 && t2 && t3) {
    buf[0] = '5';
  }
  ausgabe(buf);
}

void ausgabe(char * text) {
  static char vergleich[] = " ";
  if (0 != strncmp ( vergleich, text, 1 )) {
    strncpy ( vergleich, text, 1 );
    u8g2.firstPage();
    do {
      u8g2.setFont(u8g2_font_6x12_tr);
      u8g2.drawStr(0, 22, "Anzeige");
      u8g2.setFont(u8g2_font_logisoso58_tf);
      u8g2.drawStr(47, 75, text);
    } while ( u8g2.nextPage() );
  }
}

Alfaone79

@ HotSystems
dnake für den link, doch erstens braucht man in diesem Sketch min. 3 Taster und wenn ich ihn auf mein Arduino UNO holaden möchte, sagt er mir das der Speicher zu gering ist

agmue

Spielen wir mal Jeopardy: Warum habe ich INPUT_PULLUP verwendet?
Die Vorstellungskraft ist wichtiger als Wissen, denn Wissen ist begrenzt. (Albert Einstein)

HotSystems

@ HotSystems
dnake für den link, doch erstens braucht man in diesem Sketch min. 3 Taster und wenn ich ihn auf mein Arduino UNO holaden möchte, sagt er mir das der Speicher zu gering ist
Wenn man es richtig macht, passt der Sketch problemlos auf den Uno und noch weiteres.

Allerdings kann es bei machen Display-Libraries Probleme geben.
Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. 8)

Alfaone79

Hi agmue,
habe es nun hin bekommen,
hatte keine Widerstände eimgebaut :smiley-yell:
jetzt funktioniert es fast genau so wie ich es haben wollte.
Aber nur fast, während eines umschalt Vorgangs, wechselt die Anzeige immer noch kurz hin und her.
kann man da mit "delay" etwas ändern?

was das INPUT_PULLUP bedeutet weiß ich leider nicht, würde mich aber sehr Interessieren.

Alfaone79

@HotSystems
gibt es da nicht eine einfachere Lösung?
ich bräuchte nur 5 Menü punkte ohne Untermenüs
welches mit einem Taster zu bedienen wäre

agmue

#44
Oct 09, 2018, 01:30 pm Last Edit: Oct 09, 2018, 01:37 pm by agmue
was das INPUT_PULLUP bedeutet weiß ich leider nicht, würde mich aber sehr Interessieren.
Das sind interne zuschaltbare PullUp-Widerstände, bei Digital Pins näher beschrieben. Da ich faul bin, nehme ich immer die, nur dreht sich die Logik, gedrückt ist LOW, was ich mit einem Ausrufezeichen vor digitalRead ausgleiche.

Aber nur fast, während eines umschalt Vorgangs, wechselt die Anzeige immer noch kurz hin und her.
kann man da mit "delay" etwas ändern?
Wenn Du die Augen schließt, weil Du die Probleme der Welt nicht sehen möchtest, dann funktioniert das, wenn Du auf einer Bank sitzt. Wenn Du aber mit dem Rad fährst, kann das in der Hecke enden.

Wenn ich aber "delay" als Verzögerung zur Stabilisierung der Eingänge verstehe, realisiert mit "millis", dann ja.

@HotSystems
gibt es da nicht eine einfachere Lösung?
ich bräuchte nur 5 Menü punkte ohne Untermenüs
welches mit einem Taster zu bedienen wäre
Selber schreiben.


Quelle aus dem Thema HILFE !!! Cocktailmaschine mit Arduino Uno.
Die Vorstellungskraft ist wichtiger als Wissen, denn Wissen ist begrenzt. (Albert Einstein)

Go Up