8通道
This commit is contained in:
parent
200baa6f88
commit
b620c5820c
|
@ -9,32 +9,32 @@
|
|||
|
||||
#if defined(__AVR_ATmega328P__) || defined(__AVR_ATmega168__)
|
||||
|
||||
#define pinDRDY 9
|
||||
#define pinRST 8
|
||||
#define pinCS 10
|
||||
#define pinDRDY 9
|
||||
#define pinRST 8
|
||||
#define pinCS 10
|
||||
|
||||
#elif defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__)
|
||||
|
||||
#define pinDRDY 49
|
||||
#define pinRST 48
|
||||
#define pinCS 53
|
||||
#define pinDRDY 49
|
||||
#define pinRST 48
|
||||
#define pinCS 53
|
||||
|
||||
// Contributions are welcome
|
||||
// Contributions are welcome
|
||||
#elif defined(ARDUINO_ARCH_ESP8266)
|
||||
//https://esp8266-shop.com/esp8266-guide/esp8266-nodemcu-pinout/
|
||||
#define pinDRDY D0
|
||||
#define pinRST D1
|
||||
#define pinCS D8 // D8 Hw Cs in esp8266
|
||||
// https://esp8266-shop.com/esp8266-guide/esp8266-nodemcu-pinout/
|
||||
#define pinDRDY D0
|
||||
#define pinRST D1
|
||||
#define pinCS D8 // D8 Hw Cs in esp8266
|
||||
|
||||
#elif defined(ARDUINO_ARCH_ESP32)
|
||||
// Contributions are welcome
|
||||
//https://circuits4you.com/wp-content/uploads/2018/12/ESP32-Pinout.jpg
|
||||
#define pinDRDY 17
|
||||
#define pinRST 16
|
||||
#define pinCS 5 //
|
||||
// Contributions are welcome
|
||||
// https://circuits4you.com/wp-content/uploads/2018/12/ESP32-Pinout.jpg
|
||||
#define pinDRDY 17
|
||||
#define pinRST 16
|
||||
#define pinCS 5 //
|
||||
#else
|
||||
// Contributions are welcome
|
||||
#warning "Oops! Pins for your board are not defined: pinDRDY, pinRST, pinCS"
|
||||
// Contributions are welcome
|
||||
#warning "Oops! Pins for your board are not defined: pinDRDY, pinRST, pinCS"
|
||||
#endif
|
||||
|
||||
// ADS1256 Register address
|
||||
|
@ -123,8 +123,9 @@
|
|||
#include "Arduino.h"
|
||||
#include "SPI.h"
|
||||
|
||||
class ADS1256 {
|
||||
public:
|
||||
class ADS1256
|
||||
{
|
||||
public:
|
||||
ADS1256(float clockspdMhz, float vref, bool useresetpin);
|
||||
void writeRegister(unsigned char reg, unsigned char wdata);
|
||||
unsigned char readRegister(unsigned char reg);
|
||||
|
@ -142,7 +143,7 @@ class ADS1256 {
|
|||
void setGain(uint8_t gain);
|
||||
void readTest();
|
||||
|
||||
private:
|
||||
private:
|
||||
void CSON();
|
||||
void CSOFF();
|
||||
unsigned long read_uint24();
|
||||
|
|
|
@ -9,20 +9,23 @@ void adc1256_init(void)
|
|||
{
|
||||
SPI.begin();
|
||||
sleep(0.5);
|
||||
|
||||
SPI.beginTransaction(
|
||||
SPISettings(clockMHZ * 1000000 / 4, MSBFIRST, SPI_MODE1));
|
||||
sleep(0.5);
|
||||
adc.begin(ADS1256_DRATE_15SPS, ADS1256_GAIN_1, false);
|
||||
adc.sendCommand(ADS1256_CMD_SDATAC);
|
||||
}
|
||||
|
||||
Serial.println("ADC Started");
|
||||
|
||||
// Set MUX Register to AINO-AIN1 so it start doing the ADC conversion
|
||||
adc.setChannel(3);
|
||||
void adc1256_dinit(void)
|
||||
{
|
||||
adc.sendCommand(ADS1256_CMD_SDATAC);
|
||||
SPI.end();
|
||||
Serial.println("ADC Stopped");
|
||||
}
|
||||
|
||||
void adc1256_reset(void)
|
||||
{
|
||||
adc.reset();
|
||||
}
|
||||
|
||||
void adc1256_set_channel(uint8_t ch)
|
||||
|
@ -33,18 +36,23 @@ void adc1256_set_channel(uint8_t ch)
|
|||
|
||||
float adc1256_read(void)
|
||||
{
|
||||
adc.readRegister(ADS1256_RADD_MUX);
|
||||
return adc.readCurrentChannel();
|
||||
}
|
||||
|
||||
void adc1256_loop(void)
|
||||
{
|
||||
float rst;
|
||||
adc.waitDRDY(); // wait for DRDY to go low before changing multiplexer register
|
||||
adc.setChannel(3); // Set the MUX for differential between ch2 and 3
|
||||
rst = adc.readCurrentChannel(); // DOUT arriving here are from MUX AIN0 and AIN1
|
||||
for (int i = 0; i < 8; ++i)
|
||||
{
|
||||
adc.waitDRDY();
|
||||
adc.setChannel(i);
|
||||
Serial.print("Current Channel: ");
|
||||
|
||||
Serial.print(rst, 6);
|
||||
Serial.print("\n");
|
||||
|
||||
delay(1000);
|
||||
Serial.print(i);
|
||||
Serial.print(" MUX: ");
|
||||
Serial.print(adc.readRegister(ADS1256_RADD_MUX), BIN); // Read the Input Multiplexer Control Register to see the current active channels
|
||||
Serial.print(" ADC Value: ");
|
||||
Serial.print(adc.readCurrentChannel());
|
||||
Serial.println();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
|
||||
// Function declarations
|
||||
void adc1256_init(void);
|
||||
void adc1256_dinit(void);
|
||||
void adc1256_reset(void);
|
||||
void adc1256_loop(void);
|
||||
float adc1256_read(void);
|
||||
|
|
|
@ -11,4 +11,5 @@ void board_init(void)
|
|||
Serial.println("ADS1256 - 2023-12-22");
|
||||
adc1256_init();
|
||||
motor_init();
|
||||
Serial.println("初始化完成");
|
||||
}
|
||||
|
|
32
src/main.cpp
32
src/main.cpp
|
@ -33,7 +33,7 @@ String fenge(String str, String fen, int index)
|
|||
|
||||
void task_ads(void *pt)
|
||||
{
|
||||
float array[1000]; // 存储数据
|
||||
float array[8]; // ´æ´¢Êý¾Ý
|
||||
|
||||
uint16_t i = 0, j = 0;
|
||||
float temp = 0;
|
||||
|
@ -74,16 +74,35 @@ void task_ads(void *pt)
|
|||
{
|
||||
motor_limit_on();
|
||||
}
|
||||
else if (read_val == "rst")
|
||||
{
|
||||
// ESP32¸´Î»
|
||||
ESP.restart();
|
||||
}
|
||||
else
|
||||
{
|
||||
Serial.println("¿ªÊ¼¶ÁÈ¡ADC ...");
|
||||
String part01 = fenge(read_val, ",", 0);
|
||||
String part02 = fenge(read_val, ",", 1);
|
||||
String part03 = fenge(read_val, ",", 2);
|
||||
if (part01 == "r")
|
||||
if (part01 == "R")
|
||||
{
|
||||
adc1256_set_channel(3);
|
||||
Serial.printf("r,%.4f", adc1256_read());
|
||||
for (i = 0; i < 8; i++)
|
||||
{
|
||||
adc1256_set_channel(i);
|
||||
vTaskDelay(100); // ÑÓʱ100ms
|
||||
array[i] = adc1256_read();
|
||||
}
|
||||
|
||||
for (i = 0; i < 8; i++)
|
||||
{
|
||||
Serial.printf("%d\t", i);
|
||||
}
|
||||
Serial.println();
|
||||
for (i = 0; i < 8; i++)
|
||||
{
|
||||
Serial.printf("%.4f\t", array[i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -170,12 +189,11 @@ void setup()
|
|||
|
||||
xTaskCreate(task_serial, "task_serial", 1024 * 4, NULL, 1, NULL);
|
||||
xTaskCreate(task_ads, "task_ads", 1024 * 8, NULL, 1, NULL);
|
||||
xTaskCreate(task_motor, "task_motor", 1024 * 8, NULL, 1, NULL);
|
||||
// xTaskCreate(task_motor, "task_motor", 1024 * 8, NULL, 1, NULL);
|
||||
}
|
||||
|
||||
void loop()
|
||||
{
|
||||
// put your main code here, to run repeatedly:
|
||||
|
||||
vTaskDelay(1000);
|
||||
vTaskDelay(3000);
|
||||
}
|
||||
|
|
Reference in New Issue