Wir ärgern uns immer mehr über störende, grasse Lautstärkeunterschiede beim Fernsehen

Benutzeravatar
Admin
Administrator
Beiträge: 1199
Registriert: Mo 20. Apr 2020, 09:47
Wohnort: 82441 Ohlstadt
Kontaktdaten:

Wir ärgern uns immer mehr über störende, grasse Lautstärkeunterschiede beim Fernsehen

Beitrag von Admin »

Ich ärgere mich seit bestimmt 2 Jahren über sehr extrem Lautstärke Unterschiede beim Fernsehen. Idiotische schrille Musik, die keiner braucht, extrem leises geflüsstere das dann wieder in überfallartige extremlautstärken mündet. Ich weiß nicht was sich diese Idioten denken, wenn sie heute Filme fürs Fernsehen machen. Warscheinlich ist denken bei denen keine Option mehr, mangels Gehirn.

Also, als wir wieder eimal so einen blöden Film um die Ohren hatten, ist mir was eingefallen. Ich wollte keine tolle Technische Meisterleistung, sondern einfach nur ein Geräte, das genau das tut, was ich immer machen muß. Wir haben ja immer die Fernsteuerung in der Hand, und haben die Finger immer auf den beiden Lautstärke Knöpfen. Und drücken uns auf den Tasten die Finger wund, um einigermaßen gleichmässigen Ton zu haben. Da kam sie mir, die Idee, an der ich gerade arbeite. Ein kleines Gerät, dass ich irgendwo am Tisch oder Schrank stehen habe, auf dem ich eine Solllautstärke einstellen kann, und das mit einem Mikro Richtung Fernseher die Lautstärke misst, die uns die Ohren weg weht. Es vergleicht diese Lautstärke mit der eingestellten Soll Laustärke, und schickt ensprechende Fernsteuerbefehle lauter oder leiser zum Fernseher. Unterhalb einer bestimmten Schwelle regelt es nicht mehr leiser, wenn davon auszugehen ist, dass die Lautstärke schnell drastisch erhöht werden kann, und nur gerade eine sehr leise Stelle im Film ist. Wo ich diese Schwelle setze muss ich dann testen. Aber jedenfalls arbeite ich schon dran. Die Beta-Version dürfte bald laufen. In den nächsten Tagen werde ich das alles mal in ein Gehäuse einbauen, das Programm tut auch schon fast was es soll, also ich bin bis jetzt zufrieden. Die IR Steuerung ist gerade noch in Arbeit. Natürlich kann man damit nicht die dreisten Laustärke Überfälle, für die man die Filmemacher eigentlich verklagen sollte, unterdrücken, sondern das Ding macht das selbe wie wir. Wenn die Lautstärke unter der Wunschlautstärke ist, macht das Ding lauter, ist es zu laut, macht es leiser. Aber da das Ding, wie wir auch, nicht hellsehen kann, ist es das selbe wie vorher, nur dass man sich nicht mehr selber die Finger auf den Knöpfen der Fernsteuerung platt drücken muss. Jedenfalls ist das der Wunsch in meinen Gedanken, ob es klappt, werden wir sehen. :oo: :oo:

Servus
Franz
Benutzeravatar
Admin
Administrator
Beiträge: 1199
Registriert: Mo 20. Apr 2020, 09:47
Wohnort: 82441 Ohlstadt
Kontaktdaten:

Re: Wir ärgern uns immer mehr über störende Lautstärke beim Fernsehen

Beitrag von Admin »

Ich komme noch nicht klar mit dem IR-FernsteuerSignal zum Fernseher. Ich hoffe gerade auf Unterstützung in ArduinoCC Forum. Mal schauen obs klappt.
Benutzeravatar
Admin
Administrator
Beiträge: 1199
Registriert: Mo 20. Apr 2020, 09:47
Wohnort: 82441 Ohlstadt
Kontaktdaten:

Re: Wir ärgern uns immer mehr über störende Lautstärke beim Fernsehen

Beitrag von Admin »

