Stránka 1 z 1

Spinani rele tlakem

Napsal: 07 led 2021, 12:47
od Fab18
Ahoj, mam ted rozdelany projekt spinani rele tlakem. Pouzivam analogovy snimac, rotacni enkoder pro nastavaneni bodu sepnuti a oled displej. Vse mi funguje jak ma ale potreboval bych do kodu nejak zakomponovat ulozeni nastavene hodnoty target do eeprom dlouhym stiskem enkoderu treba 2s a nacteni teto hodnoty po zapnuti arduina. Moje IQ asi uz na toto nebude stacit proto bych potreboval vasi pomoc. Studoval jsem jak pracovat s eeprom ale nejak tomu nerozumim.

Diky vsem za pomoc.

Kód: Vybrat vše

#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SH1106.h>
#include <Encoder.h>
int OLED_RESET = 4;
Adafruit_SH1106 display(OLED_RESET);

#define sensorPin 1
#define relayPin 8

int boostmbar;


//Stores target temp
int target = 0;

//Used for encoder
long oldPosition = 0;
long newPosition = 0;

#define offset 0

//Set encoder pins: pins 2 and 3
Encoder myEnc(2, 3);


void setup() {

  pinMode(relayPin, OUTPUT);
  display.begin(SH1106_SWITCHCAPVCC); // 3.3V power supply
  display.clearDisplay(); // Clear the display and ram // put your setup code here, to run once:


}

void loop() {

  int boostmbar = map(analogRead(sensorPin), 21, 961, 100, 2600);

  if (boostmbar > (target + offset)) {
    digitalWrite(relayPin, HIGH);
  }
  else if (boostmbar < (target - offset)) {
    digitalWrite(relayPin, LOW);
  }


  newPosition = myEnc.read();

  if (newPosition != oldPosition) {
    if (newPosition > oldPosition) {
      target = target + 10;
    } else {
      target = target - 10;
    }
    oldPosition = newPosition;
  }

  display.setTextColor(WHITE);
  display.setTextSize(4);
  display.setCursor(0, 0);
  display.println(boostmbar);
  display.setTextColor(WHITE);
  display.setTextSize(2);
  display.setCursor(30, 40);
  display.println(target);



  delay(10);
  display.display();
  display.clearDisplay();
}