Запись в Eeprom

Ivan Tiko
Offline
Зарегистрирован: 22.11.2015

хочу записать данные в Eeprom. Данные посылаются delphi через com порт и в Arduino. Надо ли что-то записать на arduino и если надо, то что чтобы данные полученные через com порт сохранялись в памяти eeprom.

switch
Offline
Зарегистрирован: 07.12.2015

И в чем проблема-то? Надо сделать?

Ivan Tiko
Offline
Зарегистрирован: 22.11.2015

Я не знаю  надо ли что-то записивать и если надо то что.

 

Ivan Tiko
Offline
Зарегистрирован: 22.11.2015

Для записи данных с ком порта в Eeprom надо програмировать Arduino?

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

Ivan Tiko пишет:

Для записи данных с ком порта в Eeprom надо програмировать Arduino?

Нет не надо. Все само запишется, если используется Дельфи.

Ivan Tiko
Offline
Зарегистрирован: 22.11.2015

А есть примеры?

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

Ivan Tiko пишет:

А есть примеры?

Примеры чего? Все сделается само.

Ivan Tiko
Offline
Зарегистрирован: 22.11.2015

Я пытаюсь отправить данные при помощи делфи. Они отправляются  но в Eeprom не сохраняются.

Valera19701
Valera19701 аватар
Онлайн
Зарегистрирован: 18.10.2015

а что то было сделано для записи в eeprom ? :)

Ivan Tiko
Offline
Зарегистрирован: 22.11.2015

Я отпровляю при помощи делфи данные в ком порт ( ардуино видется как ком порт). Данные не сохроняются. Я интересуюсь само ардуино должно быть запрогромированно для чтения данных из ком порта и записи в eeprom

Yarik.Yar
Offline
Зарегистрирован: 07.09.2014

Такое впечатление, что ТС из будущего, где всё само делается...мсье, вы теорию читали? Что такое микроконтроллер, что да как он делает? А то за последствия страшно...

Valera19701
Valera19701 аватар
Онлайн
Зарегистрирован: 18.10.2015

а как сам думаешь?

switch
Offline
Зарегистрирован: 07.12.2015

Вы объясните по-людски что делаете и что хотите получить в итоге. "Записать в epprom" это 1% постановки задачи. Что писать, как, откуда, в каком виде? И при чем тут дельфи? Правильно поставленный вопрос - половина ответа.

Yarik.Yar
Offline
Зарегистрирован: 07.09.2014

Ivan Tiko пишет:

Я отпровляю при помощи делфи данные в ком порт ( ардуино видется как ком порт). Данные не сохроняются. Я интересуюсь само ардуино должно быть запрогромированно для чтения данных из ком порта и записи в eeprom

 

Ппффф....нет, оно само думает.

Интересно, а как вы определили, что в EEPROM ничего не пишется?)

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

ардуине надо считать данные из сериала , а потом сохранить в eeprom ( для неё нужны указания , т.е. программа )
по первой задаче давал ссылку...
вторая задача - полегче будет...

 

Ivan Tiko
Offline
Зарегистрирован: 22.11.2015

Я хочу при помощи делфи отпровлять данные в Arduino и чтобы они сохронялись в памяти eeprom. Поскольку Arduino отображается на моем компьютере как com порт, я нашел программу, написаную на делфи, которая считывает и отпроляет данные на обозначеный com порт. Считывать данные, которые были записаны при помощи ПО Arduino, получается, а вот запизывать данные в eeprom.  Я так понимаю сам Arduino должен обробатовать полученые данные и записывать их в EEprom. Что для этого надо записать на Arduino.

Yarik.Yar
Offline
Зарегистрирован: 07.09.2014

Код, сэр...

Valera19701
Valera19701 аватар
Онлайн
Зарегистрирован: 18.10.2015

Ivan Tiko пишет:

Я хочу при помощи делфи отпровлять данные в Arduino и чтобы они сохронялись в памяти eeprom. Поскольку Arduino отображается на моем компьютере как com порт, я нашел программу, написаную на делфи, которая считывает и отпроляет данные на обозначеный com порт. Считывать данные, которые были записаны при помощи ПО Arduino, получается, а вот запизывать данные в eeprom.  Я так понимаю сам Arduino должен обробатовать полученые данные и записывать их в EEprom. Что для этого надо записать на Arduino.