Ich habe heute einen Tipp bekommen, der den Durchbruch brachte. Jetzt kann ich mein Gerät fürs erste zusammenbauen. Und dann schaue ich mal wie es funktioniert. Ich dachte eigentlich nicht, dass der Tipp mein Problem beseitigt, aber es war genau das Problem. Ich baue dann morgen mein Testprogramm um, und wenn es dann läuft, setze ich es hier mal rein. Es wird natürlich noch Anpassungen geben, aber Grundsätzlich müßte es morgen laufen.

Morgen mehr.
Franz
Benutzeravatar
Admin
Administrator
Beiträge: 1199
Registriert: Mo 20. Apr 2020, 09:47
Wohnort: 82441 Ohlstadt
Kontaktdaten:

Re: Wir ärgern uns immer mehr über störende Lautstärke beim Fernsehen

Beitrag von Admin »

Ich habe jetzt mal die erste Fassung vom Programm. Das sollte so laufen. Aber ist eine reine Testversion für mich.

Code: Alles auswählen

/* Programm zum Servostrom messen
   So kann man die max. Stromanforderung eines Servos rausfinden
   Der Servo sollte eine eigene, genügend starke Spannungsversorgung haben,
   dass er auch wirklich den Strom ziehen kann, den er benötigt.
   Die Neustart Taste setzt slle Werte zurück,
   und die Messung startet neu.
*/

