INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Werte im Display per Taster wechseln
26.01.2021, 17:01
Beitrag #1
Werte im Display per Taster wechseln
Hi Leute

Ich habe da mal eine Frage:
Ich habe mir da einen Sketch zusammengefummelt. Und ja...
Jemand der Ahnung hat würde sagen der ist mies Big Grin
Ich baue mir gerade eine Absaganlage für meine Werkstatt nach.

man betätigt einen Taster... dieser bringt ein Servo in eine Bestimmte Position und öffnet, bzw. schließt ein Gate. Alles Funktioniert. Ich dachte ich wäre fertig.

Jetzt bin ich auf die Pfiffige Idee gekommen ein Display einzubauen. Dieses Soll mir anzeigen welches Gate gerade geöffnet ist. Ich habe nichts im netz gefunden was mich weiter bringt. Und wenn doch.... hab ich es nicht kapiert.
Wäre echt cool wenn mich einer Helfen würde.

Hier mein Jetziger Sketch:

Code:
#include <Servo.h>
#include "U8glib.h" //Bibliothek für das Display
U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NONE); //erzeugen des Display Objektes

const int Knopf_CNC = 2; // Pushbutton Pin auf dem Board (2)
int Zustand_CNC = 0; // speichert den Zustand des Tasters
int old_Zustand_CNC = 0; // speichert den vorherigen wert von val
int Status_CNC = 0; // 0 = Servo Position eins 1 = Servo Position eins

const int Knopf_Schleifer = 3; // Pushbutton Pin auf dem Board (3)
int Zustand_Schleifer = 0; // speichert den Zustand des Tasters
int old_Zustand_Schleifer = 0; // speichert den vorherigen wert von val
int Status_Schleifer = 0; // 0 = Servo Position eins 0 = Servo Position zwei


const int Knopf_Saege = 4; // Pushbutton Pin auf dem Board (4)
int Zustand_Saege = 0; // speichert den Zustand des Tasters
int old_Zustand_Saege = 0; // speichert den vorherigen wert von val
int Status_Saege = 0; // 0 = Servo Position eins 0 = Servo Position zwei


const int Knopf_Handsauger = 5; // Pushbutton Pin auf dem Board (5)
int Zustand_Handsauger = 0; // speichert den Zustand des Tasters
int old_Zustand_Handsauger = 0; // speichert den vorherigen wert von val
int Status_Handsauger = 0; // 0 = Servo Position eins 0 = Servo Position zwei

  int Relais = 9;
  int Knopf_Relais = 6;
  boolean currentState = LOW;
  boolean lastState = LOW;
  boolean RelaisState = LOW;


Servo CNC;         // Define CNC servo
Servo Schleifer;         // Define Scheifer servo
Servo Saege;         // Define Säge servo
Servo Handsauger;         // Define Hansauger servo






void setup() {



  Serial.begin(9600);
  CNC.attach(10);  // Servo CNC an digital pin 8
  Schleifer.attach(11);  // Servo Schleifer an digital pin 9
  Saege.attach(12);  // Servo Schleifer an digital pin 10
  Handsauger.attach(13);  // Servo Schleifer an digital pin 11

  
  pinMode(Knopf_CNC,  INPUT_PULLUP);     // Taster CNC
  pinMode(Knopf_Schleifer,  INPUT_PULLUP);     // Taster Schleifer
  pinMode(Knopf_Saege,  INPUT_PULLUP);     // Taster Saege
  pinMode(Knopf_Handsauger,  INPUT_PULLUP);     // Taster Handsauger
  pinMode(Knopf_Relais, INPUT); //Taster Relais
  pinMode(Relais, OUTPUT);



}

