LOCODUINO
Parlons Arduino => Débuter => Discussion démarrée par: LO le février 13, 2019, 07:07:12 pm
-
Bonjour, je prépare mon bac et pour cela, j'ai besoin d'effectuer un programme qui, à l'aide d'un capteur infrarouge (pour capter la vitesse) et un capteur d'intensité, me permettrai de mesurer la consommation d’ampère au cours du temps, de la vitesse, tout en pouvant faire varier la charge tractée, le tout enregistrer sur une carte SD... voilà pour le contexte (sachant que la charge est changée manuellement, donc sans capteur (je sais même pas si ça existe)).
Mon problème est : je suis une débutante au niveau d'Arduino :-[. Voici mon programme :
#include <SPI.h>;
#include <SD.h>;
File fichierSD;
const byte CARTE = 12; //brancher carte sd sur digital 12
const int AnalogIntensite = A0;
const int AnalogRotation = A5;
int Intensiteinitiale = 0;
int Vitesseinitiale = 0;
float Intensite = 0;
float Rotation = 0;
unsigned long t = 0;
void setup() {
Serial.begin(115200);
SD.begin(CARTE);
t = millis();
}
void loop() {
Intensite = analogRead(AnalogIntensite); // la valeur d'intensité varaible est ce qui est lu sur le signal
Rotation = (analogRead(AnalogRotation)/16); //la valeur de la rotation mesuré = au nombre de fois où l'infrarouge lit un trou/ le nombre de trou
Serial.println(Intensite);
Serial.println(Rotation);
//Ouverture du fichier ANALOG
fichierSD = SD.open("analog.txt" , FILE_WRITE);
//Test pour écriture
if(fichierSD) {
Serial.println(F("Ecriture en cours"));
// Ecriture
fichierSD.println("Courant =" (Intensite))( "Rotation(tr/s) =" (Rotation));
fichierSD.close();
}
delay(500);
}
Honnêtement, j'ai travaillé à partir des codes des capteurs fournit par les constructeurs, avec des tutos, et aussi avec des articles de locoduino, mais le programme ne fonctionne toujours pas :-\.
Si quelqu'un pouvait m'aider svp
-
Bonjour,
Pouvez-vous expliquer votre problème, ce que vous attendez, ce que vous n’obtenez pas, les erreurs constatées, quelle application du modéliste ferroviaire est-ce, etc..
Les exemples de Locoduino fonctionnent bien donc vous devriez trouver vos erreurs en comparant.
-
Concrètement, mon programme n'as aucun rapport avec ce qui est ferroviaire :
but du programme : mesurer intensité, vitesse de rotation au cours du temps + les enregistrer sur carte SD
attendus : affichage des valeurs de Intensité et de Rotation sur un fichier bloc-notes d'une carte SD
problèmes : affichage de valeurs de I non correctes (pas possible qu'elles soient produites puisque la batterie qui est relié au moteur ne peut pas fournir une telle intensité)
-
Voici un programme modifié:
#include <SPI.h>;
#include <SD.h>;
File fichierSD;
const byte CARTE = 12; //brancher carte sd sur digital 12
const int AnalogIntensite = A0;
const int AnalogRotation = A5;
float Intensite = 0;
float Rotation = 0;
unsigned long t = 0;
void setup() {
Serial.begin(115200);
SD.begin(CARTE);
t = millis();
}
void loop() {
Intensite = analogRead(AnalogIntensite); // la valeur d'intensité varaible est ce qui est lu sur le signal
Rotation = ((analogRead(AnalogRotation)/16)*100); /*la valeur de la rotation mesuré = au nombre de fois où
l'infrarouge lit un trou/ le nombre de trou*100(conversion en s*/
//Ouverture du fichier ANALOG
fichierSD = SD.open("analog.txt" , FILE_WRITE);
//Test pour écriture
if(fichierSD) {
Serial.println(F("Ecriture en cours"));
// Ecriture
Serial.println("Courant =");
Serial.println(Intensite);
Serial.println("Rotation(tr/s) =");
Serial.println(Rotation);
Serial.println("Temps(m/s)");
Serial.println(t);
fichierSD.close();
}
delay(500);
}
-
J'ai l'impression qu'il manque dans le setup un petit morceau de l'exemple de la référence Arduino.
https://www.arduino.cc/reference/en/language/functions/digital-io/digitalread/
On vous laisse trouver quoi ?
-
Bonsoir
Juste pour être sûr, la lecture de vitesse se fait en comptant les impulsions : un trou dans une roue passe devant un capteur fourche ?
-
Êtes-vous certaine que la carte SD sert à quelque chose ?
On ne pourra sûrement pas vous aider sans le schéma de montage et un peu plus de détails, car on ne voit pas bien ce qui est mesuré toutes les 1/2 secondes.
-
la lecture de vitesse se fait en comptant les impulsions : un trou dans une roue passe devant un capteur fourche ?
/la valeur de la rotation mesuré = au nombre de fois où l'infrarouge lit un trou
Il y a effectivement un problème de logique :
avec une mesure analogique, difficile de compter un nombre de fois ...