MCP3423 + ESP32 видит но не читает

заливаю скан шины и ком порт мне показывает адрес ацп
значит с подключением всё в порядке

но заливаю код на считывание показаний выдаёт одно число и замирает

Спойлер

// Include libraries this sketch will use
#include <Wire.h>
#include <MCP342X.h>

// Instantiate objects used in this project
MCP342X myADC;

void setup() {
Wire.begin(); // join I2C bus
// TWBR = 12; // 400 kHz (maximum)

Serial.begin(9600); // Open serial connection to send info to the host
while (!Serial) {} // wait for Serial comms to become ready
Serial.println(“Starting up”);
Serial.println(“Testing device connection…”);
Serial.println(myADC.testConnection() ? “MCP342X connection successful” : “MCP342X connection failed”);

myADC.configure( MCP342X_MODE_CONTINUOUS |
MCP342X_CHANNEL_2 |
MCP342X_SIZE_16BIT |
MCP342X_GAIN_1X
);

Serial.println(myADC.getConfigRegShdw(), HEX);

} // End of setup()

void loop() {
static int16_t result;
static int16_t result1;

myADC.startConversion(MCP342X_CHANNEL_1);
myADC.getResult(&result);
Serial.print(“ec:”);
Serial.print(result);

myADC.startConversion(MCP342X_CHANNEL_2);
myADC.getResult(&result1);

Serial.print(" temp:");
Serial.println(result1);
delay(1000);
} // End of loop()

выдаёт всегда номер 38 при ребуте
а должен выдавать строку от двух каналов измерения и более того каждую секунду

на первом канале 0в на втором 1,56в подано

может это код ошибки какой ?

как программа (которую мы не видели) написана, то она и выдаёт.

1 лайк

// Include libraries this sketch will use
#include <Wire.h>
#include <MCP342X.h>

// Instantiate objects used in this project
MCP342X myADC;

void setup() {
Wire.begin(); // join I2C bus
// TWBR = 12; // 400 kHz (maximum)

Serial.begin(9600); // Open serial connection to send info to the host
while (!Serial) {} // wait for Serial comms to become ready
Serial.println(“Starting up”);
Serial.println(“Testing device connection…”);
Serial.println(myADC.testConnection() ? “MCP342X connection successful” : “MCP342X connection failed”);

myADC.configure( MCP342X_MODE_CONTINUOUS |
MCP342X_CHANNEL_2 |
MCP342X_SIZE_16BIT |
MCP342X_GAIN_1X
);

Serial.println(myADC.getConfigRegShdw(), HEX);

} // End of setup()

void loop() {
static int16_t result;
static int16_t result1;

myADC.startConversion(MCP342X_CHANNEL_1);
myADC.getResult(&result);
Serial.print(“ec:”);
Serial.print(result);

myADC.startConversion(MCP342X_CHANNEL_2);
myADC.getResult(&result1);

Serial.print(" temp:");
Serial.println(result1);
delay(1000);
} // End of loop()

я же скинул код в спойлере

Бл… Это уже не смешно!!!

// Include libraries this sketch will use
#include <Wire.h>
#include <MCP342X.h>

// Instantiate objects used in this project
MCP342X myADC;

void setup() {
Wire.begin(); // join I2C bus
// TWBR = 12; // 400 kHz (maximum)

Serial.begin(9600); // Open serial connection to send info to the host
while (!Serial) {} // wait for Serial comms to become ready
Serial.println(“Starting up”);
Serial.println(“Testing device connection…”);
Serial.println(myADC.testConnection() ? “MCP342X connection successful” : “MCP342X connection failed”);

myADC.configure( MCP342X_MODE_CONTINUOUS |
MCP342X_CHANNEL_2 |
MCP342X_SIZE_16BIT |
MCP342X_GAIN_1X
);

Serial.println(myADC.getConfigRegShdw(), HEX);

} // End of setup()

void loop() {
static int16_t result;
static int16_t result1;

myADC.startConversion(MCP342X_CHANNEL_1);
myADC.getResult(&result);
Serial.print(“ec:”);
Serial.print(result);

myADC.startConversion(MCP342X_CHANNEL_2);
myADC.getResult(&result1);

Serial.print(" temp:");
Serial.println(result1);
delay(1000);
} // End of loop()

действительно работает
а я кнопку искал на панели ещё сильно удивился какого её нету в профильном форуме

Кнопка есть, выглядит так - </>. Иногда ее нужно искать под шестеренкой

А чего же код не в одну строку без пробелов?

Как надо, чтобы нормально читалось
// Include libraries this sketch will use
#include <Wire.h>
#include <MCP342X.h>

// Instantiate objects used in this project
MCP342X myADC;

void setup() {
  Wire.begin(); // join I2C bus
  // TWBR = 12; // 400 kHz (maximum)

  Serial.begin(9600); // Open serial connection to send info to the host
  while (!Serial) {} // wait for Serial comms to become ready
  Serial.println(“Starting up”);
  Serial.println(“Testing device connection…”);
  Serial.println(myADC.testConnection() ? “MCP342X connection successful” : “MCP342X connection failed”);

  myADC.configure( MCP342X_MODE_CONTINUOUS |
                   MCP342X_CHANNEL_2 |
                   MCP342X_SIZE_16BIT |
                   MCP342X_GAIN_1X
                 );

  Serial.println(myADC.getConfigRegShdw(), HEX);

} // End of setup()

void loop() {
  static int16_t result;
  static int16_t result1;

  myADC.startConversion(MCP342X_CHANNEL_1);
  myADC.getResult(&result);
  Serial.print(“ec: ”);
  Serial.print(result);

  myADC.startConversion(MCP342X_CHANNEL_2);
  myADC.getResult(&result1);

  Serial.print(" temp:");
  Serial.println(result1);
  delay(1000);
} // End of loop()

судя по коду, это не результат измерения, а содержимое конфиг регистра, печатаемое строкой 24:

А луп у вас не работает вовсе.

Попробуйте добавить диагностическую печать перед 24 строчкой и после нее, чтобы понять, где именно виснет программа. Только после печати делайте задержку в 1-2 секунды, а то она может не успеть напечататся до зависона.

Код даже компилироваться не будет, опять нам подсовывают не реальный код, а взятый с просторов интернета )))

Serial.println(“Starting up”);
Serial.println(“Testing device connection…”);
Serial.println(myADC.testConnection() ? “MCP342X connection successful” : “MCP342X connection failed”);

Продолжение будет?

вы правы мне знакомый тоже сказал что это вывод регистра и каждой варианта он свой номер имеет типа continous , one shot

проблему решил отпаяв и снова припаяв ацп и она заработала
прям мистика
ибо там если проблема в пайке i2c была то адрес бы мк не видел в итоге
но адрес он непрерывно сканил без ошибок и сбоев в примере на скан шины что говорит о правильном монтаже

это я катушку Мишина включил )))