Skip to content
Snippets Groups Projects
Verified Commit b25e53a5 authored by Anian Bühler's avatar Anian Bühler
Browse files

Updated examples

parent 47d9d0cc
No related branches found
No related tags found
1 merge request!9update master from dev2
...@@ -36,10 +36,11 @@ char topicSub[MAX_LEN_TOPICS] = {""}; //Array für neues Empfangs-Topi ...@@ -36,10 +36,11 @@ char topicSub[MAX_LEN_TOPICS] = {""}; //Array für neues Empfangs-Topi
char topicPub[MAX_LEN_TOPICS] = {""}; //Array für eigenes Sende-Topic char topicPub[MAX_LEN_TOPICS] = {""}; //Array für eigenes Sende-Topic
//Callback-Funktion wird bei neuen Daten automatisch aufgerufen //Callback-Funktion wird bei neuen Daten automatisch aufgerufen
void newData(char* mTopic, char* mData) { void newData(char* topic, char* payload) {
Serial.print(mTopic); //Ausgabe-> "Chatname": "geschriebene Nachricht"
Serial.print(topic); //topic entspricht im Chat dem NAmen des Chatpartners
Serial.print(":\t"); Serial.print(":\t");
Serial.println(mData); Serial.println(payload); //payload enthält die geschriebene Nachricht
} }
SoftwareSerial sSerial(10, 11); // SoftwareSerial an Rx = Pin10 -> Empfänger | Tx = Pin11 -> Sender SoftwareSerial sSerial(10, 11); // SoftwareSerial an Rx = Pin10 -> Empfänger | Tx = Pin11 -> Sender
...@@ -58,15 +59,15 @@ void setup() { ...@@ -58,15 +59,15 @@ void setup() {
sReader.begin(Serial); sReader.begin(Serial);
//AUSGABE INFOTEXT //AUSGABE INFOTEXT
Serial.print("Bitte den eigenen Namen mit einem # eingeben\nund mit Enter bestaetigen. -> "); Serial.print("1. Den eigenen Namen mit einem # eingeben\nund mit Enter bestaetigen. -> ");
Serial.println("#DeinName"); Serial.println("#DeinName");
Serial.print("Gebe dann die Namen deiner Chatpartner mit einem @ ein. -> "); Serial.print("2. Die Namen deiner Chatpartner*innen mit einem @ eingeben -> ");
Serial.println("@ChatPartner"); Serial.println("@ChatPartner*in \t (mehrfach moeglich)");
Serial.println("Anschließend kannst du mit ihnen schreiben."); Serial.print("3. Chatten: ");
Serial.println("Pro Nachricht duerfen maximal 20 Zeichen eingegeben werden!"); Serial.println("Pro Nachricht duerfen maximal 20 Zeichen eingegeben werden!");
Serial.println(); Serial.println();
Serial.println("HINWEIS:"); Serial.println("HINWEIS:");
Serial.println("Stelle das Zeilenende im SerialMonitor auf \"Zeilenumbruch (CR)\""); Serial.println("Stelle das Zeilenende im SerialMonitor auf \"ZEILENUMBRUCH (CR)\"");
Serial.println("*********************************************************************\n"); Serial.println("*********************************************************************\n");
} }
...@@ -78,6 +79,7 @@ void loop() { ...@@ -78,6 +79,7 @@ void loop() {
if (nrOfAscii > 0) { //Wenn Daten fertig eingelesen wurden if (nrOfAscii > 0) { //Wenn Daten fertig eingelesen wurden
//NEUEM CHATPARTNER FOLGEN
if (readData[0] == '@') { //Wenn '@' vorne steht, dann neuer Chatpartner anlegen (neues Topic abonnieren) if (readData[0] == '@') { //Wenn '@' vorne steht, dann neuer Chatpartner anlegen (neues Topic abonnieren)
strcpy(readData, &readData[1]); //verschiebe um ein Zeichen (entferne '@') strcpy(readData, &readData[1]); //verschiebe um ein Zeichen (entferne '@')
psnClient.subscribe(readData); //Lege fest zu welchem Topic Daten empfangen werden sollen (den Namen des Chatpartners) psnClient.subscribe(readData); //Lege fest zu welchem Topic Daten empfangen werden sollen (den Namen des Chatpartners)
...@@ -86,6 +88,7 @@ void loop() { ...@@ -86,6 +88,7 @@ void loop() {
Serial.print(readData); Serial.print(readData);
Serial.println(" abonniert."); Serial.println(" abonniert.");
} }
//CHATPARTNER ENTFOLGEN
else if (readData[0] == '!') { //Wenn '@' vorne steht, dann neuer Chatpartner anlegen (neues Topic abonnieren) else if (readData[0] == '!') { //Wenn '@' vorne steht, dann neuer Chatpartner anlegen (neues Topic abonnieren)
strcpy(readData, &readData[1]); //verschiebe um ein Zeichen (entferne '!') strcpy(readData, &readData[1]); //verschiebe um ein Zeichen (entferne '!')
psnClient.unsubscribe(readData); //Lege fest zu welchem Topic Daten empfangen werden sollen (den Namen des Chatpartners) psnClient.unsubscribe(readData); //Lege fest zu welchem Topic Daten empfangen werden sollen (den Namen des Chatpartners)
...@@ -94,15 +97,15 @@ void loop() { ...@@ -94,15 +97,15 @@ void loop() {
Serial.print(readData); Serial.print(readData);
Serial.println(" nicht mehr abonniert."); Serial.println(" nicht mehr abonniert.");
} }
//EIGENEN NAMEN ANLEGEN
else if (readData[0] == '#') { //Wenn '#' vorne steht, dann neuer eigener Name (neues Topic unter dem gesendet wird) else if (readData[0] == '#') { //Wenn '#' vorne steht, dann neuer eigener Name (neues Topic unter dem gesendet wird)
//strcpy(topicPub, readData + 1); //kopiere das neue Topic (deinen neuen Namen) in das passende Array (+ 1 = entferne '#')
strcpy(topicPub, &readData[1]); //kopiere das neue Topic (deinen neuen Namen) in das passende Array (+ 1 = entferne '#') strcpy(topicPub, &readData[1]); //kopiere das neue Topic (deinen neuen Namen) in das passende Array (+ 1 = entferne '#')
//strcpy(topicPub, readData + 1); //-> Alternative zur Zeile oberhalb
Serial.print("Dein Name:\t"); //Ausgabe unter welchem Topic veröffentlicht wird Serial.print("Dein Name:\t"); //Ausgabe unter welchem Topic veröffentlicht wird
Serial.println(topicPub); Serial.println(topicPub);
} }
//NACHRICHT VERSCHICKEN (unter eigenem Namen)
else { //Wenn "normale" Nachrichten eingegeben wurden, dann Daten unter eigenem Topic versenden else { //Wenn "normale" Nachrichten eingegeben wurden, dann Daten unter eigenem Topic versenden
psnClient.publish(topicPub, readData); //Bereite eingegebene Daten zum Senden vor psnClient.publish(topicPub, readData); //Bereite eingegebene Daten zum Senden vor
......
...@@ -40,16 +40,16 @@ DidacticPSNetClient psnClient; //Erzeuge PubSub-Client-Instanz ...@@ -40,16 +40,16 @@ DidacticPSNetClient psnClient; //Erzeuge PubSub-Client-Instanz
//Callback-Funktion - wird beim Empfang neuer Daten aufgerufen //Callback-Funktion - wird beim Empfang neuer Daten aufgerufen
void newData(char* mTopic, char* mData) { void newData(char* topic, char* payload) {
Serial.print("CB: "); Serial.print("New data from topic ");
Serial.print(mTopic); Serial.print(topic);
Serial.print(" | "); Serial.print(": ");
Serial.println(mData); Serial.println(payload);
boolean static stateLED = false; boolean static stateLED = false;
//Wechsle Zustand der Variable "stateLED" wenn Taster beim Sender gedrueckt wurde //Wechsle Zustand der Variable "stateLED" wenn Taster beim Sender gedrueckt wurde
if(bool(atoi(mData)) == true){ if(bool(atoi(payload)) == true){
stateLED = !stateLED; stateLED = !stateLED;
digitalWrite(LED_PIN, stateLED); //Setze Ausgang entsprechend dem empfangenen Wert digitalWrite(LED_PIN, stateLED); //Setze Ausgang entsprechend dem empfangenen Wert
} }
...@@ -64,7 +64,6 @@ void setup() { ...@@ -64,7 +64,6 @@ void setup() {
pinMode(LED_PIN,OUTPUT); pinMode(LED_PIN,OUTPUT);
psnClient.begin(sSerial, newData); //Starte PubSub Client an SoftwareSerial Schnittstelle psnClient.begin(sSerial, newData); //Starte PubSub Client an SoftwareSerial Schnittstelle
//psnClient.begin(Serial, clientCallback); //Starte PubSub Client an Serial Schnittstelle
psnClient.subscribe(topicSubscribe); //Lege fest zu welchem Topic Daten empfangen werden sollen psnClient.subscribe(topicSubscribe); //Lege fest zu welchem Topic Daten empfangen werden sollen
} }
......
...@@ -33,20 +33,18 @@ char topicSubscribe[MAX_LEN_TOPICS] = "potiVal"; //Topic (von anderem TN) das ...@@ -33,20 +33,18 @@ char topicSubscribe[MAX_LEN_TOPICS] = "potiVal"; //Topic (von anderem TN) das
SoftwareSerial sSerial(10, 11); //Erzeuge SoftwareSerial-Instanz mit Rx = Pin10 -> Empfänger | Tx = Pin11 -> Sender SoftwareSerial sSerial(10, 11); //Erzeuge SoftwareSerial-Instanz mit Rx = Pin10 -> Empfänger | Tx = Pin11 -> Sender
DidacticPSNetClient psnClient; //Erzeuge PubSub-Client-Instanz DidacticPSNetClient psnClient; //Erzeuge PubSub-Client-Instanz
UnblockingTimer uTimer;
//Callback-Funktion - wird beim Empfang neuer Daten aufgerufen //Callback-Funktion - wird beim Empfang neuer Daten aufgerufen
void newData(char* mTopic, char* mData) { void newData(char* topic, char* payload) {
Serial.print("CB: "); Serial.print("New data from topic ");
Serial.print(mTopic); Serial.print(topic);
Serial.print(" | "); Serial.print(": ");
Serial.println(mData); Serial.println(payload);
int valuePoti = atoi(mData); //wandle ASCII-Zeichen in Wert int valuePoti = atoi(payload); //wandle ASCII-Zeichen in Wert
//Alternativ: sscanf(mData, "%d", &stateLED); //wandle ASCII-Zeichen in Wert //Alternativ: sscanf(mData, "%d", &stateLED); //wandle ASCII-Zeichen in Wert
int valueLED = constrain(map(valuePoti, 0, 1023, 0, 255), 0, 255); //passe analogRead-Wert für analogWrite an int valueLED = constrain(map(valuePoti, 0, 1023, 0, 255), 0, 255); //passe analogRead-Wert (0-1023) für analogWrite (0-255) an und begrenze
analogWrite(LED_PIN, valueLED); //Setze Ausgang entsprechend dem empfangenen Wert analogWrite(LED_PIN, valueLED); //Setze Ausgang entsprechend dem empfangenen Wert
analogWrite(LED2_PIN, 255-valueLED); //Setze Ausgang invertiert zum empfangenen Wert analogWrite(LED2_PIN, 255-valueLED); //Setze Ausgang invertiert zum empfangenen Wert
...@@ -59,7 +57,6 @@ void setup() { ...@@ -59,7 +57,6 @@ void setup() {
sSerial.begin(SERIAL_BAUD); //Starte SoftwareSerielle Schnittstelle (zu IR-Link-Modulen) sSerial.begin(SERIAL_BAUD); //Starte SoftwareSerielle Schnittstelle (zu IR-Link-Modulen)
psnClient.begin(sSerial, newData); //Starte PubSub Client an SoftwareSerial Schnittstelle psnClient.begin(sSerial, newData); //Starte PubSub Client an SoftwareSerial Schnittstelle
//psnClient.begin(Serial, clientCallback); //Starte PubSub Client an Serial Schnittstelle
psnClient.subscribe(topicSubscribe); //Lege fest zu welchem Topic Daten empfangen werden sollen psnClient.subscribe(topicSubscribe); //Lege fest zu welchem Topic Daten empfangen werden sollen
} }
......
...@@ -29,11 +29,11 @@ SoftwareSerial sSerial(10, 11); //Erzeuge SoftwareSerial-Instanz mit Rx = Pin10 ...@@ -29,11 +29,11 @@ SoftwareSerial sSerial(10, 11); //Erzeuge SoftwareSerial-Instanz mit Rx = Pin10
DidacticPSNetClient psnClient; //Erzeuge PubSub-Client-Instanz DidacticPSNetClient psnClient; //Erzeuge PubSub-Client-Instanz
//Callback-Funktion - wird beim Empfang neuer Daten aufgerufen //Callback-Funktion - wird beim Empfang neuer Daten aufgerufen
void newData(char* mTopic, char* mPayload) { void newData(char* topic, char* payload) {
Serial.print("Nachricht von: "); Serial.print("Topic: ");
Serial.print(mTopic); Serial.print(topic);
Serial.print(" - "); Serial.print(" Nutzdaten: ");
Serial.println(mPayload); Serial.println(payload);
} }
......
...@@ -50,8 +50,8 @@ char payloadSend[] = "Ping"; ...@@ -50,8 +50,8 @@ char payloadSend[] = "Ping";
bool ledState = true; bool ledState = true;
void newData(char* mTopic, char* mData) { void newData(char* topic, char* payload) {
Serial.println(mData); Serial.println(payload);
digitalWrite(LED_BUILTIN, HIGH); digitalWrite(LED_BUILTIN, HIGH);
} }
......
...@@ -44,13 +44,13 @@ char payloadSend[] = "Pong"; ...@@ -44,13 +44,13 @@ char payloadSend[] = "Pong";
bool ledState = true; bool ledState = true;
void newData(char* mTopic, char* mData) { void newData(char* topic, char* payload) {
Serial.println(mTopic); Serial.println(topic);
//reply pong //reply pong
strcpy(topicPub, mTopic); strcpy(topicPub, topic);
if (!strcmp(mData, "Ping")) { //Empfangene Nachricht == Ping if (!strcmp(payload, "Ping")) { //Empfangene Nachricht == Ping
Serial.print(" "); Serial.print(" ");
Serial.print(mTopic); Serial.print(topic);
psnClient.publish(topicPub, payloadSend); psnClient.publish(topicPub, payloadSend);
} }
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please to comment