Transfere de SD sur tableau

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

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++;
    }

Merci je vais essayer

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

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 :grin:

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

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

tricotin:
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 :grin:
http://forum.arduino.cc/index.php/topic,79652.0.html

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

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

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

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

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

tricotin:
bon j'ai convertie sur la SD les valeurs en binaire et après? :astonished: :astonished:

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

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]

bon je verrais ça demain :roll_eyes: :roll_eyes:
merci quand même

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 :fearful:

voici mon fichier SD

totobin.txt:
110110000010111,
100100111010,
1001011011,
1000110110,
1001011010,
1000110110,
1001011011,
1000110110,
1001011011,
1000110110,
1001011010,
1000110110,
1001011011,
1000110110,
1001011010,
1000110101,
1001011011,
10011000000,
1001000001,
1001010000,
1001000000,
1001010001,
1001000000,
1001010000,
1001000000,
1000110110,
110110000100110,

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 :fearful:

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.

toto2.txt
http://cjoint.com/14ma/DCdmvj1aGSI.htm

et un bout de code rapide

#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

toto2.txt (26 Bytes)