Запись/Чтение моб.Номера

CivicEG
Offline
Зарегистрирован: 12.09.2014

Сижу вторый сутки с гуглом с форумом и так до меня не дошло..

Вообщем суть такая, пришла смска (SIM900A) на ардуину, а ардуина должна записать в EEPROM свой номер и отправить в сериал порт номер телефона. Как из переменной стринг записать по байтово в еепром вообще не знаю, но и как из еепром собрать в переменную стринг, что бы вышло "+380661112233" тоже не получается..

 

#include <EEPROM.h>
int LED = 13;
int BUTT = A0;
int Read = 0;
byte T1;
byte T2;
byte T3;
byte T4;
byte T5;
byte T6;
byte T7;
byte T8;
byte T9;
byte T10;
byte T11;
byte T12;
byte T13;
String NumberGeneral = "";

void setup(){
  Serial.begin(9600);
  pinMode(LED, OUTPUT);
  pinMode(BUTT, INPUT);  
}

void loop() {
    
  if (analogRead(BUTT) == HIGH && Read == 0){
    EEPROM.get(2,   T1);delay(4);
    EEPROM.get(3,   T2);delay(4);
    EEPROM.get(4,   T3);delay(4);
    EEPROM.get(5,   T4);delay(4);
    EEPROM.get(6,   T5);delay(4);
    EEPROM.get(7,   T6);delay(4);
    EEPROM.get(8,   T7);delay(4);
    EEPROM.get(9,   T8);delay(4);
    EEPROM.get(10,  T9);delay(4);
    EEPROM.get(11, T10);delay(4);
    EEPROM.get(12, T11);delay(4);
    EEPROM.get(13, T11);delay(4);
    EEPROM.get(14, T12);delay(4);
     Read = 1;
   NumberGeneral = ((T1)&(T2)&(T3)&(T4)&(T5)&(T6)&(T7)&(T8)&(T9)&(T10)&(T11)&(T12)&(T13));
  Serial.println((NumberGeneral));} 
}

 

Radjah
Offline
Зарегистрирован: 06.08.2014

Зачем столько переменных? Зачем делай после чтения?

Тебе нужно именно числа как числа записать, или номер как строка тоже подойдет?

Если последнее, то в цикле перебирай строку-массив, изменяй адрес в EEPROM и пиши с помощью EEPROM.write(addr, val);

Таким же макаром можно и читать с помощью value = EEPROM.read(address);

CivicEG
Offline
Зарегистрирован: 12.09.2014

Radjah пишет:

Зачем столько переменных? Зачем делай после чтения?

Тебе нужно именно числа как числа записать, или номер как строка тоже подойдет?

Если последнее, то в цикле перебирай строку-массив, изменяй адрес в EEPROM и пиши с помощью EEPROM.write(addr, val);

Таким же макаром можно и читать с помощью value = EEPROM.read(address);

А как считать в одну переменую (String NumberGeneral) ячейки с епрома?

в каждой ячейки по одному символу получается типа

2='+'

3='3'

4='8'

5='0' и т.д.

Radjah
Offline
Зарегистрирован: 06.08.2014

Строка = массив.

CivicEG
Offline
Зарегистрирован: 12.09.2014

Radjah пишет:

Строка = массив.

не выходит.. или я не правильно пишу

String myString = {EEPROM.read(2), EEPROM.read(3), EEPROM.read(4), EEPROM.read(5), EEPROM.read(6), EEPROM.read(7), EEPROM.read(8), EEPROM.read(9), EEPROM.read(10), EEPROM.read(11), EEPROM.read(12), EEPROM.read(13), EEPROM.read(14)};

 

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

CivicEG пишет:

 или я не правильно пишу

Вышеприведённую цитату считать верной!

Radjah
Offline
Зарегистрирован: 06.08.2014

Еще про циклы почитай тогда.

CivicEG
Offline
Зарегистрирован: 12.09.2014

Ну вот считал с епрома в char и в порт пишет ровно. НО! в порт не пишет переменную Number которая должна конвертироваться Char в String

#include <EEPROM.h>

char NumberAdmin[13];
String Number;
int i; 
 
void setup(){
  Serial.begin(9600);
}

void loop() {

if (i < 13){  // считываем номер телефона с ЕЕПРОМ
  i++;  
   NumberAdmin[i] = EEPROM.read(i);
  delay(4);
  Serial.println(NumberAdmin[i]);}

if (i == 13){ String str(NumberAdmin);Number=str;Serial.print(Number);Serial.print("!!!");i=14;}
}

в порт пишет вот так

+
3
8
0
9
9
7
7
7
9
9
4
4
!!!
CivicEG
Offline
Зарегистрирован: 12.09.2014
Ну пол дела есть. Теперь нужно обратно с строки string = "+380997776644" записать в епром по символу в ячейки.
CivicEG
Offline
Зарегистрирован: 12.09.2014

Много строк, много переменых, да можно все переложить в циклы, Но тут можно понять что и как работает!

Суть такая: Достать номер телефона с еепром вложить в одну строку string и так же обратно из строки в ячейки памяти.

Берем номер с 0по 12ячейку, а ложим с 20по32ячейку. для наглядности. Может пригодиться кому...

#include <EEPROM.h>

char NumberAdmin[13];
char NumberUser[13];
String Number = "";
String Number2 = "+380662223366";
String N0 = "";
String N1 = "";
String N2 = "";
String N3 = "";
String N4 = "";
String N5 = "";
String N6 = "";
String N7 = "";
String N8 = "";
String N9 = "";
String N10 = "";
String N11 = "";
String N12 = "";

String L0 = "";
String L1 = "";
String L2 = "";
String L3 = "";
String L4 = "";
String L5 = "";
String L6 = "";
String L7 = "";
String L8 = "";
String L9 = "";
String L10 = "";
String L11 = "";
String L12 = "";