#include <LiquidCrystal_I2C.h> // LCD Display
LiquidCrystal_I2C lcd(0x3F, 20, 4);
//-------------------------IR-Sender---------------------------------
#include <Arduino.h>
#include "PinDefinitionsAndMore.h" // Makros für Input- und Output-Pin definieren etc.
#include <IRremote.hpp>
uint8_t sCommand = 0x10; // für Volumen + / Oder "0x11" für Volumen -
uint8_t sRepeats = 4;
//----------------------Micro Eingang-------------------------------
const byte ANALOG_PIN = A0; // Hier wird der Name vom Messeingang festgelegt
// Grundlage ist SimpleSender
// IR Sender RC5 minimalisiert für Fernsehsteuerung IR-Pin. ist Pin.3
// -------Einstellungen für Programm--------------------------------
int max1 = 0;      // Der Speicher für den ausgelesenen Analogwert vom Micro
int sollwert = 200;
byte maxaktuell = 0;
unsigned long max2 = 0;   // Der Speicher für den Max-Sammelwert vom ADC
int zaehler = 0;
int tolleranz = 20;
//-----------------------Taster01----------------------------------------
// const byte ist im Programm Constant und byte ist fuer Werte 0-255
const byte Taster01 = 10;           // Pin 15 wird Constant als Taster01 bezeichnet
byte Tasterstatus01 = 0;            // Zum Abfragen des Tatsenpins
unsigned long Sekundenablauf01 = 0; // Tastenabfrage von Taster02 50ms aussetzen
const unsigned long Pausezeit01 = 100;
//-----------------------Taster02---------------------------------------
const byte Taster02 = 11;           // Pin16 wird Constant als Taster02 bezeichnet
byte Tasterstatus02 = 0;
unsigned long Sekundenablauf02 = 0; // Tastenabfrage von Taster02 50ms aussetzen
const unsigned long Pausezeit02 = 100;
//------------------------IR-Sender-------------------------------------
byte gesendet = 0;
unsigned long Sekundenablauf03 = 0; // IR-Sender 5 Sekunden aussetzen
const unsigned long Pausezeit03 = 1000;
//====================================================================================
void setup(void)
{
  Serial.begin(9600);
  pinMode(LED_BUILTIN, OUTPUT);
  IrSender.begin(DISABLE_LED_FEEDBACK);
  lcd.begin();
  lcd.backlight();
  lcd.clear();
  lcd.setCursor (0, 2);
  lcd.print (F("Sollwert ="));
  lcd.setCursor (12, 2);
  lcd.print (sollwert);
  lcd.setCursor (0, 3);
  lcd.print (F("Messwert ="));
  lcd.setCursor (0, 1);
  lcd.print (F("===================="));
  lcd.setCursor (0, 0);
  lcd.print (F("Lautstaerke  Control"));
  //-----------Taster einrichten----------------------------------------
  pinMode(Taster01, INPUT_PULLUP); // Pin 10 fuer Taster01 wird intern auf plus gelegt. Mit GND ueber Taste aktivieren
  pinMode(Taster02, INPUT_PULLUP); // Pin 11 fuer Taster02
}
//===================================================================================
void loop(void) {
  //-----------Taster01 abfragen--------------------------------------------
  if (millis() - Sekundenablauf01 >= Pausezeit01) { // 100msec abgelaufen?
    Tasterstatus01 = digitalRead(Taster01);         // Pin von Taster01 abfragen
    if (Tasterstatus01 == LOW) {     // Ist Taster01 gedrueckt?
      Sekundenablauf01 = millis();                  // Die 100ms neu starten
      sollwert = sollwert - 1;
      lcd.setCursor (12, 2);
      lcd.print ("    ");
      lcd.setCursor (12, 2);
      lcd.print (sollwert);
    }
  }
  //-----------Taster02 abfragen--------------------------------------------
  if (millis() - Sekundenablauf02 >= Pausezeit02) { // 100msec abgelaufen?
    Tasterstatus02 = digitalRead(Taster02);         // Pin von Taster02 abfragen

    if (Tasterstatus02 == LOW) {                    // Ist Taster02 gedrueckt?
      Sekundenablauf02 = millis();                  // Die 100ms neu starten
      sollwert = sollwert + 1;
      lcd.setCursor (12, 2);
      lcd.print ("    ");
      lcd.setCursor (12, 2);
      lcd.print (sollwert);
    }
  }
  //--------------------------- 2500 Durchläufe sind eine Messung -------------------------------
  //---------------------------------- Messung --------------------------------------------------
  max1 = analogRead (ANALOG_PIN); // Analogen Eingang A0 auslesen
  zaehler = zaehler + 1;
  max2 = max2 + max1;
  if (zaehler == 2500)
  {
    max2 = max2 / 2500;
    lcd.setCursor (12, 3);
    lcd.print (F("    "));
    lcd.setCursor (12, 3);
    lcd.print (max2);
    if ((sollwert + tolleranz) <= max2)
    {
      lcd.setCursor (18, 2);
      lcd.print (F("-"));
      gesendet = 2; // Sende einmal IR-Code 6225
    }
    if ((sollwert - tolleranz) >= max2)
    {
      lcd.setCursor (18, 2);
      lcd.print (F("+"));
      gesendet = 1; // Sende einmal IR-Code 4176 gesendet = OK
    }
    if (sollwert <= ((max2 + (tolleranz - 1))) && (sollwert >= (max2 - (tolleranz - 1))))
    {
      lcd.setCursor (18, 2);
      lcd.print (F("#"));
      gesendet = 0; // Sende einmal IR-Code 4176
    }
    zaehler = 0;
    max2 = 0;
  }
  // ------------------IR-Sender-----------------------------------------------------------------
  if (millis() - Sekundenablauf03 >= Pausezeit03)  // 100msec abgelaufen?
  {

    if (gesendet == 1)
    {
      uint8_t sCommand = 0x10; // für Volumen + / Oder "0x11" für Volumen -
      IrSender.sendRC5(0x1, sCommand, sRepeats);
      gesendet = 0;
      delay(25);
      Sekundenablauf03 = millis();
    }
    if (gesendet == 2)
    {
      uint8_t sCommand = 0x11; // für Volumen - / Oder "0x10" für Volumen +
      IrSender.sendRC5(0x1, sCommand, sRepeats);
      gesendet = 0;
      delay(25);
      Sekundenablauf03 = millis();
    }
  }
}
Benutzeravatar
Admin
Administrator
Beiträge: 1199
Registriert: Mo 20. Apr 2020, 09:47
Wohnort: 82441 Ohlstadt
Kontaktdaten:

Re: Wir ärgern uns immer mehr über störende Lautstärke beim Fernsehen

Beitrag von Admin »

Hier habe ich mal meine Schaltung dazu.

Der Micro-Verstärker ist einer den ich noch nicht kenne, meinen bekommt man nicht mehr nach. Ich habe mir den auf der Schaltung mal zum Testen bestellt und werde ja dann sehen, wie er passt. Dieser Verstärker ist ab 5 Volt, das heißt, man spart sich den DC/DC Wandler, und nimmt kein 12 Volt Netzteil, sondern eines mit 5 Volt.

Der Transistor für die IR_LED muss sein, weil die verdammt viel Strom zieht. Ich habe sie mal auf etwa 100mA ausgelegt. Wenn man die nur mit 20mA betreibt, wie so manche LED, dann muss man auf 30cm an den Empfänger, des Fernsehers, dran gehen. Das ist natürlich Schwachsinn. Ein paar Meter sollten schon drinn sein. Ist also alles noch im Versuchsstadium. Diese Transistoren habe ich mir bestellt. So schwaches Zeug habe ich bisher nicht. :)

Ich habe mir auch noch eine komplett Baugruppe bestellt, mit IR Diode und Treibertransistor, für die, die lieber fertige Bauteile benutzen. Das ding ist noch nicht da. Ich teste es dann aber mal, well ich es habe. Der Transistor mit der IR-Diode und den beiden Widerständen, ist dann nur noch eine Baugruppe mit VCC 5V / GND / Signal, Anschlüße.
.
Fernseher Lautstärke Steuerung.JPG
Fernseher Lautstärke Steuerung.JPG (214.92 KiB) 574 mal betrachtet
.
Mikrofon-Verstearker-RBS15405-9_300x300.jpg
Mikrofon-Verstearker-RBS15405-9_300x300.jpg (15.38 KiB) 620 mal betrachtet
IR_npn_transistor_2n2222.jpg
IR_npn_transistor_2n2222.jpg (17.4 KiB) 611 mal betrachtet
Benutzeravatar
Admin
Administrator
Beiträge: 1199
Registriert: Mo 20. Apr 2020, 09:47
Wohnort: 82441 Ohlstadt
Kontaktdaten:

Re: Wir ärgern uns immer mehr über störende Lautstärke beim Fernsehen

Beitrag von Admin »

Hier mal ein Bild vom Display.
Ich kann das Gerät noch nicht zusammenbauen, weil mir das BedienPanel noch fehlt. Aber ich kann ja damit zumindest schon mal arbeiten. Warte aber erst mal auf Material, weil die IR-Diode viel zu wenig Dampf hat. Und der Micro-Verstärker wird vielleicht auch noch getauscht, wenn ich die Neuen habe.
Der Sollwert wird über die zwei Tasten eingestellt. Einfach die obere Taste ist Plus, die untere ist Minus. Bleibt man auf der Taste geht zügig rauf oder runter. Im Display sieht man die derzeitige Lautstärke des Fernseher, (Messwert), und den eingestellten Wert, (Sollwert).
Das "+" Zeichen hinterm Sollwert heißt die Lautstärke des Fernsehers wird gerade angehoben, "-" wird gerade abgesenkt, "#" heist, es ist im Sollbereich. Der Sollbereich ist im Moment + / - 20 vom Sollwert. Also im Display auf dem Bild hier ist der Sollbereich 180 - 220. Im Display sieht man "Sollwert" 200, "Messwert 142, daher ist das Zeichen auf + , also die Lautstärke wird angehoben. Bis sie in der Gegend um 200 ist. Das hier ist jetzt nur mein Arbeitsgehäuse, beim richtigen steht die IR-Diode nicht mehr nach oben raus, sondern nach hinten, wie das Micro auch.
.
Fernseh_Lautstärke_Controller.jpg
Fernseh_Lautstärke_Controller.jpg (452.93 KiB) 596 mal betrachtet
Benutzeravatar
Admin
Administrator
Beiträge: 1199
Registriert: Mo 20. Apr 2020, 09:47
Wohnort: 82441 Ohlstadt
Kontaktdaten:

Re: Wir ärgern uns immer mehr über störende Lautstärke beim Fernsehen

Beitrag von Admin »

