Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Manufacturing Technology >> Productieproces

8-bit IO-poortbibliotheek voor Arduino

Componenten en benodigdheden

Arduino UNO
× 1
5 mm LED:rood
× 1
Single Turn Potentiometer - 10k ohm
× 1

Apps en online services

Arduino IDE

Over dit project

Arduinolibrary voor 8-bits IO-poort

We weten allemaal dat de arduino digitale uitvoer geeft met behulp van "digitalWrite() ”functie en krijgt digitale invoer via “digitalRead() ” functie. Maar door deze twee functies te gebruiken, kan het output geven of input krijgen van elke pin - wat betekent dat het tegelijkertijd output kan geven aan of input kan krijgen van slechts één pin. Als iemand een 8-bits IO-apparaat zoals een 7-segments display, DIP-switches of DAC (digitaal naar analoog converter) met arduino wil koppelen, kan het geen directe 8-bits digitale output aan het apparaat geven, maar moet het output geven aan 8 verschillende pinnen .Het databyte (8-bit) patroon wordt naar verschillende pinnen gestuurd in de vorm van enen en nullen. Als de databyte bijvoorbeeld 37 uur is (0011 0111), moet je deze 0 n 1 patroon naar 8 verschillende pinnen sturen met de functie digitalWrite() .

Dus om deze situatie hier te overwinnen, presenteer ik een 8-bit IO-poort (invoer-uitvoerpoort) bibliotheek voor arduino. Met behulp van deze bibliotheek kan men directe 8-bits gegevens verzenden naar alle Arduino-bordpinnen die zijn geconfigureerd als een gecombineerde 8-bits poort of 8-bits invoer krijgen van deze geconfigureerde pinnen. Deze bibliotheek clubt elke 8 pinnen van arduino samen om te werken als 8-bit IO-poort. Je hoeft slechts 8 arduino-pinnen te selecteren om te combineren als 8-bits poort en je moet de gegevensrichting configureren als invoer of uitvoer. Gegevensrichting wordt ingesteld door teken 'O' voor uitvoer of 'I' voor invoer.

De bibliotheek heeft slechts 5 functies. Er zijn twee constructors die poortobject(en) maken, één functie om 8-bits digitale uitvoer naar poortpinnen te sturen, één functie om 8-bits digitale invoer van poortpinnen te krijgen en één extra functie om de IO-richting van de poort te wijzigen/in te stellen. Hier worden alle 5 functies in het kort uitgelegd en daarna enkele voorbeelden met uitleg.

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

Dit is constructeur. Het zal object(en) van deze klasse creëren en dus een of meerdere 8-bit poort(en) creëren door verschillende arduino-pinnen te combineren. Men moet 8 verschillende arduino-pinnen specificeren om als poort te worden gecombineerd met gegevensrichting als invoer of uitvoer - betekent portworks als invoer of uitvoer. Het laatste argument dir in deze constructor definitionsport werkt als input of output. Als dir='O' betekent dat poort werkt als uitvoer en ifdir='I', werkt poort als invoer. Dezelfde poort kan niet tegelijkertijd of zelfs afwisselend als invoer en uitvoer werken. Het geeft ook een fout aan als de gegevensrichting niet is geselecteerd

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

Dit is een andere constructeur. Het zal ook object(en) van deze klasse creëren en dus een of meerdere 8-bit poort(en) creëren door verschillende arduino-pinnen te combineren. Men moet 8 verschillende arduino-pinnen specificeren die als poort moeten worden gecombineerd. Maar het specificeert de gegevensrichting niet als invoer of uitvoer. Na het maken van een poortobject met behulp van deze constructor, moet men de poortrichting instellen met behulp van set_IO_direction functie. Met deze constructor kan de programmeur dus de inruntijd van de poortgegevens wijzigen met behulp van deze constructor, dezelfde poort kan als invoer of als uitvoer werken (maar niet tegelijkertijd)

3. set_IO_direction(char dir)

Deze functie specificeert de invoer-/uitvoerrichting van de poort. Het heeft één karakterargument dat 'I' kan zijn voor poort als invoer of 'O' voor poort als uitvoer. Als datadirection niet is geselecteerd, wordt er een fout weergegeven op de seriële monitor van arduino

4. send_8bit_data(int byt)