char NU0[1];
char NU1[1];
char NU2[1];
char NU3[1];
char NU4[1];
char NU5[1];
char NU6[1];
char NU7[1];
char NU8[1];
char NU9[1];
char NU10[1];
char NU11[1];
char NU12[1];

int i = 0; 
 
void setup(){
  Serial.begin(9600);    

  Serial.print("20 = ");
  Serial.println(EEPROM.read(20));
  Serial.print("21 = ");
  Serial.println(EEPROM.read(21));
  Serial.print("22 = ");
  Serial.println(EEPROM.read(22));
  Serial.print("23 = ");
  Serial.println(EEPROM.read(23));
  Serial.print("24 = ");
  Serial.println(EEPROM.read(24));
  Serial.print("25 = ");
  Serial.println(EEPROM.read(25));
  Serial.print("26 = ");
  Serial.println(EEPROM.read(26));
  Serial.print("27 = ");
  Serial.println(EEPROM.read(27));
  Serial.print("28 = ");
  Serial.println(EEPROM.read(28));
  Serial.print("29 = ");
  Serial.println(EEPROM.read(29));
  Serial.print("30 = ");
  Serial.println(EEPROM.read(30));
  Serial.print("31 = ");
  Serial.println(EEPROM.read(31));
  Serial.print("32 = ");
  Serial.println(EEPROM.read(32));


/*EEPROM.write(0, 0x2b);
  EEPROM.write(1, 0x33); 
  EEPROM.write(2, 0x38);
  EEPROM.write(3, 0x30);
  EEPROM.write(4, 0x39);
  EEPROM.write(5, 0x39);
  EEPROM.write(6, 0x37);
  EEPROM.write(7, 0x37);
  EEPROM.write(8, 0x37);
  EEPROM.write(9, 0x32);
  EEPROM.write(10,0x32);
  EEPROM.write(11,0x34);
  EEPROM.write(12,0x34);
*/
}

void loop() {

if (i == 13){ // Из char переводим в string
 N0 = NumberAdmin[0];
 N1 = NumberAdmin[1]; 
 N2 = NumberAdmin[2]; 
 N3 = NumberAdmin[3];
 N4 = NumberAdmin[4]; 
 N5 = NumberAdmin[5];
 N6 = NumberAdmin[6];
 N7 = NumberAdmin[7]; 
 N8 = NumberAdmin[8];
 N9 = NumberAdmin[9];
 N10 = NumberAdmin[10]; 
 N11 = NumberAdmin[11];
 N12 = NumberAdmin[12];
  
 Number.concat(N0+N1+N2+N3+N4+N5+N6+N7+N8+N9+N10+N11+N12); 
  
  Serial.print("(");
  Serial.print(Number);
  Serial.println(")");
  i=14;}

if (i < 13){  
  NumberAdmin[i] = EEPROM.read(i);
  delay(4);
  Serial.print(NumberAdmin[i]);
  Serial.println(i);
  i++;}


if (i == 14){
 



//Number2.setCharAt(0, '0'); 

 L0 = Number2.charAt(0); 
 L1 = Number2.charAt(1);
 L2 = Number2.charAt(2);
 L3 = Number2.charAt(3);
 L4 = Number2.charAt(4);
 L5 = Number2.charAt(5);
 L6 = Number2.charAt(6);
 L7 = Number2.charAt(7);
 L8 = Number2.charAt(8);
 L9 = Number2.charAt(9);
 L10 = Number2.charAt(10);
 L11 = Number2.charAt(11);
 L12 = Number2.charAt(12);
 
  L0.toCharArray(NU0, 2);
  L1.toCharArray(NU1, 2);
  L2.toCharArray(NU2, 2);
  L3.toCharArray(NU3, 2);
  L4.toCharArray(NU4, 2);
  L5.toCharArray(NU5, 2);
  L6.toCharArray(NU6, 2);
  L7.toCharArray(NU7, 2);
  L8.toCharArray(NU8, 2);
  L9.toCharArray(NU9, 2);
  L10.toCharArray(NU10, 2);
  L11.toCharArray(NU11, 2);
  L12.toCharArray(NU12, 2);

 NumberUser[0]  = L0.charAt(0);
 NumberUser[1]  = L1.charAt(0);
 NumberUser[2]  = L2.charAt(0);
 NumberUser[3]  = L3.charAt(0);
 NumberUser[4]  = L4.charAt(0);
 NumberUser[5]  = L5.charAt(0);
 NumberUser[6]  = L6.charAt(0);
 NumberUser[7]  = L7.charAt(0);
 NumberUser[8]  = L8.charAt(0);
 NumberUser[9]  = L9.charAt(0);
 NumberUser[10] = L10.charAt(0);
 NumberUser[11] = L11.charAt(0);
 NumberUser[12] = L12.charAt(0);
 
/* EEPROM.write(20, NumberUser[0]);
 EEPROM.write(21, NumberUser[1]);
 EEPROM.write(22, NumberUser[2]);
 EEPROM.write(23, NumberUser[3]);
 EEPROM.write(24, NumberUser[4]);
 EEPROM.write(25, NumberUser[5]);
 EEPROM.write(26, NumberUser[6]);
 EEPROM.write(27, NumberUser[7]);
 EEPROM.write(28, NumberUser[8]);
 EEPROM.write(29, NumberUser[9]);
 EEPROM.write(30, NumberUser[10]);
 EEPROM.write(31, NumberUser[11]);
 EEPROM.write(32, NumberUser[12]);
*/
 
 i = 16;}
 
}

 

Radjah
Offline
Зарегистрирован: 06.08.2014

Чувак, прочитай при циклы, а то очень скоро в ограничение по памяти упрёшься.