Snelle digitalRead(), digitalWrite() voor Arduino (4 / 5 stap)

Stap 4: Is het sneller?


De eerste foto toont een weerstand op een LED gesoldeerd.

Dit is optioneel, maar ik vond dat het hebben van een bos van deze samengesteld breadboarding een stuk makkelijker maakt.

Soldeer een weerstand naar de kathode voorsprong voor sommige LEDs.

De leiding van de kathode is de kortere negatief (grond) leiding. 270 - 560 Ohm werkt goed voor op de RaspberryPi, voor een Arduino gebruiken 330-680 ohm weerstanden.

Meestal maak ik ze met 470-560 ohm weerstanden dus ze met beide werken zal.

.

In de inleiding gezegd dat "het is mogelijk gebruik van lager niveau opdrachten te sterk versnellen de input/output."

Controle van de registers direct elimineert een heleboel extra code, en u kunt lezen of schrijven van alle de pinnen op een bank met een commando.

Dus nu het leuke deel, een test die zal je laten zien sommige echte snelheid.

Bouwen van het circuit volgens de bovenstaande afbeelding, zult u moeten:

  • Arduino
  • Breadboard
  • 6 LEDs
  • 6 weerstanden 330-560 ohm
  • jumper draden

Kopieer dit programma naar de Arduino IDE en uploaden naar je Arduino, dit is de snelle programma:

 /*************************************************** * Fast-counter.ino * * A fast binary counter works by controling the * registers rather than using digitalWrite(). ***************************************************/ /************************************************** * setup() Function **************************************************/ void setup() { DDRB = B00111111; // Pins 8-13 set to output. } /************************************************** * loop() Function **************************************************/ void loop() { for(int i=0;i<64;i++) { PORTB = i; delay(500); } } 

Laat het programma uit te voeren voor een tijdje en u zult opmerken het de snelheid verandert niet. Merk ook op dat wanneer alle LEDs verlicht zijn en ze gaan allemaal uit het is instant, ze gaan allemaal uit op hetzelfde moment.

Nu de Slow-counter.ino naar de Arduino IDE kopieert en deze uploaden naar je Arduino.

 /********************************************************* * Slow-counter.ino * * Another binary counter, but this one uses digitalWrite() * in a for loop, The longer it runs the slower it gets. *********************************************************/ unsigned long time[6]; //Holds time for each LED. int pin[6] = {8,9,10,11,12,13}; //Pin numbers for LEDs. int toggle[6] = {0,0,0,0,0,0}; //Toggles for LEDs. (0 or 1) /********************************************** * setup() function **********************************************/ void setup() { for(int i=0;i<6;i++) { pinMode(pin[i], OUTPUT); //Set LED pins as output. digitalWrite(pin[i], LOW); //All LEDs are off at start. time[i] = millis(); //Start timers for all LEDs. } } /********************************************** * loop() function **********************************************/ void loop() { int interval[6]={500,1000,2000,4000,8000,16000}; for(int i=0;i<6;i++) //For each LED in turn. { if((millis()-time[i]) > interval[i]) //Has time passed interval? { toggle[i] = !toggle[i]; //If so not toggle, time[i] = millis(); //reset time, digitalWrite(pin[i], toggle[i]); //and toggle LED, } } } 

De eerste keer al de LEDs afgaan u opmerken zult dat er een lichte vertraging en kunt u afgaan ze in volgorde. Hoe langer draait het langzamer het krijgt.

.

Als u wilt werken met Attiny chips:

Probeer deze programma's uit te voeren op een ATtiny84 bij één MHz. U ziet een groot verschil.

Hebt u een digitale multimeter die frequentie meet een programma te knipperen één LED met delay(1) schrijven. En vergelijk de frequentie bij gebruik van digitalWrite(), als het PORTB rechtstreeks te wijzigen.

Gerelateerde Artikelen

Een beginnersgids voor Arduino

Een beginnersgids voor Arduino

Na enkele jaren van experimenteren met Arduino, besloten heb ik dat het tijd is om te delen van de kennis die ik heb verworven. Dus ik hier het gaat, een gids voor Arduino, met de blote basisprincipes voor beginners en sommige meer geavanceerde uitle
Het maken van een androïde toepassing voor Arduino (LED Turn on/off)

Het maken van een androïde toepassing voor Arduino (LED Turn on/off)

hier hebben we een androïde toepassing die gebruikmaakt van ecllipsedeze toepassing inschakelen leidde op arduino.deze toepassing werkt ook in je LAN.Hardware vereist:1: arduino uno2: arduino ethernet Shield3: RJ45-kabel4: LED5. android telefoonDe so
RGB-LCD Shield voor Arduino 65K kleuren KIT V2 montage handleiding

RGB-LCD Shield voor Arduino 65K kleuren KIT V2 montage handleiding

de RGB LCD shield voor Arduino 65K kleur KIT bevat alle onderdelen om een klaar om te gebruiken LCD shield voor Arduino en compatibele boards zoals Freeduino monteren.(bezoek http://store.nkcelectronics.com/rgb-lcd-shield-for-arduino-65k-color-k65.ht
Aan de slag met GearBest Starter Kit voor Arduino

Aan de slag met GearBest Starter Kit voor Arduino

Als u nieuw bij de "Arduino World bent" zal deze tutorial helpen u om uw eerste stappen met elektronica en Arduino boards Arduino boards.De "GearBest Starter Kit voor Arduino" zullen we gebruiken voor dit! Waarom? Omdat is een low-cost
Onderzoekers gids voor Arduino als uitgevoerd op OIT

Onderzoekers gids voor Arduino als uitgevoerd op OIT

middelenAdafruit ARDX - v1.3 experimenten Kit voor ArduinoOnderzoekers gids voor Arduino (PDF)Brood bord lay-outs (PDF)Arduino tutorial Arduino Tutorial bundel (Instructable)Deze Arduino Tutorial is gonna be zeer vergelijkbaar met de Arduino Tutorial
Bouwen van een ISP-Shield voor Arduino

Bouwen van een ISP-Shield voor Arduino

dit Instructable is voor de instructies van de bouw voor onze nieuwe AVR ISP Shield Kit voor Arduino. Haar ontwikkeling heeft veel te danken aan Instructables en onze eigen Gemeenschap (met name Nick!) en ik hoop om uit te leggen wat van die langs de
CupBots - 3D afgedrukt Robotic platform voor Arduino en Raspberry Pi

CupBots - 3D afgedrukt Robotic platform voor Arduino en Raspberry Pi

Hier is een geweldig weekend robotica project uit te voeren met vrienden of mensen op uw lokale maker-ruimte. Je moet een 3D-printer handig om 3D print de STL-bestanden bijgevoegd als onderdeel van de volgende stappen en een beker, in mijn geval, ik
SensoDuino: Zet uw Androïde telefoon in een draadloze sensoren Hub voor Arduino

SensoDuino: Zet uw Androïde telefoon in een draadloze sensoren Hub voor Arduino

UPDATES23 november 2013: SensoDuino 0.160 krijgt een links.19 nov. 2031: advies: de fantastische synergie tussen Arduino & Android.19 november 2013: SensoDuino 0.159 is uit. Android telefoon datum (y, m, d) en tijd (h, m, s) worden ondersteund als se
Touche voor Arduino: Advanced touch sensing.

Touche voor Arduino: Advanced touch sensing.

Update: nieuwe interface - blik op de laatste stap.Credits: Arduino sensing gedaan door DZL, verwerking van schets en Instructable gedaan door Mads Hobye.Disney Research lab ontworpen een nieuwe manier om te ontdekken van de Aanraking. U kunt een vid
Bouwen van Android Bluetooth App voor Arduino

Bouwen van Android Bluetooth App voor Arduino

Hallo, ga vandaag ik om een android app voor arduino Bluetooth module HC-06 te maken. Via deze app kunt u een lichte of led formulier uw Androïde telefoon. Kunt doen...Stap 1: Ga naar Android editorGa naar MIT App uitvinderLink: http://appinventor.mi
Linux, WiFi, Ethernet, USB-Shield voor Arduino

Linux, WiFi, Ethernet, USB-Shield voor Arduino

Yun Shield is een Arduino-schild die zal gewoon "turn" Arduino (UNO, Leonardo, MEGA2560 enz) zowel een "Arduino Yun". Het biedt een linuxsysteem, WiFi, Ethernet naar de Arduino board voor connectiviteit. Het heeft ook een USB-hostpoort
3-kanaals Dimmer/fader voor Arduino of andere microcontroller

3-kanaals Dimmer/fader voor Arduino of andere microcontroller

In een eerdere instructable heb ik voorgelegd een eenvoudige AC TRIAC fader/dimmer die kan worden gecontroleerd met een Arduino. In verschillende reacties die ik kreeg, belangstelling een aantal mensen hun in een 3-kanaals RGB-fader. Maar sinds ik ni
Digitale multimeter shield voor Arduino

Digitale multimeter shield voor Arduino

Dit instructable beschrijft een schild, die "Arduino" board in een digitale multimeter (DMM converteert).Het schild kan worden ingevoegd in "Arduino" UNO und Duemilanove planken. Het kan werken in drie modi:standalone - de meting gegev
De ESP8266 deel 1 - seriële WIFI Module voor Arduino

De ESP8266 deel 1 - seriële WIFI Module voor Arduino

Dit is het deel 1 van 3 instructables u te helpen bij het gebruik van de ESP8266 met Arduino. In dit deze eerste tutorial leer je hoe set-up en test de module op een Arduino aangesloten.De ESP8266 is misschien wel de meest veelzijdige seriële module