Display hinzufügen Status an oder aus

Hello, I'm a 2-Tasters Sketch sends a RS485 command to a on or out a Roller.Wie kann ich ein Display 1306 integrieren, das zb ist, wenn es in-the-the-the-the-the-the-the-the-the-the-the-the-the-the-the-the-the-the-the-the-the-the-the-the-the-the-the-the-the-the-the-the-the-the-the-the-the-the-the-the-the-the-the-the-the-the-the-the-the-the-the-the-the-the-the-the-the-the-the-the-the-the-the-the-the-the-the-the-the-the-the-RHallo, ich habe einen Sketch mit 2 Tasten, die einen RS485-Befehl habenHallo, ich habe einen Sketch mit 2 Tasten, der einen RS485-Befehl sendet, um einen Roller ein- oder ausschalten.
int LED_pin =8; // eingebaute LED int BUTTON_ON_pin = 7; // Pin 7 int BUTTON_OFF_pin = 4; // Pin 4 // Serielle Tx: Pin 20 // Seriennummer: Pin 21 unsigned char command_on[] = { 0x68, 0x40, 0xBF, 0x68, 0x04, 0x03, 0xD3, 0x3D, 0x3C, 0x22, 0x16 }; unsigned char command_off[] = { 0x68, 0x40, 0xBF, 0x68, 0x04, 0x03, 0xD3, 0x3D, 0x35, 0x1B, 0x16 }; void setup() { Serial.begin(9600, SERIAL_8E1); // 9600 Baud Gerade Parität pinMode(LED_pin, OUTPUT); digitalWrite(LED_pin, LOW); // LED aus pinMode(BUTTON_ON_pin, INPUT_PULLUP); pinMode(BUTTON_OFF_pin, INPUT_PULLUP); } Leerschleife() { if(digitalRead(BUTTON_ON_pin) == LOW) { digitalWrite(LED_pin, HIGH); // LED an Serial.write(command_on, sizeof(command_on)); Verzögerung(1000); // 1000 ms (nur zum Entlaufen und nur einmal senden) digitalWrite(LED_pin, LOW); // LED aus } sonst if(digitalRead(BUTTON_OFF_pin) == LOW) { digitalWrite(LED_pin, HIGH); // LED an Serial.write(command_off, sizeof(command_off)); Verzögerung(1000); // 1000 ms (nur zum Entlaufen und nur einmal senden) digitalWrite(LED_pin, LOW);```
int LED_pin =8; // built-in LED

int BUTTON_ON_pin = 7; // Pin 7
int BUTTON_OFF_pin = 4; // Pin 4

// Serial Tx: Pin 20
// Serial Rx: Pin 21

unsigned char command_on[] = { 0x68, 0x40, 0xBF, 0x68, 0x04, 0x03, 0xD3, 0x3D, 0x3C, 0x22, 0x16 };
unsigned char command_off[] = { 0x68, 0x40, 0xBF, 0x68, 0x04, 0x03, 0xD3, 0x3D, 0x35, 0x1B, 0x16 };

void setup()
{
Serial.begin(9600, SERIAL_8E1); // 9600 Baud Even Parity

pinMode(LED_pin, OUTPUT);
digitalWrite(LED_pin, LOW);  // LED off

pinMode(BUTTON_ON_pin, INPUT_PULLUP);
pinMode(BUTTON_OFF_pin, INPUT_PULLUP);

}

void loop()
{

if(digitalRead(BUTTON_ON_pin) == LOW)
{
	digitalWrite(LED_pin, HIGH);  // LED on

	Serial.write(command_on, sizeof(command_on));
	delay(1000); // 1000 ms (just for debounce and sending only once)

	digitalWrite(LED_pin, LOW);  // LED off
}
else if(digitalRead(BUTTON_OFF_pin) == LOW)
{
	digitalWrite(LED_pin, HIGH);  // LED on

	Serial.write(command_off, sizeof(command_off));
	delay(1000); // 1000 ms (just for debounce and sending only once)

	digitalWrite(LED_pin, LOW);  // LED off
}

}