Deze functie stuurt 8 bit data naar gespecificeerde pinnen. Geef gewoon int-gegevens (moet <255) zijn als een argument dat rechtstreeks aan 8 verschillende pinnen wordt gegeven. Als de gegevens> 255 zijn, wordt er een fout weergegeven op de seriële monitor van Arduino.

5. get_8bit_data(void)

Deze functie haalt 8 bit data van gespecificeerde pinnen. Het retourneert 8-bits int-gegevens door de status van 8 verschillende pinnen te lezen

Voorbeeld1:afwisselend 8 leds knipperen met een snelheid van 1 Hz

#include

IO_Port_8bitmyport (2, 3, 4, 5, 6, 7, 8, 9, 'O'); // maak uitvoerpoort

void setup() // niets vereist in setup

{

}

void loop()

{

myport.send_8bit_data(85);// stuur gegevens om alle oneven LED's te laten knipperen

vertraging (500);

mijnpoort.send_8bit_data(170); stuur gegevens om alle even LED's te knipperen

vertraging (500);

}

Voorbeeld 2:toon binair telpatroon op LED's van 0 tot F

#include

IO_Port_8bitmy8bitport (2, 3, 4, 5, 6, 7, 8, 9);//poortobject maken

ongeldige setup()

{

my8bitport.set_IO_direction('O');// stel poortrichting in

}

void loop()

{

int i;

for(i=0;i<16;i++) //stuur data 0 tot 15 om weer te geven

{ // binair patroon

mijnport.send_8bit_data(i);

vertraging(200);

}

}

Voorbeeld 3:geef het analoge ingangsspanningsniveau aan op 8-bits LED-staafgrafiekweergave

#include

IO_Port_8bitmyport (2, 3, 4, 5, 6, 7, 8, 9, 'O'); // maak uitvoerpoortobject

ongeldige setup()

{

mijnpoort.send_8bit_data(255); //knipper één keer met alle LED's van het staafdiagram

vertraging (500);

mijnpoort.send_8bit_data(0);

}

void loop()

{

int-niveau;

niveau =analoog lezen (A0); // lees analoge ingangsspanning

niveau =kaart (niveau, 0, 1023, 0, 80);// beperk de spanning van 0 tot 80

//verhoog of verlaag staafdiagramniveau asper-invoer

if((niveau<80) &&(niveau>70))mijnpoort.send_8bit_data(255);

elseif((niveau<=70) &&(niveau>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((niveau<=40) &&(niveau>30)) mijnport.send_8bit_data(15);

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

elseif((niveau<=20) &&(niveau>10))mijnpoort.send_8bit_data(3);

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

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

}

Voorbeeld 4:ontvang 8-bits digitale invoer van DIP-schakelaars en geef de waarde weer op de seriële monitor

#include

IO_Port_8bitmyport (2, 3, 4, 5, 6, 7, 8, 9); // maak een poortobject

ongeldige setup()

{

Serieel.begin(9600); // initialiseer de seriële commu.

mijnpoort.set_IO_direction('I'); // stel poortrichting in

Serial.println("8-bit invoerpoorttest");

}

void loop()

{

int input_byt;

input_byt =mijnpoort.get_8bit_data(); // lees de status van de DIP-schakelaar

Serial.print("ontvangen invoer ="); // en

Serial.println(input_byt); // toon de waarde

vertraging(1000);

}

Code

  • Arduino-bibliotheek voor 8-bits IO-poort
Arduino-bibliotheek voor 8-bits IO-poortC/C++
de bibliotheek maakt een 8-bits IO-poort van arduino-pinnen en verzendt/krijgt 8-bits digitale uitvoer/invoer
Geen voorbeeld (alleen downloaden).

Schema's

IO-poort verzendt of ontvangt directe 8bit-gegevens van verschillende pinnen

Productieproces

  1. LCD-paneel met Arduino voor Flight Simulator
  2. Schakel/LED-paneel met Arduino voor FS2020
  3. SMART temperatuurbewaking voor scholen
  4. 64-Key Prototyping Keyboard Matrix voor Arduino
  5. Maak een veilige zone voor Android/iOS/Win10-apparaten door Arduino
  6. TFT Shield voor Arduino Nano - Start
  7. Bedien een kakkerlak met Arduino voor minder dan $30
  8. Een geïsoleerde analoge ingang voor Arduino
  9. Arduino Breath Controller voor goedkoop (USB-MIDI)
  10. Tricks voor het besturen van gelijkstroommotoren
  11. Robot voor supercoole indoornavigatie