8-bit IO-poortbibliotheek voor Arduino
Componenten en benodigdheden
| × | 1 | ||||
| × | 1 | ||||
| × | 1 |
Apps en online services
|
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/invoerGeen voorbeeld (alleen downloaden).
Schema's
IO-poort verzendt of ontvangt directe 8bit-gegevens van verschillende pinnenProductieproces
- LCD-paneel met Arduino voor Flight Simulator
- Schakel/LED-paneel met Arduino voor FS2020
- SMART temperatuurbewaking voor scholen
- 64-Key Prototyping Keyboard Matrix voor Arduino
- Maak een veilige zone voor Android/iOS/Win10-apparaten door Arduino
- TFT Shield voor Arduino Nano - Start
- Bedien een kakkerlak met Arduino voor minder dan $30
- Een geïsoleerde analoge ingang voor Arduino
- Arduino Breath Controller voor goedkoop (USB-MIDI)
- Tricks voor het besturen van gelijkstroommotoren
- Robot voor supercoole indoornavigatie