Spinani rele tlakem

Nedaří se vám s projektem a nenašli jste vhodné místo, kde se zeptat? Napište sem.
Pravidla fóra
Tohle subfórum je určeno pro konzultaci ucelených nápadů, popřípadě řešení komplexnějších projektů, které opravdu není možné rozdělit na menší části.
Většinu problémů jde rozdělit na menší a ptát se na ně v konkrétních subfórech.
Odpovědět
Fab18
Příspěvky: 3
Registrován: 16 črc 2020, 14:52
Reputation: 0

Spinani rele tlakem

Příspěvek od Fab18 » 07 led 2021, 12:47

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();
}



Odpovědět

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 16 hostů