Close

Ovládání a ochrany zesilovače

Úvodní stránka Fórum Vaše projekty Arduino Ovládání a ochrany zesilovače

Označeno štítky: 

Aktuálně jsou na stránce zobrazeny 2 příspěvky - 1. až 2. (celkem z 2)
  • Autor
    Příspěvky
  • #4350
    HadrDisk
    Účastník

    Ahoj lidi :)) jelikož jsem zatím absolutní vemeno co se programování týče a několik moudřejších dobrotinců spolu s některými jednoduchými tutoriály mi umožnily vytvořit tento program na zapínání zesilovače spolu s ochranou reproduktorů :)) Tak bych se tu o to chtěl podělit a případně vylepšit podle zkušených ochotných huchů (i děvčat) :))

    int soft = 7;
    int tr = 8;
    int repro = 9;
    int buttonPin = 10;
    int DCpin = 11;
    int led = 13;

    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)
    boolean DCState = LOW;
    boolean cache = HIGH;

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

    }

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

    DCState = digitalRead(DCpin);
    if (DCState == HIGH && lastState == LOW) {
    if (DCState == HIGH)
    digitalWrite(cache, HIGH);
    while (cache == HIGH) {
    digitalWrite(tr, LOW);
    digitalWrite(soft, LOW);
    digitalWrite(repro, LOW);
    digitalWrite(led, HIGH);
    delay(200);
    digitalWrite(led, LOW);
    delay(200);
    }
    }

    if (currentState == HIGH && lastState == LOW) { //if button has just been pressed
    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;
    }

    #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ě jsou na stránce zobrazeny 2 příspěvky - 1. až 2. (celkem z 2)
  • Pro reakci na toto téma se musíte přihlásit.