Analoog lezen en schrijven met de Arduino Uno

Analog Read and Write Using the Arduino Uno

De Arduino UNO ondersteunt analoge input- en uitvoerbewerkingen, zodat u kunt communiceren met sensoren en actuatoren die precieze waarden nodig hebben. Analoge bewerkingen zijn essentieel voor het besturen van apparaten zoals LED's, motoren en het lezen van inputs van sensoren zoals potentiometers of lichtsensoren. Deze zelfstudie leidt u door de instelling, analoog lezen en schrijven en het gebruik van logische bewerkingen zoals zoals if Uitspraken met analoge gegevens.


Wat u nodig hebt

  1. Arduino Uno met USB -kabel
  2. Potentiometer (of een variabele weerstand) voor analoge ingang
  3. LED en een weerstand van 220-ohm voor analoge uitgang
  4. Breadboard en jumper draden
  5. Een computer met de Arduino Ide geïnstalleerd

Stap 1: Analoge pinnen begrijpen op Arduino

De Arduino UNO heeft zes analoge invoerpennen (A0-A5) die een spanning tussen 0 en 5V kunnen lezen en deze in een digitale waarde tussen 0 en 1023 kunnen converteren. Voor analoge uitvoer gebruikt Arduino PWM (pulsbreedtemodulatie) op bepaalde digitale pinnen op bepaalde digitale pinnen op bepaalde digitale pinnen gemarkeerd met ~ (bijv. 3, 5, 6, 9, 10, 11).

Gebruikte functies

  • Analoge invoer: analogRead(pin)
    • Leest een spanning (0-5V) en retourneert een waarde tussen 0 en 1023.
  • Analoge uitgang: analogWrite(pin, value)
    • Voert een PWM -signaal uit waar value varieert van 0 (0% duty cyclus) tot 255 (100% duty cyclus).

Stap 2: Bedradingsanaloge ingang (potentiometer)

Sluit een potentiometer aan op een Arduino -analoge pin:

Potentiometer pin Arduino -verbinding
1 (eindpen) 5V
2 (midden/output) A0
3 (eindpen) GND

Stap 3: Bedrading Analoge uitgang (LED)

Sluit een LED aan met een weerstand van 220-ohm op een Arduino PWM-pin (bijv. Pin 9):

LED -pin Arduino -verbinding
Longbeen (+) Digitale pin 9
Kort been (-) GND

Stap 4: Analoge invoer lezen

Gebruik de analogRead() Functie om gegevens uit de potentiometer te lezen:

Voorbeeldcode: analoge invoer lezen

#define potPin A0 // Potentiometer connected to A0

void setup() {
  Serial.begin(9600);
  Serial.println("Analog Input Test");
}

void loop() {
  int sensorValue = analogRead(potPin); // Read analog value
  Serial.print("Sensor Value: ");
  Serial.println(sensorValue);
  delay(500); // Wait for half a second
}

Voer de code uit en observeer de potentiometerwaarden (0-1023) in de seriële monitor.


Stap 5: Analoge uitvoer schrijven

Gebruik de analogWrite() functie om de helderheid van een LED te regelen:

Voorbeeldcode: analoge uitvoer naar LED

#define ledPin 9 // LED connected to pin 9

void setup() {
  pinMode(ledPin, OUTPUT); // Set LED pin as output
}

void loop() {
  for (int brightness = 0; brightness <= 255; brightness++) {
    analogWrite(ledPin, brightness); // Increase brightness
    delay(10);
  }

  for (int brightness = 255; brightness >= 0; brightness--) {
    analogWrite(ledPin, brightness); // Decrease brightness
    delay(10);
  }
}

Stap 6: Analoge ingang en uitgang combineren

U kunt analoge ingangswaarden gebruiken om de uitgang te regelen, zoals het aanpassen van LED -helderheid op basis van de positie van de potentiometer.

Voorbeeldcode: Potentiometer regelt LED -helderheid

#define potPin A0 // Potentiometer connected to A0
#define ledPin 9  // LED connected to pin 9

void setup() {
  pinMode(ledPin, OUTPUT);
  Serial.begin(9600);
}

void loop() {
  int sensorValue = analogRead(potPin); // Read potentiometer value

  int brightness = map(sensorValue, 0, 1023, 0, 255); // Map to PWM range
  analogWrite(ledPin, brightness); // Set LED brightness

  Serial.print("Sensor Value: ");
  Serial.print(sensorValue);
  Serial.print(" -> Brightness: ");
  Serial.println(brightness);

  delay(100);
}

Stap 7: gebruiken if Uitspraken met analoge gegevens

U kunt voorwaarden maken met behulp van analoge invoer om specifieke acties uit te voeren:

Voorbeeldcode: voorwaardelijke besturing

#define potPin A0 // Potentiometer connected to A0
#define ledPin 9  // LED connected to pin 9

void setup() {
  pinMode(ledPin, OUTPUT);
  Serial.begin(9600);
}

void loop() {
  int sensorValue = analogRead(potPin);

  if (sensorValue > 512) {
    analogWrite(ledPin, 255); // Full brightness if sensor value > 512
    Serial.println("Bright!");
  } else {
    analogWrite(ledPin, 0); // Turn off LED otherwise
    Serial.println("Off");
  }

  delay(500);
}

Toepassingen van analoog lezen/schrijven

  1. Omgevingssensoren lezen (bijv. Licht, temperatuur, vochtigheid)
  2. Motorsnelheden aanpassen
  3. Het beheersen van LED -helderheid
  4. Audiosignaalverwerking
  5. Het maken van analoge gebaseerde gebruikersinterfaces

Problemen oplossen

  • Onjuiste metingen van de sensor: Zorg voor de juiste bedrading en verifieer de potentiometerverbindingen.
  • LED Licht niet op: Bevestig de LED -oriëntatie en gebruik een weerstand om de stroom te beperken.
  • Uitgang niet soepel: Voeg een kleine vertraging toe of gemiddeld de invoerwaarden voor stabiliteit.

Conclusie

U hebt geleerd hoe u analoge lees- en schrijfbewerkingen kunt uitvoeren met behulp van Arduino UNO, MAP -sensorwaarden voor uitgangen en gebruik if Verklaringen voor voorwaardelijke logica. Deze vaardigheden zijn cruciaal voor het creëren van responsieve, interactieve projecten. Experimenteer verder door andere analoge sensoren en actuatoren te integreren om uw mogelijkheden uit te breiden!

Laat een reactie achter

Notice an Issue? Have a Suggestion?
If you encounter a problem or have an idea for a new feature, let us know! Report a problem or request a feature here.