Je voudrais déclencher l'acquisition de données sur mon Arduino UNO avec l'accéléromètre connecté (MPU 6050) en utilisant Python. L'idée est que lorsque la commande est donnée en Python, l'Arduino commence à enregistrer des données sur sa SRAM et lorsqu'un certain nombre de mesures seront enregistrées, les données seront renvoyées dans un paquet à Python.Déclenchement de l'acquisition de données dans Arduino avec Python
Ceci est mon code actuel Arduino:
#include<Wire.h>
#define MPU6050_DLPF_94HZ MPU6050_DLPF_CFG_2
const int MPU_addr_1 = 0x68; // I2C address of the first MPU-6050
const int baudrate = 19200;
int16_t AcX1; // definition of variables
const int len = 200; // Buffer size
float analogDataArray[len];
int count = 0;
void setup() {
Wire.begin();
Wire.beginTransmission(MPU_addr_1);
Wire.write(0x6B); // PWR_MGMT_1 register
Wire.write(0); // set to zero (wakes up the MPU-6050)
Wire.endTransmission(true);
Serial.begin(baudrate);
}
void loop() {
Wire.beginTransmission(MPU_addr_1);
Wire.write(0x3B); // starting with register 0x3B (ACCEL_XOUT_H)
Wire.endTransmission(false);
Wire.requestFrom(MPU_addr_1, 8, true); // request a total of 14 registers
float AcX1 = Wire.read() << 8 | Wire.read(); // 0x3B (ACCEL_XOUT_H) & 0x3C (ACCEL_XOUT_L)
if (Serial.available())
{
if (Serial.read() == 'Y') {
analogDataArray[count] = AcX1;
count = count + 1;
if (count >= len) {
for (int i; i <= len; i = i + 1) {
Serial.println(analogDataArray[i]/16384);
}
}
count = 0;
}
}
delay(5);
}
et voici mon code Python:
import serial
arduinoData = serial.Serial('COM3', 19200)
com = input('Press "Y":')
arduinoData.write(bytes(com, 'utf-8'))
vec = []
run = True
while run is True:
while (arduinoData.inWaiting() == 0):
pass
arduinoString = arduinoData.readline()
vec.append(float(arduinoString))
if len(vec) >= 100:
run = False
print(vec)
J'ai réussi à le faire fonctionner pour 1 mesure, mais dès que je définissais une tableau à l'intérieur d'Arduino pour enregistrer plusieurs mesures, le code ne fonctionne pas. Je suis sûr que ça marche, mais je ne trouve pas les détails qui m'empêchent de faire ça.
Nous vous remercions de l'aide fournie. Cordialement,
L