Lettura e scrittura digitale utilizzando Arduino Uno

Digital Read and Write Using the Arduino Uno

Arduino Uno offre la capacità di interagire con il mondo reale utilizzando i suoi pin digitali. È possibile utilizzare questi pin per controllare dispositivi come LED, motori e relè o leggi input da sensori, pulsanti e switch. Questo tutorial spiegherà come impostare i pin digitali, eseguire operazioni di lettura e scrittura e utilizzare if Dichiarazioni per le decisioni basate sulla logica nei tuoi progetti.


Cosa avrai bisogno

  1. Arduino Uno con cavo USB
  2. LED e una resistenza da 220 ohm (per esempi di output)
  3. Pulsante e una resistenza da 10k-ohm (per esempi di input)
  4. Breadboard e fili jumper
  5. Un computer con l'IDE Arduino installato

Passaggio 1: impostare pin digitali

Modalità per pin digitali

Arduino Uno ha 14 pin digitali (D0-D13). Questi pin possono essere configurati come:

  • Ingresso: Per leggere i segnali da sensori o switch.
  • Produzione: Per controllare i LED, i motori o altri attuatori.

Usare il pinMode() funzione per impostare la modalità di un pin in setup() funzione:

pinMode(pinNumber, mode);
  • pinNumber: Il pin che si desidera configurare (ad es., 2, 3, ecc.).
  • mode: O INPUT, INPUT_PULLUP, O OUTPUT.

Passaggio 2: scrivere su un perno digitale

Puoi controllare i dispositivi scrivendo HIGH O LOW a un pin di output usando il file digitalWrite() funzione:

digitalWrite(pinNumber, value);
  • value: O HIGH (5V) o LOW (0V).

Esempio: lampeggiare un LED

Ecco come sbattere le palpebre un LED collegato al pin 13:

#define ledPin 13 // LED connected to pin 13

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

void loop() {
  digitalWrite(ledPin, HIGH); // Turn the LED on
  delay(1000);               // Wait for 1 second
  digitalWrite(ledPin, LOW);  // Turn the LED off
  delay(1000);               // Wait for 1 second
}

Passaggio 3: leggere da un perno digitale

Per leggere lo stato di un pin, usa il digitalRead() funzione:

int state = digitalRead(pinNumber);
  • state: Sarà nemmeno HIGH O LOW in base al segnale di ingresso.

Esempio: lettura di un pulsante Premere

Collegare un pulsante per il pin 2 con un resistore a discesa (10k-ohm). Quando viene premuto, il pulsante invierà un HIGH segnale.

#define buttonPin 2 // Button connected to pin 2
#define ledPin 13   // LED connected to pin 13

void setup() {
  pinMode(buttonPin, INPUT); // Set pin 2 as an input
  pinMode(ledPin, OUTPUT);   // Set pin 13 as an output
}

void loop() {
  int buttonState = digitalRead(buttonPin); // Read the button state

  if (buttonState == HIGH) {
    digitalWrite(ledPin, HIGH); // Turn on the LED if the button is pressed
  } else {
    digitalWrite(ledPin, LOW); // Turn off the LED otherwise
  }
}

Passaggio 4: usando if Dichiarazioni con pin digitali

if Le dichiarazioni consentono di creare una logica condizionale nel programma. Combina le letture digitali e le scritture per eseguire azioni basate sugli input.

Esempio: disattiva un pulsante LED su premi

Questo schizzo attiva lo stato a LED ogni volta che viene premuto il pulsante:

#define buttonPin 2 // Button connected to pin 2
#define ledPin 13   // LED connected to pin 13

bool ledState = false; // Current state of the LED
bool lastButtonState = LOW; // Previous state of the button

void setup() {
  pinMode(buttonPin, INPUT);
  pinMode(ledPin, OUTPUT);
}

void loop() {
  bool currentButtonState = digitalRead(buttonPin);

  if (currentButtonState == HIGH && lastButtonState == LOW) {
    ledState = !ledState; // Toggle the LED state
    digitalWrite(ledPin, ledState ? HIGH : LOW);
  }

  lastButtonState = currentButtonState; // Update the button state
  delay(50); // Debounce delay
}

Passaggio 5: utilizzo avanzato con operazioni logiche

Puoi usare più if dichiarazioni, else ife operatori logici (&&, ||, ecc.) Per creare comportamenti più complessi.

Esempio: controllo multi-input

Controlla un LED in base agli stati di due pulsanti:

#define button1 2 // Button 1 connected to pin 2
#define button2 3 // Button 2 connected to pin 3
#define ledPin 13 // LED connected to pin 13

void setup() {
  pinMode(button1, INPUT);
  pinMode(button2, INPUT);
  pinMode(ledPin, OUTPUT);
}

void loop() {
  bool button1State = digitalRead(button1);
  bool button2State = digitalRead(button2);

  if (button1State == HIGH && button2State == HIGH) {
    digitalWrite(ledPin, HIGH); // Turn on LED if both buttons are pressed
  } else {
    digitalWrite(ledPin, LOW); // Turn off LED otherwise
  }
}

Risoluzione dei problemi

  • LED non si illumina:

    • Assicurarsi che il LED sia collegato correttamente (gamba lunga al pin positivo).
    • Utilizzare una resistenza da 220 ohm per evitare danni.
  • Il pulsante non risponde:

    • Verificare la presenza di cablaggi adeguati con una resistenza a discesa o pull-up.
    • Verificare che PinMode sia impostato su INPUT O INPUT_PULLUP.
  • Problemi di debounce:

    • Utilizzare un piccolo ritardo o implementare un meccanismo di deboa di software per gestire il rumore del segnale dai pulsanti meccanici.

Conclusione

Hai imparato come eseguire operazioni di lettura e scrittura digitale con Arduino Uno, configurare le modalità PIN e utilizzare if Dichiarazioni per la logica condizionale. Queste competenze fondamentali consentono di controllare un'ampia varietà di componenti hardware e creare progetti interattivi e reattivi. Sperimenta ulteriormente combinando più input e output per comportamenti più complessi!

Lascia un commento

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.