Untitled

 avatar
unknown
plain_text
a month ago
2.9 kB
8
Indexable
#include <EEPROM.h>
#include <DigiPotX9Cxxx.h>
int maxvalue = 255;
int minvalue = 0;
int butonhiz = 100;

const int buttonPin = 14;
int pwmPin = 9;
DigiPot pot(18, 19, 5);

int buttonState = 0;
int lastButtonState = 0;
unsigned long buttonPressTime = 0;

int value = 0;
bool onOffState = false;

const int eepromAddressLow = 0;
const int eepromAddressHigh = 1;
const int eepromAddressOnOff = 2;
bool buttonok = false;
bool invert = false;

void setup() {
  pinMode(buttonPin, INPUT_PULLUP);
  Serial.begin(115200);

  byte lowByte = EEPROM.read(eepromAddressLow);
  byte highByte = EEPROM.read(eepromAddressHigh);
  value = (highByte << 8) | lowByte;

  if (value < 85)
    value = 85;

  onOffState = EEPROM.read(eepromAddressOnOff) == 1;

  Serial.println("Cihaz Baslatildi");
  Serial.print("Baslangic degeri: ");
  Serial.println(value);

  if (onOffState) {
    Serial.print("Durum: ");
    Serial.println(value);
    pot.set(value);
    analogWrite(pwmPin, value);
    delay(500);
  } else {
    Serial.print("Durum: 0");
    pot.set(0);
    delay(500);
  }
}

void loop() {
  buttonState = digitalRead(buttonPin);

  if (buttonState == LOW) {
    buttonok = true;
    if (lastButtonState == HIGH) {
      buttonPressTime = millis();
    }

    if (millis() - buttonPressTime > 2000) {
      if (invert == false)
        value++;
      else
        value--;

      if (value > maxvalue) {
        invert = true;
      }
      if (value <= minvalue) {
        invert = false;
      }
      delay(butonhiz);
      pot.set(value);
      Serial.print("Deger: ");
      Serial.println(value);
    }
  } else {
    if (lastButtonState == LOW) {
      unsigned long pressDuration = millis() - buttonPressTime;

      if (pressDuration > 2000) {
        byte lowByte = value & 0xFF;
        byte highByte = (value >> 8) & 0xFF;

        EEPROM.write(eepromAddressLow, lowByte);
        EEPROM.write(eepromAddressHigh, highByte);

        Serial.print("Yeni deger EEPROM'a kaydedildi: ");
        Serial.println(value);
      } else {
        if (buttonok) {
          onOffState = !onOffState;

          EEPROM.write(eepromAddressOnOff, onOffState ? 1 : 0);

          if (onOffState) {
            Serial.print("Durum: ");
            Serial.println(value);
            analogWrite(pwmPin, value);
            pot.set(value);

            delay(500);
          } else {
            Serial.print("Durum: 0");
            pot.set(0);
            analogWrite(pwmPin, 0);
            delay(500);
          }
        }
      }

      delay(500);
    }
  }
  delay(30);
  lastButtonState = buttonState;
}

void setPotValue(int value) {
  for (int i = 255; i > 0; i--) {
    pot.decrease(1);
    delay(10);
  }

  for (int i = 0; i < value; i++) {
    pot.increase(1);
    delay(10);
  }
}

void setPotValuelow(int value) {
  for (int i = 255; i > 0; i--) {
    pot.decrease(1);
    delay(10);
  }
}
Leave a Comment