Не могу понять, каким образом через ком порт записать данные в EEPROM, т.е. необходимо передать через консоль допустим 10, и чтоб это записалось в выбранную ячейку EEEPROM. Не поделитесь простым скетчем, или советом?
Да, хочу через ком порт отправить число, и записать его в еепром, а потом использовать его в скетче, я тут это, только учусь)))
Код (C++): #include <EEPROM.h> #include <SoftwareSerial.h> int val; int val2; void setup(){ Serial.begin(9600); } void loop(){ if (Serial.available() > 0) { //если число передали то значение больше 0 val = Serial.read();//прочитали число val = val - 48;//получили то число которое ввели, при вводе 0 получаем 48 и мы избавились от этого EEPROM.write(0, val);//записали в первую ячейку (0) val2 = EEPROM.read(0);//прочитали из нее записанное и можем делать что угодно } }
внимание!!! одна ячейка памяти - один байт, то есть значение от 0 до 255 если хотите передать число больше 255, нужно переделать его и всунуть в две ячейки или более
Ага, спасибо большое, примерно начал понимать. Но теперь возник другой вопрос: А как блин, теперь указать эту ячейку, допустим для delay? Думал будет легче, но мозг сломался)))
Сначала хочу разобраться с простой задачей: Допустим я записываю число 254 в 0 ячейку, и хочу, чтоб это число было временем включения 13 пина. Чтоб упростить задачу, просто в цикле.
Код (C++): int Pin = 13; //наш пин void setup() { pinMode(Pin, OUTPUT); // устанавливает режим работы - выход } void loop() { digitalWrite(Pin, HIGH); // включаем delay(val2); // ждет число микросекунд из еепром digitalWrite(ledPin, LOW); // выключаем }
Смотри Если ты(ну если можно на "ты" ) отправляешь в порт число 0, то придет число 48 Если отправить 1, то придет 49 То есть к твоему числу прибавляется 48 и чтобы получить то, что ты ввел нужно 48 отнять
Это связано с тем, что введённое число преобразуется в двоичный код, а потом обратно. А при обратно вот такая фигня. Деталей сам не знаю
Не забудь, что вводить не более 255 и включатся будет на введённое количество микросекунд. Но это можно доработать, чтобы вводить секунды
Код (C++): #include <EEPROM.h> #include <SoftwareSerial.h> int val; int val2; int Pin = 13; void setup(){ Serial.begin(9600); pinMode(Pin, OUTPUT); // устанавливает режим работы - выход } void loop(){ if (Serial.available() > 0) { //если число передали то значение больше 0 val = Serial.read();//прочитали число val = val - 48;//получили то число которое ввели, при вводе 0 получаем 48 и мы избавились от этого EEPROM.write(0, val);//записали в первую ячейку (0) val2 = EEPROM.read(0);//прочитали из нее записанное и можем делать что угодно digitalWrite(Pin, HIGH); // включаем delay(val2); // ждет число микросекунд из еепром digitalWrite(Pin, LOW); // выключаем } } Вот такая фигня получилась, а чтоб диод мигал с заданной в 0 ячкйке частотой? Как в цикл включить?