Разные данные у ESP8266 и Arduino
- Войдите на сайт для отправки комментариев
Вс, 28/10/2018 - 10:44
/*- WHAT IT DOES: Receives data from another transceiver with Displays received values on Serial Monitor 1 - GND 2 - VCC 3.3V !!! NOT 5V 3 - CE to Arduino pin 9 esp D2 GPIO 4 4 - CSN to Arduino pin 10 esp D8 GPIO 15 5 - SCK to Arduino pin 13 esp D5 GPIO 14 6 - MOSI to Arduino pin 11 esp D7 GPIO 13 7 - MISO to Arduino pin 12 esp D6 GPIO 12 8 - UNUSED /*-----( Import needed libraries )-----*/ #include <SPI.h> #include <nRF24L01.h> #include <RF24.h> /*-----( Declare Constants and Pin Numbers )-----*/ #define CE_PIN 2 #define CSN_PIN 15 // NOTE: the "LL" at the end of the constant is "LongLong" type const uint64_t pipe = 0xE8E8F0F0E1LL; // Define the transmit pipe /*-----( Declare objects )-----*/ RF24 radio(CE_PIN, CSN_PIN); // Create a Radio /*-----( Declare Variables )-----*/ int hall[2]; // массив для данных датчика void setup() /****** SETUP: RUNS ONCE ******/ { Serial.begin(9600); delay(1000); Serial.println("Nrf24L01 Receiver Starting"); radio.begin(); radio.setDataRate(RF24_250KBPS); // Скорость передачи radio.setChannel(100); // Номер канала от 0 до 127 radio.setRetries(15, 15); // Кол-во попыток и время между попытками radio.openReadingPipe(1, pipe); radio.startListening();; }//--(end setup )--- void loop() /****** LOOP: RUNS CONSTANTLY ******/ { if ( radio.available() ) { // Read the data payload until we've received everything // Fetch the data payload radio.read(&hall, sizeof(hall)); Serial.print("Hall = "); Serial.print(hall[0]); Serial.print(" "); Serial.println(hall[1]); } }//--(end main loop )---
вот фрагмент кода передатчика:
sens[0] = 101; // код датчика Холла - 101
sens[1] = dark;
radio.write( sens, sizeof(sens) ); // передали в эфир
В итоге Arduino правильно расшифровывает
Hall = 101 210
А ESP8266
Hall = 12648549 0
в чем дело ?
Поставьте печать
в ардуине, и в ESP. Одно и тоже печатает? Или разное?
Serial
.println(
sizeof
(hall));
ESP выдает 8. Arduino выдает 4. Чертовщина какая-то
В чем чертовщина - в разной разрядности микроконтроллеров?
в скетче поправил строку int hall[2]; на int16_t hall[2];
и все заработало. Да, не подумал, что проблема элементарна.
Спасибо за помошь!