Stránka 1 z 1

ATtiny4313 vs UNO

Napsal: 23 srp 2021, 12:33
od Ludek
Zdravím !!
Prosím, mám zajímavý problém, pro mne nepochopitelný. Potřebuji u tlačítka rozlišit krátký a dlouhý stisk.
Co je triviální v několika variacích.
ALE !!!
Jak to, že mi to šlape na UNU ale na ATtiny4313 né. Zbytek velkého programu šlape, ale toto blbé tlačítko mé :-)
Pouze funkce stisku Short. Druhá funkce Long prostě LED nerozsvítí.
Kde je chyba?

Re: ATtiny4313 vs UNO

Napsal: 23 srp 2021, 13:45
od ondraN
Těžko říct, když nevíme, podle čeho hodnotíš dlouhý a krátký stisk. Pokud podle millis(), tak bych se nejdříve podíval, jestli čítá srávnou rychlostí. Stačí jeden blik LEDkou po 10sec. Na tom se dá poznat i menší odchylka.
Pokud přes interrupt a nějaký timer, může tam byt těch příčin hromada.

Re: ATtiny4313 vs UNO

Napsal: 23 srp 2021, 13:53
od Ludek
OK to mě nenapadlo, jdu kouknout na oscilátor.

Re: ATtiny4313 vs UNO

Napsal: 23 srp 2021, 14:13
od Ludek
Tak jsem to nastavil a bylo to OK, i PWM kontrola, tak nevím...
Funguje to na UNU, na Mini ale na ATtiny4313 ne.

Kód: Vybrat vše

int LED1 = 4;
int LED2 = 3;
int button = 2;

boolean LED1State = false;
boolean LED2State = false;
long buttonTimer = 0;
long longPressTime = 2000;
boolean buttonActive = false;
boolean longPressActive = false;

void setup() {
  pinMode(LED1, OUTPUT);          // LED kratky stisk
  pinMode(LED2, OUTPUT);          // LED dlouhy stisk
  pinMode(button, INPUT);
}

void loop() {
  if (digitalRead(button) == HIGH) {
    if (buttonActive == false) {
      buttonActive = true;
      buttonTimer = millis();
    }
    if ((millis() - buttonTimer > longPressTime) && (longPressActive == false)) {
      longPressActive = true;
 //     LED1State = !LED1State;
 //     digitalWrite(LED1, LED1State);
    }
  } else {
    if (buttonActive == true) {
      if (longPressActive == true) {
        longPressActive = false;
      } else {
        LED2State = !LED2State;
        digitalWrite(LED2, LED2State);
      }
      buttonActive = false;
    }
  } delay(100);
}

Re: ATtiny4313 vs UNO

Napsal: 23 srp 2021, 15:14
od Ludek
Tak jsem to dal do extra přípravku a nastavit FUSE mimo IDE
a už to šlape. díky všem.