отделите сначала котлеты от мух :)

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

Что для этого надо записать на Arduino.
записать код , который умеет принимать данные из ComPort и записывать их в EEPROM

ВТОРОЙ раз - покопайся здесь https://yadi.sk/d/tNLCITkDmGwBa 

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

Считывать данные, которые были записаны при помощи ПО Arduino, получается
покажи код ! ....который выводит в сериалМонитор данные принятые от приложения Делфи
ибо до записи в EEPROM осталось полшага....

Yarik.Yar
Offline
Зарегистрирован: 07.09.2014

На периферии решения ходит...)

Logik
Offline
Зарегистрирован: 05.08.2014

Valera19701 пишет:

а что то было сделано для записи в eeprom ? :)

А шо не ясно?! Была создана тема на нужном форуме.

Yarik.Yar
Offline
Зарегистрирован: 07.09.2014

Не знаю чем, но напоминает....

...Вот, изволите видеть, эвристическая машина, -  сказал  старичок,  -
точный электронно-механический прибор для отвечания на  любые  вопросы,  а
именно - на научные и хозяйственные. Как она  у  меня  работает?  Не  имея
достаточно средств и будучи отфутболиваем различными  бюрократами,  она  у
меня не полностью автоматизирована. Вопросы задаются устным образом,  и  я
их печатаю и ввожу ей внутрь, довожу, так  сказать,  до  ейного  сведения.
Отвечание ейное, опять же через неполную автоматизацию, печатаю снова я. В
некотором роде посредник, хе-хе! Так, ежели угодно, прошу...
     Он встал за машинку и шикарным  жестом  перекрыл  тумблер.  В  недрах
машинки загорелась неоновая лампочка.
     - Прошу вас, - сказал старичок.
     - А что у вас там за лампа? - с любопытством спросил Фарфуркис.
     Старичок тут же ударил по клавишам, потом быстро  вырвал  из  машинки
листок бумаги и поднес его Фарфуркису. Фарфуркис прочитал вслух:
     - Что у нея... гм... у нея  внутре  за  лэпэчэ...  Лэпэчэ...  Кэпэдэ,
наверное? Что еще за лэпэчэ?...

братья Стругацкие, "Сказка о Тройке"

Valera19701
Valera19701 аватар
Онлайн
Зарегистрирован: 18.10.2015

++ я Delphi, я все умею :)

Я тучи разгоню руками!! :)

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Ivan Tiko, а зачем Вам делфи?

Пусть ПК сам шлет данные на Ардуину безо всяких делфей!

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

andriano пишет:

Ivan Tiko, а зачем Вам делфи?

Пусть ПК сам шлет данные на Ардуину безо всяких делфей!

как ПК узнает что ему слать на ардуину ? :)

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014

SU-27-16 пишет:

как ПК узнает что ему слать на ардуину ? :)

21 век на дворе. ПК сейчас всё сами умеют делать, без человеков. Искусственный интеллект не дремлет ;-)

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

Jeka_M пишет:

SU-27-16 пишет:

как ПК узнает что ему слать на ардуину ? :)

21 век на дворе. ПК сейчас всё сами умеют делать, без человеков. Искусственный интеллект не дремлет ;-)

блиииииин , утром свой кастрирую до блока питания !!!!! он-то пригодится ? ....

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014

SU-27-16 пишет:

блиииииин , утром свой кастрирую до блока питания !!!!! он-то пригодится ? ....

Ну а как же - ардуинку ним запитывать. А ПК обойдётся, выдавать ему электроэнергию по расписанию. Кто в доме хозяин - человеки или ПК? То-то же....

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

SU-27-16 пишет:

andriano пишет:

Ivan Tiko, а зачем Вам делфи?

Пусть ПК сам шлет данные на Ардуину безо всяких делфей!

как ПК узнает что ему слать на ардуину ? :)

Точно так же, как Ардуина узнает, что ей следует делать с получанным от ПК.

Ivan Tiko
Offline
Зарегистрирован: 22.11.2015

Я пытаюсь записать данные в eeprom.  Нашел код для записи данных, введенных в сам код.