Diese IR- Sender sind leider absoluter Schrott. Nur für die Mülltonne. Die habe ich schon eine Zeit lang hier liegen, aber nie getestet. Die haben zwar VCC und GND Versorgung, aber das ist reiner Fake. Der VCC wird überhaupt nicht benutzt. Da sind nur zwei Widerstände gegen GND drauf. Der eine für die IR - Diode, der zweite für die LED, die anzeigt, dass ein Dat. Signal ansteht. Aber beide LED´s zusammen ziehen auf dem DatenPin 20mA. Die IR - Diode hat eine Reichweite von nicht mal einem halben Meter, was klar ist bei 20mA Leistungsanforderung. Das ist reine Verarschung. Man kann das Teil "Dank des niedrigen Strombedarfs" direkt am Ardiono Pin anschließen, aber man kann es auch ruhigen Gewissens direkt in die Tonne tretten!
.
IR-Dioden Schrott.JPG
IR-Dioden Schrott.JPG (14.57 KiB) 565 mal betrachtet
Die IR - Diode müßte 100mA ziehen, bei den kurzen Impulsen (38Khz) eher noch mehr. Es geht nicht ohne Treiber - Transistor wie oben auf der Schaltung. Der Kontrolldiode ist ein Widerstand von 1000 Ohm vorgeschalten, der IR - Diode ein Widerstand von 220 Ohm. Ich habe mich gewundert, dass ich den Fernseher damit nicht ansprechen kann. :(o): :(o):

Ich habe mir mal diese hier bei Reichelt Elektronik bestellt, und denke damit kann man was anfangen, wenn man nicht selber was zusammenlöten will. Ich probiere die Dinger aus.

Nun sitze ich hier und warte, dass meine Bestellungen kommen. :O: .....Freitag kommt das Zeug. :(oo):
Benutzeravatar
Admin
Administrator
Beiträge: 1199
Registriert: Mo 20. Apr 2020, 09:47
Wohnort: 82441 Ohlstadt
Kontaktdaten:

Re: Wir ärgern uns immer mehr über störende, grasse Lautstärkeunterschiede beim Fernsehen

Beitrag von Admin »

Also, diese Reichelt IR-Module sich heute gekommen, und sind suuuuuper, kann ich empfehlen. Habe ich gleich in mein Testgerät eingebaut. Die Steuern den Fernseher geht auch aus der letzten Ecke des Wohnzimmers.

Widerstände, Transistoren, IR-Dioden, zum selber zusammenlöten stehen noch aus, sollen aber am Freitag kommen. Die Micro Verstärker brauchen wohl ein paar Tage länger. Da möchte ich noch testen, ob die Schaltung hier oben gut funktioniert. Wir werden sehen.

Franz

Jetzt fehlt mir nur noch das Alu BedienPanel, dann kann ich das Gerät zusammenbauen. Aber das wird sicher auch bald so weit sein.
Benutzeravatar
Admin
Administrator
Beiträge: 1199
Registriert: Mo 20. Apr 2020, 09:47
Wohnort: 82441 Ohlstadt
Kontaktdaten:

Re: Wir ärgern uns immer mehr über störende, grasse Lautstärkeunterschiede beim Fernsehen

Beitrag von Admin »

OK, Bedienpanel bekommen und natürlich gleich eingebaut. :) :) Das Panel ist noch nicht poliert, aber darum gehts beim Testgerät nicht. Das Plastik-Gehäuse habe ich bei ausfräsen ein wenig verkratzt, weil ich kein Klebeband auf die Kanten geklebt habe. Aber das spielt bei meinem Testgerät alles die zweite Geige. Wichtig ist der Test am Objekt. Ich habe schon mitbekommen, dass die Messung über den Micro-Verstärker ein wenig zu hastig nach oben geht, also es macht Sprünge wenn es ein lautes kurzes Geräusch gibt. Das darf nicht gleich einen Sprung nach oben geben. Es geht langsamm runter, aber noch viel zu schnell Hoch. Aber das wird noch. Ich habe auch die neuen Micro-Verstärker bekommen, da kann ich gleich alles gemeinsam besser abstimmen. Ich habe heute jedenfalls alles bekommen, was ich dafür bestellt habe. Es kann los gehen, mit den Feinheiten. :(oo):
.
Fernseh_Lautstärke_Controller_01.jpg
Fernseh_Lautstärke_Controller_01.jpg (599.85 KiB) 543 mal betrachtet
Benutzeravatar
Admin
Administrator
Beiträge: 1199
Registriert: Mo 20. Apr 2020, 09:47
Wohnort: 82441 Ohlstadt
Kontaktdaten:

