Запись/Чтение моб.Номера
- Войдите на сайт для отправки комментариев
Пнд, 04/07/2016 - 14:09
Сижу вторый сутки с гуглом с форумом и так до меня не дошло..
Вообщем суть такая, пришла смска (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));}
}
Зачем столько переменных? Зачем делай после чтения?
Тебе нужно именно числа как числа записать, или номер как строка тоже подойдет?
Если последнее, то в цикле перебирай строку-массив, изменяй адрес в EEPROM и пиши с помощью EEPROM.write(addr, val);
Таким же макаром можно и читать с помощью value = EEPROM.read(address);
Зачем столько переменных? Зачем делай после чтения?
Тебе нужно именно числа как числа записать, или номер как строка тоже подойдет?
Если последнее, то в цикле перебирай строку-массив, изменяй адрес в EEPROM и пиши с помощью EEPROM.write(addr, val);
Таким же макаром можно и читать с помощью value = EEPROM.read(address);
А как считать в одну переменую (
String NumberGeneral) ячейки с епрома?в каждой ячейки по одному символу получается типа
2='+'
3='3'
4='8'
5='0' и т.д.
Строка = массив.
Строка = массив.
не выходит.. или я не правильно пишу
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)};или я не правильно пишу
Вышеприведённую цитату считать верной!
Еще про циклы почитай тогда.
Ну вот считал с епрома в 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;} }в порт пишет вот так
Ну пол дела есть. Теперь нужно обратно с строки string = "+380997776644" записать в епром по символу в ячейки.Много строк, много переменых, да можно все переложить в циклы, Но тут можно понять что и как работает!
Суть такая: Достать номер телефона с еепром вложить в одну строку 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;} }Чувак, прочитай при циклы, а то очень скоро в ограничение по памяти упрёшься.