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

8-Bit-IO-Port-Bibliothek für Arduino

Komponenten und Verbrauchsmaterialien

Arduino UNO
× 1
5 mm LED:Rot
× 1
Single Turn Potentiometer - 10k Ohm
× 1

Apps und Onlinedienste

Arduino-IDE

Über dieses Projekt

Arduinbibliothek für 8-Bit-IO-Port

Wir alle wissen, dass das Arduino eine digitale Ausgabe mit "digitalWrite() . ausgibt ”-Funktion und erhält einen digitalen Eingang über „digitalRead() ”-Funktion. Aber mit diesen beiden Funktionen kann es einen Ausgang geben oder einen Eingang von einem beliebigen Pin erhalten - bedeutet, dass es gleichzeitig nur einen Ausgang an einen einzelnen Pin geben oder einen Eingang annehmen kann. Wenn jemand ein 8-Bit-IO-Gerät wie 7-Segment-Anzeige, DIP-Schalter oder DAC (Digital-Analog-Wandler) mit Arduino verbinden möchte, kann es keine direkte 8-Bit-Digitalausgabe an das Gerät geben, sondern muss stattdessen 8 verschiedene Pins ausgeben .Das Datenbyte (8-Bit)-Muster wird an verschiedene Pins in Form von Einsen und Nullen gesendet. Wenn das Datenbyte beispielsweise 37h (011 0111) ist, muss man diese 0-n-1-Muster mit der Funktion digitalWrite() an 8 verschiedene Pins senden .

Um diese Situation hier zu überwinden, präsentiere ich eine 8-Bit-IO-Port-Bibliothek (Eingabe-Ausgabe-Port) für Arduino. Mit dieser Bibliothek kann man direkte 8-Bit-Daten an Anyyarduino-Board-Pins senden, die als kombinierter 8-Bit-Port konfiguriert sind, oder 8-Bit-Input von diesen konfigurierten Pins erhalten. Diese Bibliothek verbindet alle 8 Pins von Arduino zusammen, um als 8-Bit-IO-Port zu arbeiten. Es müssen nur 8 beliebige Arduino-Pins ausgewählt werden, die als 8-Bit-Port kombiniert werden sollen, und seine Datenrichtung als Eingang oder Ausgang konfigurieren. Die Datenrichtung wird durch das Zeichen „O“ für die Ausgabe oder „I“ für die Eingabe festgelegt.

Thelibrary hat nur 5 Funktionen. Es gibt zwei Konstruktoren, die Portobjekte erstellen, eine Funktion zum Senden von 8-Bit-Digitalausgaben an Port-Pins, eine Funktion zum Abrufen von 8-Bit-Digitaleingaben von Port-Pins und eine zusätzliche Funktion zum Ändern/Setzen der IO-Richtung des Ports. Hier werden alle 5 Funktionen kurz erklärt und danach einige Beispiele mit Erläuterungen.

1. IO_Port_8bit(int pin1, intpin2, int pin3, int pin4, int pin5, int pin6, int pin7, int pin8, char dir)

Das ist Konstruktor. Es erstellt Objekte dieser Klasse und erstellt somit einen oder viele 8-Bit-Ports durch Kombinieren verschiedener Arduino-Pins. Man muss 8 verschiedene Arduino-Pins angeben, die als Port zusammen mit der Datenrichtung als Eingang oder Ausgang kombiniert werden sollen - bedeutet, dass Ports entweder als Eingang oder Ausgang funktionieren. Das letzte Argument dir in diesem Konstruktor definesport funktioniert als Eingabe oder Ausgabe. Wenn dir='O' bedeutet, dass Port als Ausgabe arbeitet und ifdir='I', funktioniert Port als Eingabe. Derselbe Port kann nicht gleichzeitig oder auch abwechselnd als Ein- und Ausgang arbeiten. Es zeigt auch einen Fehler an, wenn die Datenrichtung nicht ausgewählt ist

2. IO_Port_8bit (int pin1, intpin2, int pin3, int pin4, int pin5, int pin6, int pin7, int pin8)

Dies ist ein weiterer Konstruktor. Es wird auch Objekte dieser Klasse erstellen und somit einen oder viele 8-Bit-Ports erstellen, indem verschiedene Arduino-Pins kombiniert werden. Man muss 8 verschiedene Arduino-Pins angeben, die als Port kombiniert werden sollen. Aber es gibt die Datenrichtung nicht als Eingabe oder Ausgabe an. Nachdem ein Port-Objekt mit diesem Konstruktor erstellt wurde, muss die Port-Richtung mit set_IO_direction . festgelegt werden Funktion. Dieser Konstruktor ermöglicht es dem Programmierer also, die Portdatenrichtung während der Laufzeit mit diesem Konstruktor zu ändern. Der gleiche Port kann alternativ (aber nicht gleichzeitig) als Eingabe oder Ausgabe arbeiten.

3. set_IO_direction(char dir)

Diese Funktion gibt die Ein-/Ausgaberichtung des Ports an. Es hat ein Argument, das 'I' für Port als Eingang oder 'O' für Port als Ausgang sein kann. Wenn datadirection nicht ausgewählt ist, wird ein Fehler auf dem seriellen Monitor von Arduino angezeigt

