Hilfe bei einem Schulprojekt

Hallo
Das Programm verwendet ein nRF52840-Modul um Daten über Bluetooth zu senden und zu empfangen. Es ist so konzipiert, dass es mit einem anderen nRF52840-Modul kommunizieren kann, das als Empfänger fungiert.

Das Programm wurde in mehrere Funktionen aufgeteilt, um es leichter lesbar und verständlich zu machen. Die setup-Funktion initialisiert das Bluetooth-Modul und legt die Werbe- und Verbindungseinstellungen fest. Die loop-Funktion wird ständig ausgeführt und ruft andere Funktionen auf, die verschiedene Aufgaben ausführen.

Die Funktion senden_nrf sendet Daten über Bluetooth, wenn eine Verbindung besteht und die Daten mit den gesendeten Daten übereinstimmen. Die Funktion empfangen_nrf empfängt Daten über Bluetooth und vergleicht sie mit den gesendeten Daten. Wenn die empfangenen Daten mit den gesendeten Daten übereinstimmen, wird die Variable data_matches auf true gesetzt.

Es gibt auch andere Funktionen, die für die Steuerung von Motoren, Lichtern und Sound verwendet werden können. Diese Funktionen wurden jedoch nicht vollständig implementiert und müssen noch ergänzt werden.

Um den Status der Verbindung anzuzeigen, gibt es zwei Funktionen, blinken und blinken_verbindung, die am Anfang aufgerufen werden. Die blinken-Funktion lässt die LED blinken, wenn keine Verbindung besteht, während die blinken_verbindung-Funktion die LED dreimal blinken lässt, um eine erfolgreiche Verbindung anzuzeigen.

Leider finden wir den Fehler nicht.
Wir sind noch niccht allzu lange mit dem nRF zu gange.

mfG
Thomas

[code]
#include <Arduino.h>
#include <bluefruit.h>

// Namen für die Geräte, die für die Identifikation verwendet werden
#define DEVICE_NAME "nRF52840"

// Variablen für die zu übertragenden Daten
char data[] = "Hallo von nRF52840";

// Variablen, um zu verfolgen, ob Daten empfangen wurden und ob die empfangenen Daten mit den gesendeten Daten übereinstimmen
bool received_data = false;
bool data_matches = false;

// Variable, um den Status der Verbindung zu verfolgen
bool connected = false;

// Prototyping der Funktionen
void setup_bluefruit();
void connect_callback(uint16_t conn_handle);
void disconnect_callback(uint16_t conn_handle, uint8_t reason);
void bleuart_rx_callback(uint16_t conn_handle);
void senden_nrf();
void empfangen_nrf();
void empfangen_d();
void senden_d();
void servomotor_kontrolle();
void licht_steuerung();
void sound_steuerung();
void blinken();
void blinken_verbindung();

void setup() {
  Serial.begin(115200);
  while (!Serial);  // Warten Sie, bis die serielle Verbindung hergestellt wurde
  Serial.println("Bluetooth starten...");

  // Bluetooth initialisieren
  setup_bluefruit();
}

void loop() {
  // Task-Scheduler ausführen
  Bluefruit.TaskScheduler.execute();
  
  // Blinken der LED, wenn keine Verbindung besteht
  if (!connected) {
    blinken();
  } else {
    blinken_verbindung();
  }
}

