Buenas noches, dias o tardes, dependiendo cuando lean esto.
Tengo problemas con el estudio de un sensor de movimiento (RCWL-0516), basicamente, solo prende el led cuando me muevo y se apaga cuando no realizo movimiento alguno. Junto a este tengo un Arduino UNO, con el cual deseo crear un buffer de manera que lea 27 muestras con un solapamiento de 1 muestra.
Ejm:
0 1 2 3 … 25 26 (primera lectura)
1 2 3 4 … 26 27 (segunda lectura)
2 3 4 5 … 27 28 (tercera lectura)
y asi sucesivamente, hasta al menos unos 2 segundos.
Hasta el momento desarrolle un codigo código guiandome de posteos que encontre en red y este mismo foro, pero no se como integrarlo a un buffer.
El primero, en teoria, almacena muestras cada por 250 milisegundos, y las convierte a escala de 5V
// Variables de sensor
float analog_out = 0.0;
float coefc_conv = 0.0;
// Variables de tiempo
int tiempo = 250;
unsigned long previoTime = 0;
// SETUP
void setup() {
pinMode(A1, INPUT);
Serial.begin(9600);
delay(500);
coefc_conv = 5.0/1024.0;
}
// LOOP
void loop() {
unsigned long actualTime = millis();
if ((unsigned long)(actualTime - previoTime) <= tiempo) {
analog_out = analogRead(A1)*coefc_conv;
Serial.println(analog_out);
previoTime = actualTime;
}
}
Y este de un buffer que almacena las 27 muestras, pero no se como agregar el analogRead, en loop? o en el mismo setup? (es de una pagina, pero por tiempo aun no me aventure a experimentar con este demasiado)
const int circularBufferLength = 27;
float circularBuffer[circularBufferLength];
int circularBufferIndex = 0;
void appendToBuffer(float value)
{
circularBuffer[circularBufferIndex] = value*(5.0/1024.0);
circularBufferIndex++;
if (circularBufferIndex >= circularBufferLength) circularBufferIndex = 0;
}
void printArray(float* x, int length)
{
for (int iCount = 0; iCount < length; iCount++)
{
Serial.print(x[iCount]);
Serial.print(' ');
}
Serial.println();
}
void setup()
{
pinMode(A1, INPUT);
Serial.begin(9600);
for (int iCount = 0; iCount <= 54; iCount++)
{
appendToBuffer(iCount);
printArray(circularBuffer, circularBufferLength);
}
}
void loop()
{
}
Agradeceria cualquier ayuda y aporte.
Moderador: Titulo editado