Attiny13a помогите впихнуть код

Great_BAO
Offline
Зарегистрирован: 25.02.2013

Всем привет.

Пишу скетч в Arduino IDE для тиньки, которая должна управлять куллером (оборотами) и подсветкой (яркость) с управлением в одну кнопку.

При зажатии кнопки (полторы секунды), тинька должна переключать управление между кулером и подсветкой.

Кратковременное нажатие меняет режим ШИМ на ноге управления выбранным устрйством с шагом 85 (0, 85, 170, 255)

Ужал код насколько хватило мозгов, но все равно имею на выходе перебор в 32 байта.

#include <Bounce2.h>

const int But = 2;     //пин кнопки
const int LedLed = 3;  //пин статуса светодиода подсветки
const int LedFan = 4;  //пин статуса светодиода кулера
const int pinLed = 0;  //пин подсветки
const int pinFan = 1;  //пин кулера

boolean Select = 0; //выбор режима - 0 = LED , 1 = FAN

int State[] = {0,0};
unsigned long ButTime;

Bounce ButMode = Bounce(But, 50);

void setup() {
  pinMode(But, INPUT);
  pinMode(LedFan, OUTPUT);
  pinMode(LedLed, OUTPUT);
  pinMode(pinLed, OUTPUT);
  pinMode(pinFan, OUTPUT);

  digitalWrite(LedFan, LOW);
  digitalWrite(LedLed, HIGH);
}

void loop() {
  if(ButMode.update()) {
    if(ButMode.read()) {
      ButTime = millis();
    } else {
      if((millis() - ButTime) < 1500) {
        State[Select]++;
        if(State[Select] > 3) State[Select] = 0;
        ButTime = 0;
        analogWrite(Select, State[Select] * 85);
      }
    }
  }
  
  if((ButTime > 0) && ((millis() - ButTime) > 1500)) {
    Select = !Select;
    ButTime = 0;
    digitalWrite(LedLed, !Select);
    digitalWrite(LedFan, Select);
  }
}

Может кто подскажет где и как в коде можно урезать эти 32 байта ?

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016
wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

тема про Тиньку (Attiny13) прикручена в самом начале форума. Вы окулиста и (это не грубость, а беспокойство) психиатора посещали? А надо бы.

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

пины через #define для начала объяви

state byte а не int

и зачем тебе либа?

в 36 строке не делай умножение. переведи десятичные числа необходимого шим в двоичный вид. там скорее всего просто сдвигом можно сделать, ну или как минимум массив с нужными значениями записать и использовать

Great_BAO
Offline
Зарегистрирован: 25.02.2013

Всем спасибо, почитал мануальчики про регистры (каюсь не глянул в начало форума в статью про тиньку13)

Great_BAO
Offline
Зарегистрирован: 25.02.2013

jeka_tm пишет:
пины через #define для начала объяви

А смысл ? конст жрет памяти столько же, а принципиальной разницы я не вижу.