void loop() {
  Zustand_CNC = digitalRead(Knopf_CNC);// liest den Input aus und cheked ob er gedrückt ist.
  if ((Zustand_CNC == LOW) && (old_Zustand_CNC == HIGH)) {   // HIER IST DIE ABFRAGE GEÄNDERT
    Status_CNC = 1 - Status_CNC;
  }

  old_Zustand_CNC = Zustand_CNC; // aktueller Zustand_CNC wird zu Zustand_CNC alt


  if (Status_CNC == 1) {

    Status_Schleifer = 0;
    Status_Saege = 0;
    Status_Handsauger = 0;

    CNC.write(180);
    
    Schleifer.write(0);
    Saege.write(0);
    Handsauger.write(0);

    delay(20); //Etwas Zeit für die Servobewegungen
  }




  Zustand_Schleifer = digitalRead(Knopf_Schleifer);// liest den Input aus und cheked ob er gedrückt ist.
  if ((Zustand_Schleifer == LOW) && (old_Zustand_Schleifer == HIGH)) {   // HIER IST DIE ABFRAGE GEÄNDERT
    Status_Schleifer = 1 - Status_Schleifer;
  }

  old_Zustand_Schleifer = Zustand_Schleifer; // aktueller Zustand_Schleifer wird zu Zustand_Schleifer alt


  if (Status_Schleifer == 1) {

    Status_CNC = 0;
    Status_Saege = 0;
    Status_Handsauger = 0;

    Schleifer.write(180);

    CNC.write(0);
    Saege.write(0);
    Handsauger.write(0);

    delay(20); //Etwas Zeit für die Servobewegungen
  }


Zustand_Saege = digitalRead(Knopf_Saege);// liest den Input aus und cheked ob er gedrückt ist.
  if ((Zustand_Saege == LOW) && (old_Zustand_Saege == HIGH)) {   // HIER IST DIE ABFRAGE GEÄNDERT
    Status_Saege = 1 - Status_Saege;
  }

  old_Zustand_Saege = Zustand_Saege; // aktueller Zustand_Schleifer wird zu Zustand_Schleifer alt


  if (Status_Saege == 1) {

    Status_CNC = 0;
    Status_Schleifer = 0;
    Status_Handsauger = 0;

    Saege.write(180);

    CNC.write(0);
    Schleifer.write(0);
    Handsauger.write(0);

    delay(20); //Etwas Zeit für die Servobewegungen
  }


Zustand_Handsauger = digitalRead(Knopf_Handsauger);// liest den Input aus und cheked ob er gedrückt ist.
  if ((Zustand_Handsauger == LOW) && (old_Zustand_Handsauger == HIGH)) {   // HIER IST DIE ABFRAGE GEÄNDERT
    Status_Handsauger = 1 - Status_Handsauger;
  }

  old_Zustand_Handsauger = Zustand_Handsauger; // aktueller Zustand_Schleifer wird zu Zustand_Schleifer alt


  if (Status_Handsauger == 1) {

    Status_CNC = 0;
    Status_Schleifer = 0;
    Status_Saege = 0;

    Handsauger.write(180);

    CNC.write(0);
    Schleifer.write(0);
    Saege.write(0);

    delay(20); //Etwas Zeit für die Servobewegungen
  }


  
currentState = digitalRead(Knopf_Relais);
  if (currentState == HIGH && lastState == LOW){
  delay(3);
  if (RelaisState == HIGH){

    
  digitalWrite(Relais, LOW);
  RelaisState = LOW;}
  else {digitalWrite(Relais, HIGH);RelaisState = HIGH;}}
  lastState = currentState;

  

}


Schonmal Jetzt vielen Dank an jeden der sich das mal ansieht. Ich habe keine Ahnung wie ich vorgehe um das Display da einzubauen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
26.01.2021, 17:07
Beitrag #2
RE: Werte im Display per Taster wechseln
Bitte mal besser beschreiben.
Was für eine Absageanlage und was meinst du mit Gate ?

Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
26.01.2021, 17:14
Beitrag #3
RE: Werte im Display per Taster wechseln
Hast Du denn Dein Display schon mal allein in einem eigenen Sketch zum Laufen bekommen? Wenn nein, dann versuche das erst mal.

Bist Du sicher, dass diese Zeile richtig ist?
Code:
U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NONE); //erzeugen des Display Objektes
Die U8G-Lib ist veraltet und wird nicht mehr weiter entwickelt. Es gibt die U8G2 vom gleichen Autor.
Evtl. wäre auch die U8x8 für Dich sinnvoll, wenn Du nur Text brauchst.

Gib uns mal einen Link zu Deinem Display.

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
26.01.2021, 17:22
Beitrag #4
RE: Werte im Display per Taster wechseln
(26.01.2021 17:07)hotsystems schrieb:  Bitte mal besser beschreiben.
Was für eine Absageanlage und was meinst du mit Gate ?

Ich meine natürlich Absa"u"ganalage. Sie Funktioniert wie folgt:
Ich drücke Taster 1. und Schlauch 1 fängt an zu saugen.
Ich drücke Taster 2 und Schlauf 2 fängt an zu saugen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
26.01.2021, 17:25
Beitrag #5
RE: Werte im Display per Taster wechseln
(26.01.2021 17:14)Tommy56 schrieb:  Hast Du denn Dein Display schon mal allein in einem eigenen Sketch zum Laufen bekommen? Wenn nein, dann versuche das erst mal.