// Funktion zum Setup von Bluefruit
void setup_bluefruit() {
  // Bluetooth initialisieren
  Bluefruit.begin();
  
  // Sendeleistung auf 4 dBm setzen
  Bluefruit.setTxPower(4);
  
  // Gerätenamen festlegen
  Bluefruit.setName([DEVICE_NAME](https://www.google.com/search?q=DEVICE_NAME));

  // Werbeparameter festlegen
  Bluefruit.Advertising.addFlags([BLE_GAP_ADV_FLAGS_LE_ONLY_GENERAL_DISC_MODE](https://www.google.com/search?q=BLE_GAP_ADV_FLAGS_LE_ONLY_GENERAL_DISC_MODE));
  Bluefruit.Advertising.addTxPower();
  Bluefruit.Advertising.addAppearance([BLE_APPEARANCE_GENERIC_TAG](https://www.google.com/search?q=BLE_APPEARANCE_GENERIC_TAG));
  
  // GATT-Dienst hinzufügen
  Bluefruit.Advertising.addService([bleuart](https://www.google.com/search?q=bleuart));
  
  // Bei Verbindungsverlust neu starten
  Bluefruit.Advertising.restartOnDisconnect(true);
  
  // Werbeintervall festlegen (32,5 ms - 4000 ms)
  Bluefruit.Advertising.setInterval(32, 244);
  
  // Schnellzeitlimit festlegen (in Sekunden)
  Bluefruit.Advertising.setFastTimeout(30);

  // Werbung starten
  Bluefruit.Advertising.start(0);
  
  // Verbindungs-Callback-Funktion festlegen
  Bluefruit.Central.setConnectCallback([connect_callback](https://www.google.com/search?q=connect_callback));
  
  // Trennungs-Callback-Funktion festlegen
  Bluefruit.Central.setDisconnectCallback([disconnect_callback](https://www.google.com/search?q=disconnect_callback));
}

[/code]


Und warum machst du zu deinem Schulproblem noch einen zweiten Thread auf ?
Kannst nicht erst mal die Punkte vom ersten Thread abarbeiten ?

Hallo

Dank der Hilfe konnten es die Schüler lösen.

Unter IDE 1 liess sich es einrichten.

mfG
Thomas

Ich habe die AG zur Betreuung übernommen war aber überrrascht wie weit sie sind

Ich war nur auf Uno vorbereitet aber nicht auf nRFs

Was meine Frage aber nicht beantwortet.

Der da wie lautet?

Es kann nur an Zeile 235,5 liegen dort muss das Komma kursiv und fett unterstrichen werden, ist doch ganz klar!

Ok, ich versuche es noch mal:

Dank welcher Hilfe ?
Was ist IDE 1 ?

Da stehts doch drin.

Richtiges package und richtige ide und schon alles richtig.

Da es keine IDE 1 gibt, kann die nicht richtig sein.

Gruß Tommy

Tommy bitte, es gibt auch keine IDE 2
Und?
Macht doch jetzt bitte keinen Aufstand.

Das ist kein Aufstand, sondern ich erwarte von jemanden, der Schüler ausbildet einfach eine Grundmenge an klarer und im Inhalt richtiger Ausdrucksweise.
Sonst wird das Bildungsergebnis noch schlechter, als es schon ist.
Auch wenn Dir das evtl. missfällt.

Gruß Tommy

1 Like

@Tommy56 Naja.. es ist eine AG und ich finde es gut das es Leute gibt die auch so etwas machen.

Du solltest meine Grundeinstellung zu Lehrkräften und den damit einhergehenden Anspruch kennen.
Aber bei einer Arduino-IDE 1 hält sich die Lehrkraft vielleicht ausgerechnet an die Dokumentation.

1 Like

Woher?

Ok, dann ist diese Aussage evtl. schon falsch, da ich weder eine IDE 1 noch eine IDE 2 installieren kann und für manche Fehlerbilder die genaue Version der IDE wichtig ist.

Gruß Tommy

Das ist schön.
Dann sollten solche Leute auch Fragen beantworten, dieser erwarten hier ja auch Antworten.

Ich dachte das eine oder andere Mal schon mich dementsprechend geäussert zu haben.
Wenn das nicht so eindeutig durchkam, dann jetzt :wink:

Das stimmt natürlich auch.
Aber vielleicht hat er auch viel Zutun (auf die Kinder aufpassen z.b.)

Da kam auch jetzt nichts eindeutiges rüber, nur das da jetzt etwas Eindeutiges gekommen wäre (was nicht kam).
Sollte das der Grund sein, warum Du uneindeutige Aussagen verteidigst? :wink:

Gruß Tommy

Na gut, dann warten wir mal, ob noch was vom TO kommt.

Aber nur wenn Weihnachten und Ostern auf einen Tag fallen und Vollmond ist :wink:

Gruß Tommy