Hi ich habe zwei Arduino UNOs zum Testen. Bei beiden ist ein NRF24L01 RICHTIG angeschlossen! Wenn ich den RESET am TX gedrückt habe und das Programm anfängt, dann empfängt der RX eins bis zwei mal und das wars. Im Seriellen-Monitor "scheint" der TX aber weiter zu senden. Habe es jetzt probiert bei den NRFs einen 10uF an die VCC(3.3V) zu hängen aber das Problem besteht weiter. Funkstrecke getestet von 10cm bis 3m, selbes Problem! Mit einfacheren Testprogrammen läuft das Teil ohne Probleme. Ich habe jetzt diese beiden Codes im Netz gefunden bei denen das Problem vorkommt. Verwende die RF24 Libary Was könnte die Ursache dafür sein? LG TX
1 | #include <SPI.h> |
2 | #include <RF24.h> |
3 | |
4 | // ce,csn pins
|
5 | RF24 radio(9,10); |
6 | |
7 | // init data buffer to hold a sensor type byte and one uint16_t sensor data
|
8 | unsigned char data[3] = { |
9 | 0}; |
10 | unsigned long count=0; |
11 | void setup(void) |
12 | {
|
13 | pinMode(2, OUTPUT); |
14 | Serial.begin(19200); |
15 | Serial.println("**************V1 Send Sensor Data***********"); |
16 | radio.begin(); |
17 | radio.setPALevel(RF24_PA_HIGH); |
18 | radio.setChannel(8); |
19 | |
20 | // open pipe for writing
|
21 | radio.openWritingPipe(0xE8E8F0F0E1LL); |
22 | |
23 | radio.enableDynamicPayloads(); |
24 | radio.setAutoAck(true); |
25 | radio.powerUp(); |
26 | Serial.println("...Sending"); |
27 | }
|
28 | |
29 | void loop() |
30 | {
|
31 | //generate a random number to represent a sensor reading
|
32 | uint16_t sensorValue = random(10,1001); |
33 | //assign 'T' to represent a Temperature reading
|
34 | data[0] = 'T'; |
35 | //do the bit shift to put uint16 into uint8 array
|
36 | data[1] = sensorValue >> 8; |
37 | data[2] = sensorValue; |
38 | Serial.print(count); |
39 | count++; |
40 | Serial.print(" data[1]: "); |
41 | Serial.print(data[1]); |
42 | Serial.print(" | data[2]: "); |
43 | Serial.print(data[2]); |
44 | // print and increment the counter
|
45 | digitalWrite(2, HIGH); |
46 | delay(500); |
47 | radio.write(data, sizeof(uint16_t)+1); |
48 | Serial.print(" | Temperature sent: "); |
49 | Serial.println(sensorValue); |
50 | // pause a second
|
51 | digitalWrite(2, LOW); |
52 | delay(500); |
53 | }
|
RX
1 | #include <SPI.h> |
2 | #include <RF24.h> |
3 | |
4 | // ce,csn pins
|
5 | RF24 radio(9,10); |
6 | // set up the data buffer to receive the sensor type byte and the uint16_t sensorValue
|
7 | unsigned char data[3] = { |
8 | 0}; |
9 | unsigned long count=0; |
10 | void setup(void) |
11 | {
|
12 | // init serial monitor and radio
|
13 | Serial.begin(19200); |
14 | Serial.println("**************V1 Receive Sensor Data***********"); |
15 | radio.begin(); |
16 | radio.setPALevel(RF24_PA_HIGH); |
17 | radio.setChannel(8); |
18 | |
19 | // open pipe for reading
|
20 | radio.openReadingPipe(1,0xE8E8F0F0E1LL); |
21 | |
22 | radio.enableDynamicPayloads(); |
23 | radio.setAutoAck(true); |
24 | radio.powerUp(); |
25 | radio.startListening(); |
26 | Serial.println("...Listening"); |
27 | }
|
28 | |
29 | void loop(void) |
30 | {
|
31 | // if there is data ready
|
32 | if (radio.available()) |
33 | {
|
34 | // dump the payloads until we've got everything
|
35 | bool done = false; |
36 | while (!done) |
37 | {
|
38 | // fetch the payload, and see if this was the last one
|
39 | done = radio.read(data, sizeof(uint16_t)+1); |
40 | }
|
41 | |
42 | // print the payload
|
43 | if (data[0] == 'T') { |
44 | //put the uint16_t back together
|
45 | uint16_t sensorValue = data[2] | data[1] << 8; |
46 | Serial.print(count); |
47 | count++; |
48 | Serial.print(" | Temperature Received: "); |
49 | Serial.println(sensorValue); |
50 | }
|
51 | else
|
52 | Serial.println("Did not receive a value temperature reading"); |
53 | }
|
54 | }
|