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: ochrany zesilovače
- Toto téma obsahuje celkem 1 odpověď. Do diskuze (1 diskutující) se naposledy zapojil uživatel
HadrDisk a poslední změna proběhla před 9 roky a 7 měsíci.
-
AutorPříspěvky
-
3.9.2015 v 21:25 #4350
HadrDisk
ÚčastníkAhoj 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 debouncingif (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;
}4.9.2015 v 12:58 #4387HadrDisk
ÚčastníkTroš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áluboolean 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 :))
-
AutorPříspěvky
- Pro reakci na toto téma se musíte přihlásit.