Le potentiel sur les 2 fils par rapport à la masse sera toujours entre 0 et 3.8v. C'est la DDP entre les fils qui change de signe. @jcp28 vient de faire la mesure.
L'arduino verra sur ses entrées 0 ou 3.8V. Ni plus, ni moins. Il n'y a qu'au freinage qu'il peut y avoir des surprises car le moteur réinjecte du courant via les diodes de roue libre c'est pour ça que je pense qu'il faudrait peut être mettre des diodes en inverse en parallèle sur les entrées de l'Arduino afin de ne pas risquer d'avoir de tension négative.
Comportement typique d'un pont en H, comme le dit @fdufnews, le 0,28 V ne vient pas du moteur, c'est le Vce d'un des transitoires du pont.
C'est facile pour vous, connectez le GND de la carte de réception au GND de l'arduino, les câbles à deux ports numériques libres, un simple "analogRead" auxdits ports avec leurs comparaisons correspondantes résoudra le problème.
Si je résume ....
DFPlayer mini / Arduino Mini
RX, TX => 10, 9
GND => GND + GND carte rc
VCC => VCC
1 fils carte rc sur RX et l'autre sur TX de l'arduino ?
J'ai bien compris cette partie la ^^
" les câbles à deux ports numériques libres, un simple "analogRead" auxdits ports avec leurs comparaisons correspondantes résoudra le problème."
Bien que le dfplayer fonctionne à 5V, ses broches passent à 3,3 V, le 5V de l'arduino pourrait griller la broche RX. Ces deux résistances forment un diviseur de tension et seul le 3V nécessaire parvient au Dfplayer.
Le Dfplayer peut fonctionner à 5V mais dans sa fiche technique il indique une tension typique de 4,2V, avec la diode on l'abaisse d'environ 0,6V et l'alimente à environ 4,4V. Plus proche de sa tension de fonctionnement optimale.
Il est très pratique de connecter le signal "BUSY" du Dfplayer à une broche numérique libre, cela simplifie sa programmation dans de nombreux cas.
Avec cette configuration, un code de base pourrait être :
#include <SoftwareSerial.h>
#include <DFRobotDFPlayerMini.h>
// Connectez le GND de la carte de réception au GND de l'arduino
#define cable1 2 // Connectez le câble un à la broche 2 ou à la plus pratique.
#define cable2 3 // Connectez le câble un à la broche 3 ou à la plus pratique.
#define occupe 4 // Connectez la broche busy du dfplayer à la broche 4 ou à la plus pratique.
SoftwareSerial mySerial(10, 9); // RX, TX
DFRobotDFPlayerMini myDFPlayer;
void setup(){
pinMode (cable1, INPUT);
pinMode (cable2, INPUT);
pinMode (occupe, INPUT);
mySerial.begin(9600);
Serial.begin(115200);
while (!Serial);
Serial.println();
Serial.println(F("DFPlayer Mini Demo"));
Serial.println(F("Initializing DFPlayer ... (May take 3~5 seconds)"));
if (!myDFPlayer.begin(mySerial))
{ //Use softwareSerial to communicate with mp3.
Serial.println(F("Unable to begin:"));
Serial.println(F("1.Please recheck the connection!"));
Serial.println(F("2.Please insert the SD card!"));
while (true);
}
Serial.println(F("DFPlayer Mini online."));
myDFPlayer.volume(30); //Set volume value. From 0 to 30
}
void loop() {
if (digitalRead (cable1) && digitalRead (!cable2) && digitalRead (occupe)) {
myDFPlayer.play(1);
}
if (digitalRead (!cable1) && digitalRead (cable2) && digitalRead (occupe)) {
myDFPlayer.play(2);
}
if (digitalRead (!cable1) && digitalRead (!cable2) && digitalRead (occupe)) {
myDFPlayer.play(3);
}
}
Il faudrait peut-être que @jcp28 nous dise comment il compte alimenter le DFplayer et l'Arduino.
Vu qu'à bord de son véhicule il y a ce qui semble être un accus LiPo.
en faisant plusieurs test avec vos code et ceux de ChatGPT. Me suis dit que j'allais partir sur un truc plus simple.
Ce code démarre bien la piste 1 mais sans prendre en compte la tension donné ...
J'ai testé de débrancher la piste venant de la rc ça change rien. Il démarre de suite la piste 1 et coupe.
// DFPlayer Code pour jouer des fichiers mp3 selon la tension d'entrée
#include <SoftwareSerial.h>
#include <DFRobotDFPlayerMini.h>
SoftwareSerial mySoftwareSerial(A2, A1); // TX, RX
DFRobotDFPlayerMini myDFPlayer ;
void setup() {
mySoftwareSerial.begin(9600) ;
myDFPlayer.begin(mySoftwareSerial) ;
myDFPlayer.volume(10) ; // fixe le son à 10 (maximum)
}
void loop() {
// Lit la tension d'entrée sur la broche A0
int tension = analogRead(A0) ;
// Convertit la valeur analogique en volts
float volts = tension * (5.0 / 1023.0) ;
// Joue un fichier mp3 différent selon la valeur de la tension
if (volts < 3.8) {
myDFPlayer.play(1); // joue le premier fichier mp3
}
delay(500); //pause de 5 secondes
}