a) Quelle est la taille de votre fichier txt (en passant, sachez que nommer un fichier "fichier" n'est pas très confortable)
b) Quel arduino utilisez vous (et, avec le programme que vous souhaitez adapter, quelle est la RAM -peut être- disponible?
Dans la UNO, il y a 2K de RAM. C'est pas énorme.
Déjà, pour économiser la RAM, au lieu d'ouvrir les 2 fichiers en même temps et de les traiter l'un après l'autre. Il serait plus économique d'ouvrir un fichier, d'en extraire le contenu et de le fermer, d'ouvrir le deuxième, d'en extraire le contenu et de le fermer.
Maintenant, tu n'as pas posé de question donc qu'est-ce que tu attends de nous?
Bon, je vous ai écrit un bout de code qui
a) met le numero de telephone et l'endroit dans deux tableaux, l'un de 100 cars (telephone), l'autre de 200; faute d'info d'intendance, je parie que ça tiendra; les numeros de telephones sont filtrés (contraints à n'être que des chiffres.
b) sépare la gestion des deux fichiers, pour tenir compte de la remarque -judicieuse- de fdufnews
#include <SoftwareSerial.h>
#include <String.h>
#include <SPI.h>
#include <SD.h>
#define gsm_TX 10
#define gsm_RX 9
SoftwareSerial gsm(gsm_RX, gsm_TX);
const int chipSelect = 4;
char numero[100], endroit[200];
uint8_t lgNumero= 0, lgEndroit=0; // deux indices de remplissage
void setup() {
// met à null les numeros de telephone et l'e,droit (resident en RAM)
Serial.begin(9600);
while (!Serial) {
;
}
Serial.println("Initializing SD card...");
if (!SD.begin(chipSelect)) {
Serial.println("Card failed, or not present");
return;
}
Serial.println("card initialized.");
File tel = SD.open("tel.txt");
String tel1="tel.read";
String message="endroit.read";
if (tel) {
while (tel.available()) {
char c = tel.read();
if ((c >= '0') && (c <= '9')) {
numero[lgNumero] = c;
lgNumero = lgNumero+1;
}
//Serial.write(tel.read());
}
// ecriture de controle
for (uint8_t i = 0; i < lgNumero; i++) Serial.write( numero[i]);
tel.close();
} else {
Serial.println("erreur ouverture tel.txt");
return;
}
File endroit = SD.open("endroit.txt");
if (endroit) {
while (endroit.available()) {
char c = endroit.read(); // on ne controle pas la vraisemblance de c
//Serial.write(endroit.read());
endroit[lgNumero] = c;
lgEndroit = lgEndroit+1;
}
endroit.close();
// ecriture de controle
for (uint8_t i = 0; i < lgEndroit; i++) Serial.write( endroit[i]);
} else {
Serial.println("erreur ouverture endroit");
return;
}
while (!Serial);
gsm.begin(9600);
delay(1000);
Serial.println("Setup fait");
Serial.println("Envoi sms ...");
gsm.write("AT+CMGF=1\r\n");
delay(1000);
String num = "AT+CMGS="+tel1+"\r\n";
gsm.println(num);
delay(1000);
gsm.println(message);
Serial.println(message);
delay(1000);
gsm.write((char)26);
delay(1000);
Serial.println("sms envoyé");
}