Kannst Du das nochmal so formatieren/schreiben, dass man es verstehen kann?
Hinweise hier.

Gruß Tommy

Moin @carlosmaddin ,

leider ist Dein Code hier im Forum kaum vernünftig lesbar ...

So sieht es besser aus:

/*
  Forum: https://forum.arduino.cc/t/display-hinzufugen-status-an-oder-aus/1347226/1
  Wokwi: https://wokwi.com/projects/421173630153294849

*/


int LED_pin = 8; // built-in LED

int BUTTON_ON_pin = 7; // Pin 7
int BUTTON_OFF_pin = 4; // Pin 4

// Serial Tx: Pin 20
// Serial Rx: Pin 21

unsigned char command_on[] =  { 0x68, 0x40, 0xBF, 0x68, 0x04, 0x03, 0xD3, 0x3D, 0x3C, 0x22, 0x16 };
unsigned char command_off[] = { 0x68, 0x40, 0xBF, 0x68, 0x04, 0x03, 0xD3, 0x3D, 0x35, 0x1B, 0x16 };

void setup()
{
  Serial.begin(9600, SERIAL_8E1); // 9600 Baud Even Parity

  pinMode(LED_pin, OUTPUT);
  digitalWrite(LED_pin, LOW);  // LED off

  pinMode(BUTTON_ON_pin, INPUT_PULLUP);
  pinMode(BUTTON_OFF_pin, INPUT_PULLUP);
}

void loop()
{

  if (digitalRead(BUTTON_ON_pin) == LOW)
  {
    digitalWrite(LED_pin, HIGH);  // LED on

    Serial.write(command_on, sizeof(command_on));
    delay(1000); // 1000 ms (just for debounce and sending only once)

    digitalWrite(LED_pin, LOW);  // LED off
  }
  else if (digitalRead(BUTTON_OFF_pin) == LOW)
  {
    digitalWrite(LED_pin, HIGH);  // LED on

    Serial.write(command_off, sizeof(command_off));
    delay(1000); // 1000 ms (just for debounce and sending only once)

    digitalWrite(LED_pin, LOW);  // LED off
  }
}

Ich habe die Anwendung bei Wokwi nachgebaut:

https://wokwi.com/projects/421173630153294849

Ich habe einen Sketch mit 2 Tasten, der einen RS485-Befehl sendet, um einen Roller ein- oder ausschalten. [...] Wie kann ich ein Display 1306 integrieren...

Soweit ich das sehe, sendet der Code eine Anzahl von Bytes per serieller Schnittstelle (vermutlich das, was Du als "RS485-Befehl" bezeichnet hast), wenn eine der beiden Tasten kurz gedrückt wird. (Der Sketch wäre durchaus verbesserungswürdig. )

Was möchtest Du jetzt genau mit dem Display anzeigen?
ec2021

Ist mein erster Beitrag, SORRY, wollte ihn ändern aber das ging leider nicht er wurde gesendet aber da er unsichtbar gemacht wurde konnte ich ihn wohl nicht ändern oder löschen ?

Nun hat ja jemand Ordnung rein gebracht. Danke dafür

Danke für dein Feedback, ja er sendet bei dem einen Taster das einschalten eines eRollers und der andere das ausschalten über ein TTL to RS485 Converter.
Gerne bitte Verbesserungsvorschläge für den Code, ich bin da total neu und unerfahren.

Das Display ist eigentlich nur Spielerei und um zu lernen wie ich Sketche verändern kann oder zusammenführen kann.

Ich hätte am liebsten eine Fernbedienung die das ein aus übernimmt hab aber keinen Plan ob das überhaupt möglich wäre ?

Also eigentlich nur Spielerei sowas wie Roller wird gestartet oder abgeschaltet wenn man den Taster drückt.

Lieber hätte ich eine Fernbedienungaber ich weiß nicht ob das realisierbar ist?

Hier ein Beispiel, wie das mit dem Display geht ...

