Bonjour à tous,
Voila je suis entrain de de récupérer des données de ma carte Arduino Méga (là juste l'etat d'un capteur inductif donc 0 ou 1) et j'aimerais également récupérer des données d'un moteur.
J'ai donc une carte pour mon moteur qui se branche en Tx et Rx, que moi j'ai brancher sur l'UART 2 de la Méga (Rx : 17 et Tx : 16).
J'ai pas très bien saisi comment gérer plusieurs ports série ... Donc ma question c'est comment effectuer des Serial.print sur mon deuxieme UART ?
voila mon code arduino :
#include <Wire.h>
#include <EEPROM.h>
#include <Servo.h>
#include "VescUart.h"
#include "datatypes.h"
#include <SoftwareSerial.h>
float Courant=0; // Variables de mesures génératrice moyenée sur 5 mesures
float MotCourant=0; // Temps de latence de la mesure : 500 ms
float Tension=0;
float Puissance=0;
float Duty=0;
float RPM=0;
float KRPM;
int Tacho=0;
bool Capot = A2;
bool openCapot;
void setup() {
// initialize both serial ports:
pinMode(Capot, INPUT);
Serial.begin(9600);
Serial1.begin(9600);
}
struct bldcMeasure measuredValues;
void loop() {
// lis sur l'UART2 (Tx : 16 et Rx : 17)
int i;
i=0; // réinitialisation des variables compteurs
Courant=0;
MotCourant=0;
Tension=0;
Puissance=0;
RPM=0;
Duty=0;
while (i<=4){ // moyennage sur 5 mesures
VescUartGetValue(measuredValues);
delay(30);
Courant=Courant+(measuredValues.avgInputCurrent/5);
MotCourant=MotCourant+(measuredValues.avgMotorCurrent/5);
Tension=Tension+(measuredValues.inpVoltage/5);
Puissance=Puissance+(measuredValues.avgInputCurrent*measuredValues.inpVoltage/5);
RPM=RPM+(measuredValues.rpm/45); // 1 tour = 9 impulsions
Duty=Duty+(measuredValues.dutyCycleNow/5);
Tacho=(measuredValues.tachometer/5);
i++;
}
KRPM=RPM/1000.0;
Serial2.print("Courant: ");
Serial2.println(Courant);
Serial2.print("Courant moteur: ");
Serial2.println(MotCourant);
Serial2.print("Tension: ");
Serial2.println(Tension);
Serial2.print("Puissance: ");
Serial2.println(Puissance);
Serial2.print("Vitesse: ");
Serial2.println(RPM);
Serial2.print("KRPM: ");
Serial2.println(KRPM);
Serial2.print("Duty: ");
Serial2.println(Duty);
Serial2.print("Tacho: ");
Serial2.println(Tacho);
// lis sur le port USB de la machine (UART1)
openCapot = analogRead(A2);
Serial.print("Etat capot = ");
Serial.println(openCapot);
}
J'ai vu qu'on pouvait l'ecrire de tel facon : Serial2.print, est ce bon ?
Pour être plus précise j'utilise un controllino (qui est une arduino Mega)
J'eseper que c'est assez clair