Close

HadrDisk

Vytvořené odpovědi

Aktuálně je na stránce zobrazen 1 příspěvek (celkem z 1)
  • Autor
    Příspěvky
  • odpověď na: Ovládání a ochrany zesilovače #4387
    HadrDisk
    Účastník

    Trošku upravená verze 0.0002 :))

    int soft = 7; //zapnutí trafa přes odpor
    int tr = 8; //zapnutí trafa bez odporu
    int repro = 9; //zpožděné připojení repro + ochrana před DC
    int buttonPin = 10; //Tlačítko power
    int led = 13; //Kontrolka (při DC na výstupu zesilovače bliká do resetu obvodu)
    int DC1 = analogRead(A0); //ochrana L kanálu
    int DC2 = analogRead(A1); //ochrana P kanálu

    boolean currentState = LOW;//stroage for current button state
    boolean lastState = LOW;//storage for last button state
    boolean ledState = LOW;//storage for the current state of the LED (off/on)

    void setup() {
    pinMode(buttonPin, INPUT);//this time we will set the pin as INPUT
    pinMode(repro, OUTPUT);
    pinMode(soft, OUTPUT);
    pinMode(tr, OUTPUT);
    pinMode(led, OUTPUT);
    Serial.begin(9600);

    }

    void loop() {
    int DC1 = analogRead(A0);
    int DC2 = analogRead(A1);
    Serial.println(DC2); //informace pro nastavení napětí
    delay(100);

    currentState = digitalRead(buttonPin);

    while ((DC1 > 800 && lastState < 800)) {
    digitalWrite(tr, LOW);
    digitalWrite(soft, LOW);
    digitalWrite(repro, LOW);
    digitalWrite(led, HIGH);
    delay(200);
    digitalWrite(led, LOW);
    delay(200);
    }

    while (DC2 > 800 && lastState < 800) {
    digitalWrite(tr, LOW);
    digitalWrite(soft, LOW);
    digitalWrite(repro, LOW);
    digitalWrite(led, HIGH);
    delay(200);
    digitalWrite(led, LOW);
    delay(200);
    }

    if (currentState == HIGH && lastState == LOW) {
    delay(10);//crude form of button debouncing
    if (ledState == HIGH) {
    digitalWrite(repro, LOW);
    delay(200);
    digitalWrite(soft, LOW);
    digitalWrite(led, LOW);
    digitalWrite(tr, LOW);
    ledState = LOW;
    } else {
    digitalWrite(led, HIGH);
    digitalWrite(soft, HIGH);
    delay(1000);
    digitalWrite(tr, HIGH);
    delay(60);
    digitalWrite(soft, LOW);
    delay(3000);
    digitalWrite(repro, HIGH);
    ledState = HIGH;
    }
    }
    lastState = currentState;
    }

    Ocením nějaké návrhy na zjednodušení a případný reset blikající LEDky dlouhým stiskem tlačítka :))

    Předem díky za nápady :))

Aktuálně je na stránce zobrazen 1 příspěvek (celkem z 1)