Go Down

Topic: Transfere de SD sur tableau (Read 12687 times) previous topic - next topic

tricotin

Feb 23, 2014, 05:39 pm Last Edit: Feb 26, 2014, 11:32 pm by tricotin Reason: 1
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

Merci d'avance

Artouste

#1
Feb 23, 2014, 08:19 pm Last Edit: Feb 23, 2014, 10:18 pm by Artouste Reason: 1

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
Code: [Select]

while (myFile.available()) {
    tableauram[I]=myFile.read();
 I++;
   }

tricotin


timiti29

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.


Voila.
Timiti29

Artouste


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
Code: [Select]

#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()
{

}

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 ?

Artouste



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  :smiley-mr-green:

la vraie question etant : est ce que tu a vraiment besoin de cette allocation dynamique ?  8)

tricotin

#7
Feb 26, 2014, 06:06 pm Last Edit: Feb 26, 2014, 06:08 pm by tricotin Reason: 1
En fait  j'aimerais quand même savoir si c'est possible je ne doute pas que quelqu'un ai la solution
Pour mon projet ça m'aiderai bien

Artouste


En fait  j'aimerais quand même savoir si c'est possible je ne doute pas que quelqu'un ai la solution
Pour mon projet ça m'aiderai bien

regarde là
il y a peut etre du grain à moudre  :smiley-mr-green:
http://forum.arduino.cc/index.php/topic,79652.0.html

Artouste


...
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




tricotin

#10
Feb 28, 2014, 05:08 pm Last Edit: Feb 28, 2014, 05:13 pm by tricotin Reason: 1
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

Artouste


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

regarde ce topic
c'est quasi exactement la meme problematique
B@tto (entre autres) expose comment passer/revenir à un int en fonction de 2 bytes (de poids forts/faibles)
http://forum.arduino.cc/index.php?topic=221923.msg1612993#msg1612993

tricotin

Bonjour
Je te remercie je vais allé voir ça  y'a sûrement là la réponse à mon problème
Merci encore pour ta patience

tricotin

#13
Mar 01, 2014, 06:06 pm Last Edit: Mar 01, 2014, 06:11 pm by tricotin Reason: 1
bon j'ai convertie sur la SD les valeurs en binaire et après? :smiley-eek: :smiley-eek:

Je ne comprend pas quand tu me dit que les deux premiers bit servent à dimensionner le tableau
ou faut 'il que j'écrive ça? :smiley-red: :smiley-red:

Artouste


bon j'ai convertie sur la SD les valeurs en binaire et après? :smiley-eek: :smiley-eek:

Je ne comprend pas quand tu me dit que les deux premiers bit servent à dimensionner le tableau
ou faut 'il que j'écrive ça? :smiley-red: :smiley-red:

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]


Go Up