Bist Du sicher, dass diese Zeile richtig ist?
Code:
U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NONE); //erzeugen des Display Objektes
Die U8G-Lib ist veraltet und wird nicht mehr weiter entwickelt. Es gibt die U8G2 vom gleichen Autor.
Evtl. wäre auch die U8x8 für Dich sinnvoll, wenn Du nur Text brauchst.

Gib uns mal einen Link zu Deinem Display.

Gruß Tommy

Dieses Display Habe ich:

https://funduino.de/nr-42-oled-display-s...x64-128x32

Das Display hatte ich bereits mit Beispielcodes zu laufen bekommen. Das war es aber auch schon. Habe Text ausgeben können. Aber ich verstehe einfach nicht wie ich den Text nach Betätigung des Tasters ändere
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
26.01.2021, 17:34
Beitrag #6
RE: Werte im Display per Taster wechseln
(26.01.2021 17:25)bmxruler schrieb:  Das Display hatte ich bereits mit Beispielcodes zu laufen bekommen.

Ok, das ist doch eine Basis. Mal einen Ansatz zum Anfangen
Code:
char text[15]; // Länge längster Text + 1

// im Loop
  if (Status_CNC == 1) {
    strcpy(text,"CNC"); // anzuzeigender Text, bei den anderen entsprechend
  ....

// Am Ende vom Loop
// dann diesen Text ausgeben, evtl. vorher clear
}

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
26.01.2021, 18:32
Beitrag #7
RE: Werte im Display per Taster wechseln
(26.01.2021 17:34)Tommy56 schrieb:  
(26.01.2021 17:25)bmxruler schrieb:  Das Display hatte ich bereits mit Beispielcodes zu laufen bekommen.

Ok, das ist doch eine Basis. Mal einen Ansatz zum Anfangen
Code:
char text[15]; // Länge längster Text + 1

// im Loop
  if (Status_CNC == 1) {
    strcpy(text,"CNC"); // anzuzeigender Text, bei den anderen entsprechend
  ....

// Am Ende vom Loop
// dann diesen Text ausgeben, evtl. vorher clear
}

Gruß Tommy

Hey Danke für den Tipp. Hat Prima funtioniert. Mir fehlte da einfach der Denkanstoß. Mir war nicht klar das ich so zeug einfach in das If reinschreiben kann.

Vielen Dank... du hast mir echt weitergeholfen. ... mal sehen wo ich als nächstes kleben bleibe Big Grin
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
26.01.2021, 18:45
Beitrag #8
RE: Werte im Display per Taster wechseln
Du kannst auch direkt die Ausgabe des Textes ins if rein nehmen, als eine weitere Möglichkeit.

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Werte von IR-Abstandssensor glätten Tonio 15 683 29.03.2021 07:54
Letzter Beitrag: SpaghettiCode
  Laserwert auf OLED Display ausgeben Blauepi 18 851 22.03.2021 14:00
Letzter Beitrag: Blauepi
  Arduino Ampelschaltung Taster funktioniert nicht fatihakan36 9 655 13.03.2021 22:06
Letzter Beitrag: N1d45
  TFT-LCD-Display (Extension) phg 3 404 13.03.2021 19:26
Letzter Beitrag: Tommy56
  Zähler mit Taster und Serial Monitor LK2567 16 1.117 16.02.2021 22:37
Letzter Beitrag: Bitklopfer
  char return Werte sind komplett falsch flowmotion 8 795 12.02.2021 22:27
Letzter Beitrag: Tommy56
  SH1107 Oled Display und Multiplexer Feuchtigkeitssteuerung Kanka 35 2.073 06.02.2021 22:38
Letzter Beitrag: Kanka
  Kompiler beschwert sich nicht, LC-Display macht aber nicht, was es soll. generic_user492 3 402 26.01.2021 14:11
Letzter Beitrag: MicroBahner
  2,3" monochorme 128x32 Display Thor Wallhall 39 1.660 26.12.2020 16:42
Letzter Beitrag: Tommy56
  Float Werte im EEPROM speichern Kein Progammierer 10 1.019 22.12.2020 21:20
Letzter Beitrag: Tommy56

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste