Разные данные у ESP8266 и Arduino

Dejmos
Offline
Зарегистрирован: 19.02.2016
/*- 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

 в чем дело ?

 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Поставьте печать

Serial.println(sizeof(hall));

в ардуине, и в ESP. Одно и тоже печатает? Или разное?

Dejmos
Offline
Зарегистрирован: 19.02.2016

Serial.println(sizeof(hall));

ESP выдает 8. Arduino выдает 4. Чертовщина какая-то

sadman41
Offline
Зарегистрирован: 19.10.2016

В чем чертовщина - в разной разрядности микроконтроллеров? 

Dejmos
Offline
Зарегистрирован: 19.02.2016

в скетче поправил строку int hall[2]; на int16_t hall[2];

и все заработало. Да, не подумал, что проблема элементарна.
Спасибо за помошь!