EEPROM и Serial
- Войдите на сайт для отправки комментариев
Ср, 08/03/2017 - 20:31
Доброго времени суток, подскажите, как объеденить EEPROM и данные, выводящиеся в Serial.
int money = 0; //переменная кол-ва денег
int money_old = 0; //переменная старого кол-ва денег
const int buttonPin1 = 13; // порт 1 кнопки
const int buttonPin5 = 2; // порт 2 кнопки
const int buttonPin0 = 12; // порт защиты
int buttonState1 = 0; // статус 1 кнопки
int buttonState5 = 0; // статус 2 кнопки
int buttonState0 = 0; // статус защиты
void setup() {
pinMode(buttonPin1, INPUT); // инициализация 1 кнопки
pinMode(buttonPin5, INPUT); // инициализация 2 кнопки
pinMode(buttonPin0, INPUT); // инициализация защиты
Serial.begin (9600);
}
void loop() {
if (money_old != money) { //печать только при изменении
Serial.println(money); // вывод перменной
delay (100);
money_old = money;
}
delay (200);
buttonState1 = digitalRead(buttonPin1); // читаем положение 1 кнопки
buttonState5 = digitalRead(buttonPin5); // читаем положение 2 кнопки
buttonState0 = digitalRead(buttonPin0); // читаем положение защиты
if (buttonState1 == HIGH) { //если 1 кнопка нажата,
money += 10; // то переменная + 10
}
if (buttonState5 == HIGH) { //если 2 кнопка нажата
if (buttonState0 == LOW) { // и если защита не нажата,
money += 50; // то переменная + 50
}
}
}
дык вы ничего не написали - что вы хотите?
дык вы ничего не написали
я запретил.
как объеденить EEPROM и данные, выводящиеся в Serial.
Какие данные и как сохранять надо?
Если надо вести историю money в рамках одной рабочей сессии прибора, то примерно так:
#include <EEPROM.h> uint16_t startAddr = 0; // стартовый адрес в EEPROM int money = 0; //переменная кол-ва денег int money_old = 0; //переменная старого кол-ва денег const int buttonPin1 = 13; // порт 1 кнопки const int buttonPin5 = 2; // порт 2 кнопки const int buttonPin0 = 12; // порт защиты int buttonState1 = 0; // статус 1 кнопки int buttonState5 = 0; // статус 2 кнопки int buttonState0 = 0; // статус защиты void setup() { pinMode(buttonPin1, INPUT); // инициализация 1 кнопки pinMode(buttonPin5, INPUT); // инициализация 2 кнопки pinMode(buttonPin0, INPUT); // инициализация защиты Serial.begin (9600); } void loop() { if (money_old != money) { //печать только при изменении Serial.println(money); // вывод перменной delay (100); /* Запись в EEPROM */ EEPROM.put(startAddr, money_old); startAddr += sizeof(money_old); /* */ money_old = money; } delay (200); buttonState1 = digitalRead(buttonPin1); // читаем положение 1 кнопки buttonState5 = digitalRead(buttonPin5); // читаем положение 2 кнопки buttonState0 = digitalRead(buttonPin0); // читаем положение защиты if (buttonState1 == HIGH) { //если 1 кнопка нажата, money += 10; // то переменная + 10 } /* вместо if (buttonState5 == HIGH) { //если 2 кнопка нажата if (buttonState0 == LOW) { // и если защита не нажата, красивее будет: */ if ( buttonState5 && !buttonState0 ) money += 50; // то переменная + 50 /* } }*/ }Это совсем в общих. Можно в 0-м адресе хранить на каком адресе в прошлый раз закончилась запись и продолжать, надо предусмотреть переполнение EEPROM и т.д.
Ну и вообще в коде много всякого лишнего и непонятного.