Bonjour à tous
Je suis débutant en arduino "on ne se moque pas " et du coup je pose une question qui peux vous paraitre banale
Je cherche à copier dans un tableau des valeurs de timing qui sont stockées sur une carte SD
J'arrive à relire ces valeurs sur le moniteur série sans problème .
Mais je ne sais pas comment les inclure dans un tableau pour pouvoir les exploiter
tricotin:
Bonjour à tous
Je suis débutant en arduino "on ne se moque pas " et du coup je pose une question qui peux vous paraitre banale
Je cherche à copier dans un tableau des valeurs de timing qui sont stockées sur une carte SD
J'arrive à relire ces valeurs sur le moniteur série sans problème .
Mais je ne sais pas comment les inclure dans un tableau pour pouvoir les exploiter
...
Faut 'il les modifier ou peut ont les exploiter directement ?
Si vous avez une solution par quelque lignes de codes ou un Sketch existant dans lequel il y aurais cette fonction ce serais sympa
Merci d'avance
bonsoir
il faut que tu fasse un truc dans le genre
while (myFile.available()) {
tableauram[I]=myFile.read();
I++;
}
Bonjour, je n'ai pas testé ton code, cependant j'ai constaté quelques petits problèmes.
Tu n'a pas due renseigné correctement le nom du fichier : "myFile = SD.open("toto.txt:",FILE_READ);" il y a un : après le .txt
Ensuite, la fonction read lit caractère par caractère le fichier donc il faut que tu liste tout les caractères de ton nombre jusqu'à la virgule et que tu stock chaque dans une variable temporaire (en travaillant sur une variable int, tu multiplie l'ancienne valeur par 10 et tu ajoute ta nouvelle valeur) et tu te retrouve avec un int qui contient ton nombre jusqu'à la virgule, tu l'insère ensuite dans le tableau, et ainsi de suite.
tricotin:
Bonjour j'ai modifier tout le sketch et j'arrive à relire sur le moniteur série les valeurs qui sont stockées sur la carte
La question que je me pose es que je relis bien un tableau, à priori oui
oui tu relis bien le tableau
un sketch de test ci dessous commente ou decommente l'alimentation du tableau
pas la peine de definir ton tableau en INT il n'est alimenté que par des BYTE
#include <SD.h>
File myFile;
byte valeurs[176]={42,42,42,42,42}; // charge le debut du tableau avec ***** au debut
void setup()
{
Serial.begin(9600);
pinMode(10, OUTPUT);
SD.begin(4);
// Transfert valeurs de SD vers Tableau
myFile = SD.open("toto.txt",FILE_READ);
if (myFile!=false) {
while (myFile.available()) {
for (int lect =0; lect <myFile.size(); lect++) {
// valeurs[lect]= myFile.read(); // lecture sd alimente le tableau
myFile.read(); // lecture sd n'alimente pas le tableau
}
// lecture des valeurs du tableau vers moniteur
for (int i =0; i <myFile.size(); i++) {
Serial.write( valeurs[i]);
}}
}
}
void loop()
{
}
Merci pour ta réponse
Maintenant si je veux que la taille du tableau, "ici 176" , s'affecte automatiquement sans avoir à la rentrer à la main
Es possible ?
tricotin:
Merci pour ta réponse
Maintenant si je veux que la taille du tableau, "ici 176" , s'affecte automatiquement sans avoir à la rentrer à la main
Es possible ?
je ne suis pas assez pointu en "C arduino" pour gerer l'allocation dynamique :
intuitivement je pense que ça doit pouvoir se faire, facilement , je ne sais pas.
si il y a une solution , les petits genies du C vont se manifester
la vraie question etant : est ce que tu a vraiment besoin de cette allocation dynamique ? 8)
tricotin:
...
Ce qui serais génial c'est que je puisse lire ces valeurs et les générer en morse dans un seul sketch à partir de la carte SD
...
Et la je n'y arrive pas ,après plusieurs essais de lecture et de génération sur un seul sketch qui mélange les deux ,j'obtient en sortie de la pin 13 des clignotements dont le timing n'a rien à voir avec ce qu'il devrais être
...
J'ai du oublier ou mélanger quelque chose quelque part mais où ???
Bonjour
je crois l'avoir déjà exposé sur ton topic ou un autre initié par toi
ecrire/relire une chaine de caracteres = (pour demo)
1234 ou 12255 ou autre, n'en fait pas un nombre exploitable (là pour un argument delay)
il faut maintenant que tu transforme les "caracteres" de ton fichier en nombre "exploitable" pour une instruction delay.
soit tu charge l'arduino de faire cette conversion fichier vers valeurs exploitables (lourd)
soit ton fichier sur SD est déjà plus facilement exploitable pour gerer de la valeur facilement utilisable (leger)
j'avais déjà repondu là à ça 8) http://forum.arduino.cc/index.php?topic=216848.msg1602694#msg1602694
Bonjour
Je suis d'accord pour transformer mon fichier SD plus "typé informatique"
byte de poid fort, byte de poid faible pour en faire faiclement un INT
les 2 premiers bytes etant reservés pour dimensionner le tableau
J'ai repris tes termes mais je ne comprend pas tout
byte de poid fort, byte de poids faible ???
Peux tu m'expliquer ça en quelles lignes de code un exemple sera plus parlants pour moi vue que je suis débutant
Merci pour ta patience
tricotin:
Bonjour
Je suis d'accord pour transformer mon fichier SD plus "typé informatique"
byte de poid fort, byte de poid faible pour en faire faiclement un INT
les 2 premiers bytes etant reservés pour dimensionner le tableau
J'ai repris tes termes mais je ne comprend pas tout
byte de poid fort, byte de poids faible ???
Peux tu m'expliquer ça en quelles lignes de code un exemple sera plus parlants pour moi vue que je suis débutant
Merci pour ta patience
tricotin:
bon j'ai convertie sur la SD les valeurs en binaire et après?
Je ne comprend pas quand tu me dit que les deux premiers bit servent à dimensionner le tableau
ou faut 'il que j'écrive ça?
les 2 premiers byte pas bit 8)
ce n'etait qune suggestion , mais si tableau[0] et tableau[1] contiennent la representation (pour en faire un INT)
du nombre de valeur à lire , c'est assez simple ensuite : les valeurs utiles à lire debutent à tableau[2]
Bonjour
Je doit être bête j'ai cherché toute l'apres midi je n'ai pas trouvé
J'ai convertie mon fichier SD en bin
Je suis sur qu'avec quelques lignes de code je comprendrais
tricotin:
Bonjour
Je doit être bête j'ai cherché toute l'apres midi je n'ai pas trouvé
J'ai convertie mon fichier SD en bin
Je suis sur qu'avec quelques lignes de code je comprendrais
voici mon fichier SD
totobin.txt:
110110000010111,
bonjour
pour les lignes de codes , pas mieux que celles de B@tto exposée plus haut.
Je crois surtout que tu n'a pas compris certaines notions
là ce que tu fait avec des 0 et des 1 ce n'est pas faire un fichier facilement exploitable "typé informatique"
tu rentre simplement des caracteres ascii 0 et 1 , ce ne sont pas des valeurs numeriques directement exploitables, comme ce ne l'etait pas plus avec l'ancien.
une tentative d'explication d'un fichier utilisant 2 bytes (poid fort/faible)
les 2 premiers byte (pour faire un INT) representant la longueur utile du fichier à lire ensuite = là 8 byte à suivre soit 4 INT au final.
le fichier toto2.txt est prechargé avec les valeurs decimales 200,300,400,500
explication de la conversion de 500 pour enregistrement vers le fichier.
#include <SD.h>
File myFile;
int valeurs[256];
int val01;
int lfile=0;
byte Bytemsb;
byte Bytelsb;
void setup()
{
Serial.begin(115200);
SD.begin(4);
// Transfert valeurs de SD vers Tableau
myFile = SD.open("toto2.txt",FILE_READ);
if (myFile!=false) {
while (myFile.available()) {
//------------ recherche int longueur tableau
Bytemsb=myFile.read(); // lecture byte MSB
Bytelsb=myFile.read(); // lecture byte LSB
lfile = Bytemsb<<8 | Bytelsb; // reconstitution INT à partir des 2 byte MSB LSB
lfile=lfile/2; // pas s'emmerder avec un modulo 2 pour test :D
Serial.print(" A lire : ");
Serial.print(lfile);
Serial.println(" INT ");
for (int lect =0; lect <lfile; lect++) {
Bytemsb=myFile.read(); // lecture byte MSB
Bytelsb=myFile.read(); // // lecture byte LSB
valeurs[lect] = Bytemsb<<8 | Bytelsb; // reconstitution INT à partir des 2 byte MSB LSB
}
// lecture des valeurs du tableau chargé de la SD vers moniteur
for (int i =0; i <lfile; i++) {
val01=( valeurs[i]);
Serial.print(val01);
Serial.print(" ---> HEX ");
Serial.println(val01,HEX);
}
}
}
}
void loop()
{
}
Bonjour
C'est super sympa de me consacrer quelle que moments
Je vais essayer ça
Juste un petit problème je n'arrive pas à lire toto2.txt à cette adresse http://cjoint.com/14ma/DCdmvj1aGSI.htm
Merci beaucoup
tricotin:
Bonjour
C'est super sympa de me consacrer quelle que moments
Je vais essayer ça
Juste un petit problème je n'arrive pas à lire toto2.txt à cette adresse http://cjoint.com/14ma/DCdmvj1aGSI.htm
Merci beaucoup
faire enregistrer la cible du lien sous sur le lien web
sinon , je l'ai mis en attachement