Projekte

So verwenden Sie den analogen und digitalen Eingang / Ausgang (I / O) von Arduino

Arduino Tutorial : Using the serial monitor (Februar 2019).

Anonim

So verwenden Sie den analogen und digitalen Eingang / Ausgang (I / O) von Arduino


Der Arduino kann sowohl analoge Signale als auch digitale Signale ein- und ausgeben.

Ein analoges Signal ist ein Signal, das eine beliebige Anzahl von Werten annehmen kann, im Gegensatz zu einem digitalen Signal, das nur zwei Werte aufweist: HIGH und LOW. Um den Wert von analogen Signalen zu messen, verfügt der Arduino über einen integrierten Analog-Digital-Wandler (ADC). Der ADC wandelt die analoge Spannung in einen digitalen Wert um. Die Funktion, die Sie verwenden, um den Wert eines analogen Signals zu erhalten, ist analogRead (pin). Diese Funktion wandelt den Wert der Spannung an einem analogen Eingangspin um und gibt einen digitalen Wert von 0 bis 1023 relativ zum Referenzwert zurück. Die Referenz ist 5V auf den meisten Arduinos, 7V auf dem Arduino Mini und Nano, und 15V auf Arduino Mega. Es hat einen Parameter, der die Pin-Nummer ist.

Der Arduino hat keinen eingebauten Digital-Analog-Wandler (DAC), aber er kann ein digitales Signal pulsbreitenmodulieren (PWM), um einige der Funktionen eines analogen Ausgangs zu erreichen. Die Funktion zur Ausgabe eines PWM-Signals ist analogWrite (Pin, Wert). Pin ist die Pin-Nummer für den PWM-Ausgang. Der Wert ist eine Zahl, die proportional zum Tastverhältnis des Signals ist. Wenn Wert = 0 ist, ist das Signal immer aus. Wenn Wert = 255 ist, ist das Signal immer an. Bei den meisten Arduino-Boards ist die PWM-Funktion an den Pins 3, 5, 6, 9, 10 und 11 verfügbar. Die Frequenz des PWM-Signals an den meisten Pins beträgt ungefähr 490 Hz. Auf den Uno und ähnlichen Platinen haben die Pins 5 und 6 eine Frequenz von ungefähr 980 Hz. Die Pins 3 und 11 am Leonardo laufen ebenfalls mit 980 Hz.

Um einen analogen Eingangswert von 0 bis 1023 auf ein PWM-Ausgangssignal abzubilden, das von 0 - 255 reicht, können Sie die Funktion map (value, fromLow, fromHigh, toLow, toHigh) verwenden. Diese Funktion hat fünf Parameter. Einer ist die Variable, in der der Analogwert gespeichert ist, während die anderen 0, 1023, 0 und 255 sind.

Experiment 1: Steuern der Helligkeit einer LED

In diesem Experiment steuern wir die Helligkeit der LED mit einem PWM-Signal an einem analogen Ausgangspin

Hardware erforderlich

  • 1 x LED
  • 1 x Widerstand
  • 1 x Arduino UNO R3
  • 1 x Steckbrett
  • 2 x Überbrückungskabel


Schaltplan

Wie im Diagramm unten gezeigt, ist eine LED an Pin 2 des Arduino angeschlossen. Um die Helligkeit der LED zu ändern, variiert das Programm das Tastverhältnis des PWM-Signalausgangs von Pin 2.


Code

 const int pwm = 2 ; //initializing pin 2 as 'pwm' variable void setup() { pinMode(pwm, OUTPUT) ; //Set pin 2 as output } void loop() { analogWrite(pwm, 25) ; //setting pwm to 25 delay(50) ; //delay of 50 ms analogWrite(pwm, 50) ; delay(50) ; analogWrite(pwm, 75) ; delay(50) ; analogWrite(pwm, 100) ; delay(50) ; analogWrite(pwm, 125) ; delay(50) ; analogWrite(pwm, 150) ; delay(50) ; analogWrite(pwm, 175) ; delay(50) ; analogWrite(pwm, 200) ; delay(50) ; analogWrite(pwm, 225) ; delay(50) ; analogWrite(pwm, 250) ; } 

Code herunterladen

Experiment 2: LED-Helligkeitsregelung mit einem Potentiometer

In diesem Experiment steuern wir die Helligkeit der LED mit einem Potentiometer. Wir werden mit der Funktion analogRead () eine Spannung und mit der Funktion analogWrite () ein PWM-Signal ausgeben, dessen Tastverhältnis proportional zur Analogspannung ist.

Hardware erforderlich

  • 1 x Potentiometer
  • 1 x LED
  • 1 x Widerstand
  • 1 x Arduino Uno R3
  • 1 x Steckbrett
  • 6 x Überbrückungskabel

Schaltplan

Schließen Sie den Schaltkreis wie unten gezeigt an. Wenn Sie das Potentiometer drehen, ändert sich die Spannung an Pin A0. Das Programm ändert dann das Tastverhältnis des PWM-Signals an Pin 2 und ändert die Helligkeit der LED.

Code

 const int pwm = 2 ; //naming pin 2 as 'pwm' variable const int adc = 0 ; //naming pin 0 of analog input side as 'adc' void setup() { pinMode(pwm, OUTPUT) ; //setting pin 2 as output } void loop() { int adc = analogRead(0) ; //reading analog voltage and storing it in an integer adc = map(adc, 0, 1023, 0, 255); /* ----------map funtion------------the above funtion scales the output of adc, which is 10 bit and gives values btw 0 to 1023, in values btw 0 to 255 form analogWrite funtion which only receives values btw this range */ analogWrite(pwm, adc) ; } 

Code herunterladen

Videos

Gib diesem Projekt einen Versuch für dich selbst! Holen Sie sich die Stückliste.