4. send_8bit_data(int byt)

Diese Funktion sendet 8-Bit-Daten an angegebene Pins. Geben Sie einfach int data (muss <255 sein) als Argument an, das direkt an 8 verschiedene Pins übergeben wird. Wenn die Daten> 255 sind, wird ein Fehler auf dem seriellen Monitor von Arduino angezeigt.

5. get_8bit_data(void)

Diese Funktion ruft 8-Bit-Daten von angegebenen Pins ab. Es gibt 8-Bit-Int-Daten zurück, indem der Status von 8 verschiedenen Pins gelesen wird

Beispiel 1:8 LEDs abwechselnd mit einer Frequenz von 1 Hz blinken

#include

IO_Port_8bitmyport(2, 3, 4, 5, 6, 7, 8, 9, ’O’); // Ausgabeport erstellen

void setup() // Im Setup ist nichts erforderlich

{

}

Leere Schleife()

{

myport.send_8bit_data(85); // Daten senden, um alle ungeraden LEDs zu blinken

Verzögerung(500);

myport.send_8bit_data(170); Daten senden, um alle geraden LEDs zu blinken

Verzögerung(500);

}

Beispiel 2:Binäres Zählmuster auf LEDs von 0 bis F anzeigen

#include

IO_Port_8bitmy8bitport(2, 3, 4, 5, 6, 7, 8, 9); // Port-Objekt erstellen

void setup()

{

my8bitport.set_IO_direction('O'); // set portdirection

}

Leere Schleife()

{

int i;

for(i=0;i<16;i++) //Daten 0 bis 15 zur Anzeige senden

{ // binäres Muster

myport.send_8bit_data(i);

Verzögerung(200);

}

}

Beispiel 3:Anzeige des analogen Eingangsspannungspegels auf dem 8-Bit-LED-Balkendiagramm

#include

IO_Port_8bitmyport(2, 3, 4, 5, 6, 7, 8, 9, ’O’); // Ausgabeport-Objekt erstellen

void setup()

{

myport.send_8bit_data(255); // alle LEDs des Balkendiagramms einmal blinken

Verzögerung(500);

myport.send_8bit_data(0);

}

Leere Schleife()

{

int-Ebene;

level =analogRead(A0); // Analoge Eingangsspannung lesen

level =map(level, 0, 1023, 0, 80); // die Spannung von 0 auf 80 begrenzen

// Erhöhen oder verringern Sie den Balkendiagrammpegel gemäß der Eingabe

if((level<80) &&(level>70))myport.send_8bit_data(255);

elseif((level<=70) &&(level>60)) myport.send_8bit_data(127);

elseif((level<=60) &&(level>50)) myport.send_8bit_data(63);

elseif((level<=50) &&(level>40)) myport.send_8bit_data(31);

elseif((level<=40) &&(level>30)) myport.send_8bit_data(15);

elseif((level<=30) &&(level>20)) myport.send_8bit_data(7);

elseif((level<=20) &&(level>10))myport.send_8bit_data(3);

elseif((level<=10) &&(level>0)) myport.send_8bit_data(1);

elseif(level==0) myport.send_8bit_data(0);

}

Beispiel 4:Erhalten Sie einen digitalen 8-Bit-Eingang von DIP-Schaltern und zeigen Sie den Wert auf dem seriellen Monitor an

#include

IO_Port_8bitmyport(2, 3, 4, 5, 6, 7, 8, 9); //Port-Objekt erstellen

void setup()

{

Serial.begin (9600); // initialisiere serielle Kommunikation.

myport.set_IO_direction('I'); // Portrichtung einstellen

Serial.println("8-Bit-Eingangsporttest");

}

Leere Schleife()

{

int input_byt;

input_byt =myport.get_8bit_data(); // den DIP-Schalterstatus lesen

Serial.print ( "empfangene Eingabe ="); // und

Serial.println (input_byt); // seinen Wert anzeigen

Verzögerung(1000);

}

Code

  • Arduino-Bibliothek für 8-Bit-IO-Port
Arduino-Bibliothek für 8-Bit-IO-PortC/C++
Die Bibliothek erstellt einen 8-Bit-IO-Port aus Arduino-Pins und sendet/erhält eine digitale 8-Bit-Ausgabe/-Eingabe
Keine Vorschau (nur Download).

Schaltpläne

Der IO-Port sendet oder empfängt direkte 8-Bit-Daten von verschiedenen Pins

Herstellungsprozess

  1. LCD-Panel mit Arduino für Flugsimulator
  2. Schalter/LED-Panel mit Arduino für FS2020
  3. SMART-Temperaturüberwachung für Schulen
  4. 64-Tasten-Prototyping-Tastaturmatrix für Arduino
  5. Erstellen Sie eine sichere Zone für Android-/iOS-/Win10-Geräte von Arduino
  6. TFT-Shield für Arduino Nano - Start
  7. Steuern Sie eine Kakerlake mit Arduino für unter 30 $
  8. Ein isolierter Analogeingang für Arduino
  9. Arduino Breath Controller zum günstigen Preis (USB-MIDI)
  10. Roboter für supercoole Indoor-Navigation