de:arduino:switch

Differences

This shows you the differences between two versions of the page.

de:arduino:switch [2022/04/21 15:00] ()
 1:  1:
 +{{ :wiki:arduino:switches.png?200|Schalter}}
 +====== Schalter, Drucktasten ======
 +
 +===== Hardwareanschlüsse von Schaltern und Drucktasten =====
 +
 +==== 5V HI aktiver Schalter ====
 +{{anchor:5v_hi_switch}}
 +
 +{{:de:arduino:arduino_switch_hi_act_de.png|Arduino 5V HI aktiver Schalter}} 
 +
 +Das Bild oben zeigt eine HI-Aktive-Switch-Verbindung. Im offenen Ruhezustand des Stromkreises ist der Arduino über einen 10-kΩ-Widerstand (Stripper) mit Masse verbunden, sodass er sich im Zustand "LO" befindet. Durch Drücken der Taste wird das Netzteil an den Eingang angeschlossen (es wird empfohlen, einen 100Ω-Widerstand anzuschließen), sodass es in den Zustand "HI" wechselt.
 +
 +{{:wiki:arduino:button.png|5V HI aktiver Schalter}} \\
 +forrás: https://www.arduino.cc/en/Tutorial/Button
 +
 +Das folgende Beispielprogramm schaltet die eingebaute LED basierend auf dem Status der Drucktaste ein. Unten finden Sie ein Beispielprogramm für einfaches Threading: \\
 +<hidden Klicken Sie hier, um den Code zu entsperren>
 +<code c>
 +/*
 +  Button
 +
 +  Turns on and off a light emitting diode(LED) connected to digital pin 13,
 +  when pressing a pushbutton attached to pin 2.
 +
 +  The circuit:
 +  - LED attached from pin 13 to ground
 +  - pushbutton attached to pin 2 from +5V
 +  - 10K resistor attached to pin 2 from ground
 +
 +  - Note: on most Arduinos there is already an LED on the board
 +    attached to pin 13.
 +
 +  created 2005
 +  by DojoDave <http://www.0j0.org>
 +  modified 30 Aug 2011
 +  by Tom Igoe
 +
 +  This example code is in the public domain.
 +
 +  http://www.arduino.cc/en/Tutorial/Button
 +*/
 +
 +// constants won't change. They're used here to set pin numbers:
 +const int buttonPin = 2;     // the number of the pushbutton pin
 +const int ledPin =  13;      // the number of the LED pin
 +
 +// variables will change:
 +int buttonState = 0;         // variable for reading the pushbutton status
 +
 +void setup() {
 +  // initialize the LED pin as an output:
 +  pinMode(ledPin, OUTPUT);
 +  // initialize the pushbutton pin as an input:
 +  pinMode(buttonPin, INPUT);
 +}
 +
 +void loop() {
 +  // read the state of the pushbutton value:
 +  buttonState = digitalRead(buttonPin);
 +
 +  // check if the pushbutton is pressed. If it is, the buttonState is HIGH:
 +  if (buttonState == HIGH) {
 +    // turn LED on:
 +    digitalWrite(ledPin, HIGH);
 +  } else {
 +    // turn LED off:
 +    digitalWrite(ledPin, LOW);
 +  }
 +}
 +</code>
 +</hidden>
 +
 +\\
 +Das alles prägnanter:
 +
 +<hidden Klicken Sie hier, um den Code zu entsperren>
 +<code c>
 +const int buttonPin = 2;     // the number of the pushbutton pin
 +
 +// variables will change:
 +int buttonState = 0;         // variable for reading the pushbutton status
 +
 +void setup() {
 +  // initialize the pushbutton pin as an input:
 +  pinMode(buttonPin, INPUT);
 +}
 +
 +void loop() {
 +  // read the state of the pushbutton value:
 +  buttonState = digitalRead(buttonPin);
 +
 +  if (buttonState == HIGH) {
 +    // button state on:
 + ;
 +  } else {
 +    // button state off:
 + ;
 +  }
 +}
 +</code>
 +</hidden>
 +
 +==== 5V LO aktiver Schalter ====
 +
 +{{de:arduino:arduino_switch_lo_act_de.png|Arduino 5V LO aktiver Schalter}}
 +
 +Das Bild oben zeigt eine aktive LO-Schalterverbindung. Wenn der Stromkreis offen und in Ruhe ist, wird der Arduino über einen 10-kΩ-Widerstand (Pull-up-Widerstand) an die Stromversorgung angeschlossen (es wird empfohlen, einen 100-k-Widerstand im Voraus anzuschließen), so dass er sich im Zustand //"HI"// befindet. Durch Drücken der Taste wird der Primer mit dem Eingang verbunden, sodass er in den Zustand //"LO"// wechselt.
 +
 +==== Interner Pull-up-Widerstand ====
 +{{anchor:pullup_intern}}
 +
 +Die Arduinoes haben auch einen internen Pull-up-Widerstand, der je nach Platinentyp variiert. Uno reicht von 20 kΩ bis 50 kΩ und wegen 50 kΩ bis 150 kΩ. Dieser interne Widerstand kann auf zwei Arten eingeschaltet werden:
 +
 +Offiziell wie folgt:
 +<hidden Klicken Sie hier, um den Code zu entsperren>
 +
 +<code c>
 +pinMode(pin,INPUT_PULLUP);
 +</code>
 +Dies funktioniert jedoch nicht immer. Auf mehr Boards macht der Compiler einen Fehler. In diesem Fall lautet die Lösung:
 +<code>
 +pinMode(pin, INPUT);           // set pin to input
 +digitalWrite(pin, HIGH);       // turn on pullup resistors
 +</code>
 +</hidden>
 +
 +Natürlich kann mit diesem Verfahren im Vergleich zu einem aktiven 5-V-HI-Schalter mindestens ein Widerstand eingespart werden. Wenn jedoch der Draht zum Schalter lang ist oder große Störungen durch die Umgebung erwartet werden, kann ein hoher Widerstand zu fehlerhaften Erkennungen führen.
 +
 +==== 12V / 24V HI aktiver Schalter ====
 +
 +{{de:arduino:arduino_switch_12v_hi_activ_de.png|12V / 24V HI aktiver Schalter}}
 +
 +Natürlich kann der aktive Arduino 5V HI-Schalter auch bei höheren Versorgungsspannungen verwendet werden, indem Eingangswiderstände installiert werden. Der Kondensator und der 100 Ω-Eingangswiderstand sind optional. Bei einem "problematischen" Eingang ist es auf jeden Fall ratsam, opto zu verwenden, um die kritischen Teile zu trennen.
 +
 +Schalten mit 24V Stromversorgung:
 +\\
 +
 +{{de:arduino:arduino_switch_24v_hi_activ_de.png|24V HI aktiver Schalter}}
 +
 +==== 5V 8 Parallelschalter ====
 +Das folgende Beispiel zeigt das Lesen von 8 Drucktasten über einen Analogeingang. Die Eingangswiderstände der Drucktasten sind um 100 kΩ voneinander getrennt. Wenn diese Taste gedrückt wird, gibt der Eingang einen anderen Wert aus. Standardmäßig ist der Eingangspin über einen halben Megaohm-Widerstand (Scraper) mit Masse verbunden.
 +
 +{{de:arduino:arduino_switch_8_pb_de.png|Arduino 5V 8 Parallelschalter}}
 +
 +Im folgenden Code zeigen das zweizeilige I2C-LCD-Display und der serielle Monitor auch den Code der gedrückten Taste an, wie auf dem Foto gezeigt.
 +
 +Bei ungenauem Betrieb müssen die minimalen Analogwerte (min Array) für die Drucktasten eingestellt werden!
 +
 +Standardausgabe (ohne Knopfdruck): 9.
 +
 +{{:wiki:arduino:my_foto_8_par_pbutton.jpg|5V 8 Parallelschalter}}
 +
 +<hidden Klicken Sie hier, um den Code zu entsperren>
 +<code c>
 +#include <Wire.h>
 +#include <LCD.h>
 +#include <LiquidCrystal_I2C.h>
 +
 +#define I2C_ADDR    0x3F  // Define I2C Address where the PCF8574A is
 +#define BACKLIGHT_PIN     3
 +#define En_pin  2
 +#define Rw_pin  1
 +#define Rs_pin  0
 +#define D4_pin  4
 +#define D5_pin  5
 +#define D6_pin  6
 +#define D7_pin  7
 +
 +int sw = 0;
 +int mins[] = {1024, 1000, 800, 740, 640, 560, 520, 480, 400, -100};
 +
 +LiquidCrystal_I2C  lcd(I2C_ADDR,En_pin,Rw_pin,Rs_pin,D4_pin,D5_pin,D6_pin,D7_pin);
 +
 +int sensorPin = A0;
 +int sensorValue = 0;
 +int ledPin = 13;      // select the pin for the LED
 +
 +void setup() {
 +  pinMode(ledPin, OUTPUT);
 +  Serial.begin(9600);
 +  while (!Serial) ; // wait for serial
 +  delay(200);
 +  lcd.begin (16,2);
 +  
 +// Switch on the backlight
 +  lcd.setBacklightPin(BACKLIGHT_PIN,POSITIVE);
 +  lcd.setBacklight(HIGH);
 +  lcd.home ();                   // go home
 +  lcd.print("button pressed:");
 +  lcd.setCursor ( 0, 1 );        // go to the 1nd line 
 +  lcd.print("      (9:none)");
 +}
 +
 +void loop() {
 +  // read the value from the sensor:
 +  sensorValue = analogRead(sensorPin);
 +  sw = 0;
 +  for (int i = 1; sw == 0; i++) {
 +    if (sensorValue > mins[i]) {
 +      sw = i;
 +    }
 +  }  
 +  Serial.print (sensorValue);
 +  Serial.print (" >> button pressed: ");
 +  Serial.print (sw);
 +  Serial.println (" (9: none) "); 
 +  
 +  lcd.setCursor ( 0, 1 );        // go to the 1nd line 
 +  lcd.print(sw);  
 +   
 +  delay(1000);
 +}
 +</code>
 +</hidden>
 +
 +==== 5V 3-Positionen Wahlschalter ====
 +Ich wollte den Dreistellungsschalter sofort nach einem der Programme durchsuchen und nicht nach einem, sondern nach vier, aber ich hatte nicht mehr so ​​viele freie digitale Pins. Es gab jedoch 4 weitere freie Analogeingänge, die perfekt für diesen Zweck geeignet waren. Nach der folgenden Verbindung ergibt der mit Masse verbundene Eingang 0 bis 5 V 1024 und die mittlere Position ergibt ungefähr 600:
 +
 +{{de:arduino:arduino_3_allasu_kapcsolo_analog_de.png|Arduino 5V 3-Positionen-Wahlschalter über analogen Anschluss gelesen}} 
 +
  
  • de/arduino/switch.txt
  • 2022/04/21 15:00
  • ()