Hallo zusammen,
ich baue im Moment ein Lichtschrankensystem aus einem Master (Uno) und dann später 3 Slaves (Nano).
Es wird die Zeit zwischen Licht an Unterbrechung an den Master zurückgeschickt. Bis jetzt wird die Unterbrechung durch einen Taster ausgelöst.
Bis jetzt schalten die Slaves direkt nach dem hochladen des Sketches (am Slave) ein.
Hier der Code am Master
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
RF24 radio(9, 10); // CE, CSN
void setup() {
Serial.begin(9600);
radio.begin();
}//end of setup
void loop() {
slave1();
}// End of loop
void slave1(){
byte address[6] = "00001";
radio.openWritingPipe(address[0]);
radio.setPALevel(RF24_PA_MIN);
radio.setDataRate(RF24_250KBPS);
radio.startListening();
if (radio.available()) {
const char erg[32] = "";
radio.read(&erg, sizeof(erg));
Serial.print(erg); Serial.println(" ms 1");
delay(50);
radio.stopListening();
}
}
Das ist der Code der Slaves
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
RF24 radio(9, 10); // CE, CSN
const byte address[6] = "00001";
long start;
float dauer;
void setup() {
radio.begin();
radio.openWritingPipe(address[0]);
radio.setPALevel(RF24_PA_MIN);
pinMode(7, INPUT);
pinMode(3, OUTPUT);
digitalWrite(7, HIGH); // Pull-Up-Widerstand aktivieren
}
void loop() {
radio.stopListening();
digitalWrite(3, HIGH);
start = millis();
if(digitalRead(7) == LOW) {
while(digitalRead(7) == LOW) {
1; // warten, solange Taste gedrueckt
}
digitalWrite(3,LOW);
const float dauer = millis() - start;
delay(5);
char erg[32];
dtostrf(dauer,1,0, erg);
radio.write(&erg, sizeof(erg));
delay(500);
}
}
Ich möchte gerne das der Slave erst nach einem Signal vom Master seinen Loop durchläuft.
Kann ich vom Master aus so ein "Signal"/Impuls/etc. an den Slave senden sodann dieser dann den loop ausführt?
Gibt es strukturrelle Alternativen?
Vielen Dank für eure Hilfe.
Gruß Simon