修复ad读取失败
This commit is contained in:
parent
edb98ecff6
commit
2792a8d347
|
@ -8,10 +8,10 @@ ADS1256 adc(clockMHZ, vRef, false);
|
|||
void adc1256_init(void)
|
||||
{
|
||||
SPI.begin();
|
||||
sleep(0.1);
|
||||
sleep(0.5);
|
||||
SPI.beginTransaction(
|
||||
SPISettings(clockMHZ * 1000000 / 4, MSBFIRST, SPI_MODE1));
|
||||
sleep(0.1);
|
||||
sleep(0.5);
|
||||
adc.begin(ADS1256_DRATE_30000SPS, ADS1256_GAIN_1, false);
|
||||
|
||||
Serial.println("ADC Started");
|
||||
|
@ -20,10 +20,19 @@ void adc1256_init(void)
|
|||
adc.setChannel(3);
|
||||
}
|
||||
|
||||
void adc1256_reset(void)
|
||||
{
|
||||
adc.reset();
|
||||
}
|
||||
|
||||
void adc1256_set_channel(uint8_t ch)
|
||||
{
|
||||
adc.setChannel(ch);
|
||||
}
|
||||
|
||||
float adc1256_read(void)
|
||||
{
|
||||
adc.waitDRDY();
|
||||
adc.setChannel(3);
|
||||
// adc.waitDRDY();
|
||||
return adc.readCurrentChannel();
|
||||
}
|
||||
|
||||
|
|
|
@ -3,6 +3,8 @@
|
|||
|
||||
// Function declarations
|
||||
void adc1256_init(void);
|
||||
void adc1256_reset(void);
|
||||
void adc1256_loop(void);
|
||||
float adc1256_read(void);
|
||||
void adc1256_set_channel(uint8_t ch);
|
||||
#endif // ADC1256_H
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
#include <HardwareSerial.h>
|
||||
#include "board.h"
|
||||
#include "adc1256.h"
|
||||
|
||||
void board_init(void)
|
||||
{
|
||||
Serial.begin(115200); // The value does not matter if you use an MCU with native USB
|
||||
|
@ -10,4 +10,5 @@ void board_init(void)
|
|||
}
|
||||
Serial.println("ADS1256 - 2023-12-22");
|
||||
adc1256_init();
|
||||
// motor_init();
|
||||
}
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
#ifndef BOARD_H
|
||||
#define BOARD_H
|
||||
|
||||
#include "adc1256.h"
|
||||
#include "motor.h"
|
||||
// Your code here
|
||||
void board_init(void);
|
||||
|
||||
|
|
38
src/main.cpp
38
src/main.cpp
|
@ -1,6 +1,5 @@
|
|||
#include <Arduino.h>
|
||||
#include "board.h"
|
||||
#include "adc1256.h"
|
||||
|
||||
volatile bool task_adc1256_flag = false;
|
||||
String read_val = ""; // 用于储存串口接收的字符串
|
||||
|
@ -46,12 +45,16 @@ void task_ads(void *pt)
|
|||
|
||||
String part01 = fenge(read_val, ",", 0);
|
||||
String part02 = fenge(read_val, ",", 1);
|
||||
read_val = "";
|
||||
String part03 = fenge(read_val, ",", 2);
|
||||
if (part01 == "r")
|
||||
{
|
||||
adc1256_set_channel(3);
|
||||
if (part02 != "" && part03 != "")
|
||||
{
|
||||
int count = part02.toInt();
|
||||
int delay = part03.toInt();
|
||||
|
||||
int count = part01.toInt();
|
||||
int delay = part02.toInt();
|
||||
|
||||
array = static_cast<float *>(malloc(sizeof(float) * count));
|
||||
array = (float *)malloc(count * sizeof(float));
|
||||
memset(array, 0, sizeof(array));
|
||||
for (i = 0; i < count; i++)
|
||||
{
|
||||
|
@ -71,13 +74,20 @@ void task_ads(void *pt)
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
Serial.println(array[count / 2], 8);
|
||||
task_adc1256_flag = false;
|
||||
|
||||
Serial.printf("r,%.4f", array[count / 2]);
|
||||
free(array);
|
||||
}
|
||||
else
|
||||
{
|
||||
Serial.println("Error: Invalid input");
|
||||
}
|
||||
}
|
||||
|
||||
read_val = "";
|
||||
|
||||
task_adc1256_flag = false;
|
||||
break;
|
||||
}
|
||||
vTaskDelay(100); // 延时100ms
|
||||
}
|
||||
}
|
||||
|
@ -85,6 +95,8 @@ void task_ads(void *pt)
|
|||
void task_serial(void *pt)
|
||||
{
|
||||
for (;;)
|
||||
{
|
||||
if (task_adc1256_flag == false)
|
||||
{
|
||||
while (Serial.available() > 0)
|
||||
{
|
||||
|
@ -95,6 +107,12 @@ void task_serial(void *pt)
|
|||
{
|
||||
task_adc1256_flag = true;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
Serial.read();
|
||||
}
|
||||
|
||||
vTaskDelay(100); // 延时100ms
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,13 @@
|
|||
#include <Arduino.h>
|
||||
#include "motor.h"
|
||||
|
||||
void motor_init(void)
|
||||
{
|
||||
pinMode(PUL, OUTPUT);
|
||||
pinMode(DIR, OUTPUT);
|
||||
}
|
||||
|
||||
void motor_loop(void)
|
||||
{
|
||||
digitalWrite(DIR, LOW); // 先让arduino向驱动板输出一个低电平使其反转。
|
||||
}
|
|
@ -0,0 +1,8 @@
|
|||
#ifndef MOTOR_H
|
||||
#define MOTOR_H
|
||||
#define PUL 35 // CLK 定义9输出端口为 PUL(脉冲信号)
|
||||
#define DIR 34 // CW 定义10输出端口为DIR(方向信号)
|
||||
// Function declarations
|
||||
void motor_init(void);
|
||||
void motor_loop(void);
|
||||
#endif // MOTOR_H
|
Reference in New Issue