Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Manufacturing Technology >> Herstellungsprozess

Effiziente 8-Bit-I/O-Port-Bibliothek für Arduino – Digitale Steuerung erweitern

Benötigte Komponenten

Komponente Menge
Arduino UNO 1
5 mm LED rot 8 (für Demos)
10 kΩ Potentiometer (Einmal-Drehung) 1

Über dieses Projekt

Die Standardfunktionen digitalWrite() und digitalRead() arbeiten immer nur auf einem Pin. Will man aber 8-Bit-Geräte ansteuern (7-Segment-Anzeigen, DIP-Schalter, DACs), muss man 8 Pins einzeln setzen – mühsam und langsam.

Diese Bibliothek fasst beliebige 8 Arduino-Pins zu einem virtuellen 8-Bit-Port zusammen. Ein Funktionsaufruf genügt, um ein ganzes Byte (0–255) auszugeben oder einzulesen.

Bibliotheks-Funktionen

  1. IO_Port_8bit(p1..p8, dir) – Konstruktor mit fester Richtung ('O'=Output, 'I'=Input)
  2. IO_Port_8bit(p1..p8) – Konstruktor ohne Richtung (später per set_IO_direction() änderbar)
  3. set_IO_direction(dir) – Richtung zur Laufzeit setzen ('I' oder 'O')
  4. send_8bit_data(byte) – 8-Bit-Wert (0–255) an die 8 Pins ausgeben
  5. get_8bit_data() – 8-Bit-Wert von den 8 Pins einlesen (Rückgabe: int 0–255)

Beispiele

1. 8 LEDs abwechselnd blinken lassen (1 Hz)

#include <IO_Port_8bit.h>
IO_Port_8bit myport(2,3,4,5,6,7,8,9, 'O'); // Output-Port

void setup() {}

void loop() {
  myport.send_8bit_data(85);  // 01010101 – ungerade LEDs an
  delay(500);
  myport.send_8bit_data(170); // 10101010 – gerade LEDs an
  delay(500);
}

2. Binärcount 0–15 auf LEDs darstellen

#include <IO_Port_8bit.h>
IO_Port_8bit my8bitport(2,3,4,5,6,7,8,9);

void setup() {
  my8bitport.set_IO_direction('O');
}

void loop() {
  for (int i=0; i<16; i++) {
    my8bitport.send_8bit_data(i);
    delay(200);
  }
}

3. Analogen Spannungspegel als 8-LED-Balkengrafik anzeigen

#include <IO_Port_8bit.h>
IO_Port_8bit myport(2,3,4,5,6,7,8,9, 'O');

void setup() {
  myport.send_8bit_data(255); delay(500);
  myport.send_8bit_data(0);
}

void loop() {
  int level = analogRead(A0);
  level = map(level, 0, 1023, 0, 80);
  if (level > 70) myport.send_8bit_data(255);
  else if (level > 60) myport.send_8bit_data(127);
  else if (level > 50) myport.send_8bit_data(63);
  else if (level > 40) myport.send_8bit_data(31);
  else if (level > 30) myport.send_8bit_data(15);
  else if (level > 20) myport.send_8bit_data(7);
  else if (level > 10) myport.send_8bit_data(3);
  else if (level > 0) myport.send_8bit_data(1);
  else myport.send_8bit_data(0);
}

4. 8-Bit-Eingang von DIP-Schaltern lesen & seriell ausgeben

#include <IO_Port_8bit.h>
IO_Port_8bit myport(2,3,4,5,6,7,8,9);

void setup() {
  Serial.begin(9600);
  myport.set_IO_direction('I');
  Serial.println("8-bit Input Port Test");
}

void loop() {
  int input = myport.get_8bit_data();
  Serial.print("Eingang = ");
  Serial.println(input);
  delay(1000);
}

Schaltplan

Die 8 gewählten Pins werden über Vorwiderstände (bei LEDs) oder Pull-Up/Pull-Down (bei Schaltern) mit den externen Bauelementen verbunden. Die Bibliothek kümmert sich um das Bit-Mapping.

Hinweis

Der Library-Code selbst ist als Download verfügbar (Arduino Library for 8-bit IO Port). Einbinden über Sketch → Bibliothek einbinden → .ZIP-Bibliothek hinzufügen.

Herstellungsprozess

  1. Arduino Nano Flight Simulator 2020 Kontrollpanel – LCD & CDI Display
  2. Arduino-basiertes Schalter- & LED-Panel für Microsoft Flight Simulator 2020
  3. Smartes Temperatur-Monitoring für Schulen – Arduino, Raspberry Pi, Sigfox & ThingSpeak
  4. Arduino 64-Tasten-Prototyp-Keyboard-Matrix – Eigenes Keyboard mit Schieberegistern bauen
  5. Arduino-Sicherheitszone: Geräte (Android, iOS, Windows 10) per Fingerprint entsperren
  6. 2,8″ TFT-Shield für Arduino Nano – 320×240 SPI-Display mit Touch
  7. DIY Arduino Kakerlaken-Steuerung – Bauen für unter 30 €
  8. Isolierter Analogeingang für Arduino: Spannung/Strom galvanisch trennen
  9. Günstiger Arduino-Atemcontroller mit USB-MIDI-Integration
  10. Smartes Indoor-Navigations-Roboter-Kit für Arduino-Projekte