https://wokwi.com/projects/421174693653771265

Sketch
/*
  Forum: https://forum.arduino.cc/t/display-hinzufugen-status-an-oder-aus/1347226/1
  Wokwi: https://wokwi.com/projects/421174693653771265

*/

#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>

#define SCREEN_WIDTH 128 // OLED display width, in pixels
#define SCREEN_HEIGHT 64 // OLED display height, in pixels

// Declaration for an SSD1306 display connected to I2C (SDA, SCL pins)
#define OLED_RESET     -1 // Reset pin # (or -1 if sharing Arduino reset pin)
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);


int LED_pin = 8; // built-in LED

int BUTTON_ON_pin = 7; // Pin 7
int BUTTON_OFF_pin = 4; // Pin 4

// Serial Tx: Pin 20
// Serial Rx: Pin 21

unsigned char command_on[] =  { 0x68, 0x40, 0xBF, 0x68, 0x04, 0x03, 0xD3, 0x3D, 0x3C, 0x22, 0x16 };
unsigned char command_off[] = { 0x68, 0x40, 0xBF, 0x68, 0x04, 0x03, 0xD3, 0x3D, 0x35, 0x1B, 0x16 };

void setup()
{
  Serial.begin(9600, SERIAL_8E1); // 9600 Baud Even Parity

  pinMode(LED_pin, OUTPUT);
  digitalWrite(LED_pin, LOW);  // LED off

  pinMode(BUTTON_ON_pin, INPUT_PULLUP);
  pinMode(BUTTON_OFF_pin, INPUT_PULLUP);

  // SSD1306_SWITCHCAPVCC = generate display voltage from 3.3V internally
  if (!display.begin(SSD1306_SWITCHCAPVCC, 0x3D)) { // Address 0x3D for 128x64
    Serial.println(F("SSD1306 allocation failed"));
    for (;;); // Don't proceed, loop forever
  }

  display.setTextSize(2);
  display.setTextColor(SSD1306_WHITE);
  Display("Taste ...");

}

void loop()
{

  if (digitalRead(BUTTON_ON_pin) == LOW)
  {
    digitalWrite(LED_pin, HIGH);  // LED on
    Display("Sende ON");

    Serial.write(command_on, sizeof(command_on));
    delay(1000); // 1000 ms (just for debounce and sending only once)
    Display("Taste ...");
    digitalWrite(LED_pin, LOW);  // LED off
  }
  else if (digitalRead(BUTTON_OFF_pin) == LOW)
  {
    digitalWrite(LED_pin, HIGH);  // LED on
    Display("Sende OFF");
    Serial.write(command_off, sizeof(command_off));
    delay(1000); // 1000 ms (just for debounce and sending only once)
    Display("Taste ...");
    digitalWrite(LED_pin, LOW);  // LED off
  }
}

void Display(char * text) {
  display.clearDisplay();
  display.setCursor(8, 24);            // Start at top-left corner
  display.println(text);
  display.display();
}

Was meinst Du mit "Fernbedienung"? Infrarot, Bluetooth, WLAN, 433 MHz ??

Du müsstest Deine Anwendung mal besser (verständlich) beschreiben:

  • Welches Board verwendest Du (Arduino MEGA 2560)?
  • Wie sieht Deine Verdrahtung/Verkabelung aus?
  • Was ist das für ein "Roller"?
  • Welche Art Fernbedienung stellst Du Dir vor?

Was meinst Du mit "Fernbedienung"? Infrarot, Bluetooth, WLAN, 433 MHz ??

Du müsstest Deine Anwendung mal besser (verständlich) beschreiben:

Ich versuche es mal

  • Welches Board verwendest Du (Arduino MEGA 2560)?
    Mikrocontroller Board AZ-ATmega328-Board
  • Wie sieht Deine Verdrahtung/Verkabelung aus?
    vom AT-Mega über Waveshare TTL to RS485 zum Roller an die 485 A / B / GND Anschlüsse an die Ladebuchse, 2 Taster an PIN4 und 7 jeweils mit GND verbunden
  • Was ist das für ein "Roller"?
    Niu N1S
  • Welche Art Fernbedienung stellst Du Dir vor?