Re: Wir ärgern uns immer mehr über störende, grasse Lautstärkeunterschiede beim Fernsehen

Beitrag von Admin »

Hier noch die Rückseite:
Links die IR-Diode, dann die USB für den Arduino UNO, dann die 12 Volt Versorgung, und zuletzt Rechts, das Micro.
.
Fernseh_Lautstärke_Controller_02.jpg
Fernseh_Lautstärke_Controller_02.jpg (260.86 KiB) 540 mal betrachtet
Und das aktuelle Programm, das aber sicher noch weit vom Optimum ist! Ich habe übrigens meine Sonderzeichen für dieses Display in die Definitions-Liste reingepackt, weil ich das "ä" am Display brauche. Natürlich kann man auch nur die Zeile für das "ä" reinhängen.

Code: Alles auswählen

/* Programm zum Servostrom messen
   So kann man die max. Stromanforderung eines Servos rausfinden
   Der Servo sollte eine eigene, genügend starke Spannungsversorgung haben,
   dass er auch wirklich den Strom ziehen kann, den er benötigt.
   Die Neustart Taste setzt slle Werte zurück,
   und die Messung startet neu.
*/

#include <LiquidCrystal_I2C.h> // LCD Display
LiquidCrystal_I2C lcd(0x3F, 20, 4);
//-------------------------IR-Sender---------------------------------
#include <Arduino.h>
#include "PinDefinitionsAndMore.h" // Makros für Input- und Output-Pin definieren etc.
#include <IRremote.hpp>
uint8_t sCommand = 0x10; // für Volumen + / Oder "0x11" für Volumen -
uint8_t sRepeats = 2; // Code 2x wiederholen
//----------------------Micro Eingang-------------------------------
const byte ANALOG_PIN = A0; // Hier wird der Name vom Messeingang festgelegt
// Grundlage ist SimpleSender
// IR Sender RC5 minimalisiert für Fernsehsteuerung IR-Pin. ist Pin.3
// -------Einstellungen für Programm--------------------------------
int max1 = 0;      // Der Speicher für den ausgelesenen Analogwert vom Micro
int sollwert = 300;
byte maxaktuell = 0;
unsigned long max2 = 0;   // Der Speicher für den Max-Sammelwert vom ADC
int zaehler = 0;
int tolleranz = 20;
//----------------Sonderzeichen-------------------
#define OHM   "\xF4"    // Zeichen für Ohm
#define AE    "\xE1"    // Zeichen für "ä"
#define OE    "\xEF"    // Zeichen für "ö"
#define SS    "\xE2"    // Zeichen für "ß"
#define OBEN    "\x5E"    // Zeichen für "hoch"
#define RECHTS   "\176" // Pfeil nach rechts
#define LINKS   "\177"  // Pfeil nach links
#define UE  "\365"      // Zeichen für "ü"
#define GRAD  "\337C"   // Zeichen für "Grad" Celsius
//------------------------------------------------
//-----------------------Taster01--------------------------------------
// const byte ist im Programm Constant und byte ist fuer Werte 0-255
const byte Taster01 = 11;           // Pin 15 wird Constant als Taster01 bezeichnet
byte Tasterstatus01 = 0;            // Zum Abfragen des Tatsenpins
unsigned long Sekundenablauf01 = 0; // Tastenabfrage von Taster02 50ms aussetzen
const unsigned long Pausezeit01 = 100;
//-----------------------Taster02--------------------------------------
const byte Taster02 = 10;           // Pin16 wird Constant als Taster02 bezeichnet
byte Tasterstatus02 = 0;
unsigned long Sekundenablauf02 = 0; // Tastenabfrage von Taster02 50ms aussetzen
const unsigned long Pausezeit02 = 100;
//------------------------IR-Sender------------------------------------
byte senden = 0; // Sendekontrolle 0=Nichts, 1=Volumen+, 2=Volumen-
unsigned long Sekundenablauf03 = 0; // IR-Sender 5 Sekunden aussetzen
const unsigned long Pausezeit03 = 1000;
//=====================================================================
void setup(void)
{
  Serial.begin(9600);
  pinMode(LED_BUILTIN, OUTPUT);
  IrSender.begin(DISABLE_LED_FEEDBACK);
  lcd.begin();
  lcd.backlight();
  lcd.clear();
  lcd.setCursor (0, 2);
  lcd.print (F("Sollwert ="));
  lcd.setCursor (12, 2);
  lcd.print (sollwert);
  lcd.setCursor (0, 3);
  lcd.print (F("Messwert ="));
  lcd.setCursor (0, 1);
  lcd.print (F("===================="));
  lcd.setCursor (0, 0);
  lcd.print (F("Lautst"AE"rke Kontrolle"));
  //-----------Taster einrichten----------------------------------------
  // Taster werden intern auf plus gelegt. Mit GND ueber Taste aktivieren
  pinMode(Taster01, INPUT_PULLUP); // Pin 10 fuer Taster01
  pinMode(Taster02, INPUT_PULLUP); // Pin 11 fuer Taster02
}
//=====================================================================
void loop(void) {
  //-----------Taster01 abfragen----------------------------------------
  if (millis() - Sekundenablauf01 >= Pausezeit01) { // 100msec abgelaufen?
    Tasterstatus01 = digitalRead(Taster01);         // Pin von Taster01 abfragen
    if (Tasterstatus01 == LOW) {     // Ist Taster01 gedrueckt?
      Sekundenablauf01 = millis();                  // Die 100ms neu starten
      sollwert = sollwert - 1;
      lcd.setCursor (12, 2);
      lcd.print ("    ");
      lcd.setCursor (12, 2);
      lcd.print (sollwert);
    }
  }
  //-----------Taster02 abfragen----------------------------------------
  if (millis() - Sekundenablauf02 >= Pausezeit02) { // 100msec abgelaufen?
    Tasterstatus02 = digitalRead(Taster02);         // Pin von Taster02 abfragen

    if (Tasterstatus02 == LOW) {                    // Ist Taster02 gedrueckt?
      Sekundenablauf02 = millis();                  // Die 100ms neu starten
      sollwert = sollwert + 1;
      lcd.setCursor (12, 2);
      lcd.print ("    ");
      lcd.setCursor (12, 2);
      lcd.print (sollwert);
    }
  }
  //------------ 2500 Durchläufe sind eine Messung -----------------
  //---------------------------------- Messung ---------------------
  max1 = analogRead (ANALOG_PIN); // Analogen Eingang A0 auslesen
  zaehler = zaehler + 1;
  max2 = max2 + max1;
  if (zaehler == 2500)
  {
    max2 = max2 / 2500;
    lcd.setCursor (12, 3);
    lcd.print (F("    "));
    lcd.setCursor (12, 3);
    lcd.print (max2);
    if ((sollwert + tolleranz) <= max2)
    {
      lcd.setCursor (18, 2);
      lcd.print (F("-"));
      senden = 2; // Sende einmal IR-Code 0x11
    }
    if ((sollwert - tolleranz) >= max2)
    {
      lcd.setCursor (18, 2);
      lcd.print (F("+"));
      senden = 1; // Sende einmal IR-Code 0x10
    }
    if (sollwert <= ((max2 + (tolleranz - 1))) && (sollwert >= (max2 - (tolleranz - 1))))
    {
      lcd.setCursor (18, 2);
      lcd.print (F("#"));
      senden = 0; // Senden beenden
    }
    zaehler = 0;
    max2 = 0;
  }
  // ------------------IR-Sender------------------------------------
  if (millis() - Sekundenablauf03 >= Pausezeit03)  // 1000msec abgelaufen?
  {

    if (senden == 1)
    {
      uint8_t sCommand = 0x10; // für Volumen + / Oder "0x11" für Volumen -
      IrSender.sendRC5(0x1, sCommand, sRepeats);
      senden = 0;
      delay(25);
      Sekundenablauf03 = millis();
    }
    if (senden == 2)
    {
      uint8_t sCommand = 0x11; // für Volumen - / Oder "0x10" für Volumen +
      IrSender.sendRC5(0x1, sCommand, sRepeats);
      senden = 0;
      delay(25);
      Sekundenablauf03 = millis();
    }
  }
}
Antworten

Zurück zu „Hardware / Schaltungstechnik“

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 4 Gäste