#include <EEPROM.h>
unsigned long a=1111;
unsigned long w;
void setup()
{
 Serial.begin(9600);
}
void loop() {
 
EEPROM.write(0, a & 0xFF);
EEPROM.write(1, (a & 0xFF00) >> 8);
EEPROM.write(2, (a & 0xFF0000) >> 16);
EEPROM.write(3, (a & 0xFF000000) >> 24);
}
byte val = EEPROM.read(3);
w= (w << 8) | val;
val = EEPROM.read(2);
w= (w << 8) | val;
val = EEPROM.read(1);
w= (w << 8) | val;
val = EEPROM.read(0);
w= (w << 8) | val;
Serial.println(w);
}   
Ivan Tiko
Offline
Зарегистрирован: 22.11.2015
И вот такой.
#include <EEPROM.h>
void setup()
{
 Serial.begin(9600);
}
void loop() {
while (Serial.available() == 0);
long q = Serial.read() - '0';
}   
Ivan Tiko
Offline
Зарегистрирован: 22.11.2015

Как сделать чтобы он из второго кода читал данные и вставлял в первый.

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Вы уверены, что правильно написали второй скетч?

А на Ваш вопрос: нужно строчки, делающие необходимую Вам работу, перенести из второго скетча в первый.

Что же касается конкретно Вас, то Вам, чтобы реализовать проект, нужно либо получить хотя бы элементарные познания в программировании, либо нанять исполнителя.

Ivan Tiko
Offline
Зарегистрирован: 22.11.2015

Можете сказать почему после выполнения цыкла переменная q не выводится.

while (Serial.available() == 0);{
unsigned long q = Serial.read() - '0';
}
 
Serial.print(q); 
Coolerr
Offline
Зарегистрирован: 30.06.2014

А как выяснилось что цЫкл выполнился?

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Ivan Tiko пишет:

Можете сказать почему после выполнения цыкла переменная q не выводится.

while (Serial.available() == 0);{
unsigned long q = Serial.read() - '0';
}
 
Serial.print(q); 

Я ведь Вас спрашивал, уверены ли Вы, что скетч написан правильно?

Я бы для определенности вместо одного последнего принта поставил:

Serial.print("[");
Serial.print(q);
Serial.println("]");

 

Ivan Tiko
Offline
Зарегистрирован: 22.11.2015

Проблема в том что компелятор выдает ошибку. Он не может найти переменую q если она находится вне тела цикла.

 

Ivan Tiko
Offline
Зарегистрирован: 22.11.2015
void loop() {
    if (Serial.available() > 0) {  //если есть доступные данные
        // считываем байт
        incomingByte = Serial.read();
 
        // отсылаем то, что получили
        Serial.print("I received: ");
        Serial.println(incomingByte, DEC);
    }

}

Вот ещё один рабочий пример. Но и здесь вывод осуществляется внутри цикла. Как мне использовать переменную вне. 

 

Coolerr
Offline
Зарегистрирован: 30.06.2014

А чем внутри не устраивает? 

Ivan Tiko
Offline
Зарегистрирован: 22.11.2015
EEPROM.write(0, q & 0xFF);
EEPROM.write(1, (q & 0xFF00) >> 8);
EEPROM.write(2, (q & 0xFF0000) >> 16);
EEPROM.write(3, (q & 0xFF000000) >> 24);
 
Я хочу выполнить запись этой переменой в EEPROM, а если выполнять это внутри цикла записывается только последние число переменной.
andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Ivan Tiko пишет:

Проблема в том что компелятор выдает ошибку. Он не может найти переменую q если она находится вне тела цикла.

 

И правильно делает.

Если Вам еужен результат, хранящийся в переменной q, ее следует описывать не внутри цикла, а до него.

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Ivan Tiko пишет:

EEPROM.write(0, q & 0xFF);
EEPROM.write(1, (q & 0xFF00) >> 8);
EEPROM.write(2, (q & 0xFF0000) >> 16);
EEPROM.write(3, (q & 0xFF000000) >> 24);
 
Я хочу выполнить запись этой переменой в EEPROM, а если выполнять это внутри цикла записывается только последние число переменной.

Переменная - сама по себе число. Вероятно, Вы хотите сказать "последний байт переменной".

Но, опять же, я уже говорил, что ошибка, на мой взгляд, содержится не в операторах записи, а в операторах чтения переменной из порта. Выведите ее содержимое в COM-порт, чтобы знать, что именно Вы собираетесь записывать в EEPROM.