**433 Mhz so was für Garagentore vielleicht? **

Leider ist das keine genaue Angabe über dein verwendetes Board.
Bitte poste immer Links zu all den Teilen, die du verwendest.
Dann können wir erkennen, was du verwendest.

Und ja, mit einer 433MHz Funkfernbedienung kann das auch funktionieren.
Z.B. die zuvor genannte. Und einem passenden Empfänger dazu.

ok wie gesagt kenne ich die Art und Weise hier garnicht.
TTL to RS485 das ist der TTL RS485 Converter
das mein Board AtMega
so ist das ca verdrahtet

Naja, das kennen die meisten Anfänger nicht, kann man aber durchaus hier nachlesen .

Die Pins D0 und D1 (RX und TX) solltest du besser nicht verwenden, da dies Probleme beim Flashen macht. Statt dessen kannst du SoftwareSerial mit beliebigen digitalen Pins verwenden.
Ausnahme ist, wenn die Pins beim Flashen nicht belegt sind und du kein serielles Debugging brauchst.

Es geht - wie ich mit etwas Google-Hilfe gefunden habe - um einen Anschluss an den internen Bus eines für den öffentlichen Straßenverkehr zugelassenen Elektrorollers chinesischer Herkunft... Da sollte man genau wissen, was man tut.

Was ich eben in einem einschlägigen Forum dazu gefunden habe, klang wenig überzeugend...

Wenn es ein "Bus" sein sollte, dann vermutlich ein CANBus, der pegelseitig als RS485 ausgelegt ist. Dann würde wiederum ein Seriell auf RS485 Umsetzer allerdings nicht funktionieren. Dazu bräuchte es einen CAN Controller.

Vielleicht könntest Du mal den Link posten, der Dich zu diesem Projekt animiert hat?

Danke für die Rückmeldung, kein Debugging, was auch immer das bedeutet :rofl:, aber brauch ich wohl nicht :joy:, Pins sind noch nicht fest belegt so geht das flashen also durchaus, IDE hat schon gemeckert beim flashen :upside_down_face:, ich=google ah ja nix am Arduino beim flashen verbinden :stuck_out_tongue_winking_eye:

Zu mir, ich einfasst 53 Jahrealt und kann fast alles, aber nix richtig, dazu kommt ich habe ADHS und will alles alleine schaffen, aber ich werde leider älter und check das nicht so schnell :smiling_face: wenn überhaupt

Das ist genau der Punkt. Die IDE hat vermutlich meckert, weil du D0 und D1 belegt hast.
Und Debugging ist wichtig, wenn du Fehler in deinem Code suchen und beseitigen willst.

Alles andere ist kein Problem, mit Geduld bekommen wir das hin.

ich möchte hier keine Diskussion wie in dem anderen einschlägigem Forum.

Wer helfen möchte hilft, wer mir was unterstellen möchte lässt es bitte, ich kann, und werde keine Details dazu posten.

Stell dir einfach vor ich schalte was ähnliches an und aus damit...

ADHS=keine Geduld :joy: nein Spass aber leider ist es so, aber ich schaffe das, wenn es nicht Stunden dauert :rofl:, ja ok paar Tage schaff ich auch

aber das sind ja die RX TX Pins nunmal

In der Tat, das sind sie.
Aber eben nur bedingt (wie geschrieben) extern nutzbar.

Ich habe den Code bekommen, also nicht selber geschrieben, und der funktioniert ja auch, ich möchte den Verfasser des Codes aber nicht die ganze Zeit nerven mit meinen Ideen, da er noch daran arbeitet es zu verändern, ich möchte halt versuchen selber etwas zu lernen und zu verstehen von dem was ich da mache

und wer mir helfen möchte, tut es um mir zu helfen und nicht um irgendwann in einer PN einen Vertrag zu schicken weil er dafür bezahlt werden möchte....