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]