ARDUINO Интеграция настроек скетча через мобильное приложение.

Strannik

✩✩✩✩✩✩✩
5 Дек 2018
15
0
Итак, есть универсальная плата, в связке которой находится ardiuino nano и bluetooth модуль. Задача, перенести все переменные скетча в постоянную память с возможностью менять эти переменные через мобильное приложение или программу bluetooth terminal. Пример скетча:


C++:
#include <SoftwareSerial.h>
#include <DFPlayer_Mini_Mp3.h>
#include <LCD5110_Basic.h>

//------------------НАСТРОЙКИ------------------—
int volume = 30; //Громкость звука (0-30)
const int threshold = 50; //Порог сработки датчика
const int maxdestroys = 5; //Количество попаданий
//---------------------------------------------—

int Button = 19; //ДИДЖИТАЛ ПОРТ!!!
LCD5110 myGLCD(3,5,6,10,9);
int maxval;
int lives = maxdestroys;

void setup () {
myGLCD.InitLCD();
myGLCD.setFont(SmallFont);
digitalWrite(11, HIGH);
delay(3000);
Serial.begin (9600);
mp3_set_serial (Serial);
mp3_set_volume (volume);
mp3_set_EQ (5);
mp3_play (3);
}

void loop () {
  int val = analogRead(Button);
  if (lives > 0) {
    if (val >= threshold){
      mp3_play (1);
      lives--;
      myGLCD.clrScr();
      myGLCD.invert(true);
      myGLCD.print("SYSTEM ONLINE",CENTER,0);
      myGLCD.print("ANALYSIS:",LEFT,16);
      myGLCD.printNumI(val,54,16);
      myGLCD.print("STRENGTH:",LEFT,24);
      myGLCD.printNumI(lives,54,24);
      myGLCD.print("/",60,24);
      myGLCD.printNumI(maxdestroys,66,24);
      myGLCD.print("DESROY!!!",CENTER,40);
      delay(3500);
      myGLCD.invert(false);
    }else{
      myGLCD.clrScr();
      myGLCD.print("SYSTEM ONLINE",CENTER,0);
      myGLCD.print("ANALYSIS:",LEFT,16);
      myGLCD.printNumI(val,54,16);
      myGLCD.print("STRENGTH:",LEFT,24);
      myGLCD.printNumI(lives,54,24);
      myGLCD.print("/",60,24);
      myGLCD.printNumI(maxdestroys,66,24);
      delay(50);
    }
  } else {
    mp3_play (2);
    myGLCD.clrScr();
    myGLCD.invert(true);
    myGLCD.print("SYSTEM OFFLINE",CENTER,0);
    myGLCD.print("CRITICAL",CENTER,16);
    myGLCD.print("DAMAGE!",CENTER,24);
    delay(12000);
  }
  Serial.println(val);
}
 

PiratFox

★★★★★✩✩
13 Фев 2020
1,722
481
@Strannik, так заюзайте какую-нибудь библиотеку. Скажем, EEPROM2 или подобную. И переносите нужные переменные. Не вижу проблемы. Только имейте ввиду, что ресурс перезаписи внутренней EEPROM ограничен, около 100 тыс. циклов.