Her er Danmarks fem bedste CIO’er lige nu:Se de fem nominerede til prisen som Årets CIO 2024

Artikel top billede

(Foto: Computerworld)

Kom i gang med sjov elektronik på Arduino

Med Arduinos open source-platform kan du lave en masse sjove elektronik-ting. Her er to projekter: et simpelt kredsløb og en emulering af et USB-tastatur, så du hurtigt kan ændre skærmbilledet, når chefen kommer ind. Kod via enten en online-editor eller det traditionelle Arduino-IDE. Tilslut dit Arduino Nano 33 IoT. Gå ind på <a href="https://create.arduino.cc">https://create.arduino.cc</a>. Opret en konto, så du kan hente appen Arduino Create. Følg anvisningerne.

Af Torben Okholm, Alt om Data

Denne artikel er oprindeligt bragt på Alt om Data. Computerworld overtog i november 2022 Alt om Data. Du kan læse mere om overtagelsen her.

 
Det skal du bruge

• Et Arduino Nano 33 IoT eller Leonardo A-breadboard – pris 200-300 kr.
2 x  M2M-jumperkabler.


• Projekt 1: en LED 330 Ohm-resistor
(orange-orange-brun-guld)


• Projekt 2: trykknapkontakt
(enhver type burde fungere her)


 
1 Projekt 1: Hello World

Det mest elementære projekt, vi kan oprette, er at flashe et LED-lys. Men hvorfor skulle vi gøre det? Fordi det bekræfter, at vi kan sende data til kortet, og det bekræfter også, at vores elektroniske komponenter virker [Billede]. Projektets kredsløb omfatter et LED-lys, et breadboard, en 330 ohm-resistor og to jumperkabler (han-til-han). LED-lyset bliver placeret på et breadboard, og resistorer bliver forbundet til det korte ben (katoden, –, GND-ben) og til Arduinos GND-pin via et jumperkabel. LED’ets lange ben (anode, +) bliver forbundet til Arduinos pin 2 via et andet jumperkabel.


2 Projektets kodning

I Arduino IoT Cloud klikker du
“Arduino Web Editor”, hvorefter du forbinder Arduino til din computer. Opret en ny sketch i “Sketchbook”. Det første skridt er at oprette en funktion, der kan fortælle
Arduino, at vi ønsker at bruge pin 2 som et output til at sende strøm til det forbundne LED.


 

void setup() {


 pinMode(2, OUTPUT);


}


>> Vores løkke vil køre koden for evigt, og inden i hovedløkken er der en for
-løkke, som vil gentage (gå rundt) tre gange og hurtigt flashe vores LED-lys, før den holder pause.


 

void loop() {


  for (int i = 0; i <= 3; i++) {


 

>> For at tænde LED’et skal vi bruge
“digitalWrite” og derefter angive pin-tallet og pin’ens tilstand. I dette tilfælde sætter vi pin 2 til “HIGH”, hvilket forårsager, at LED’et lyser op. Efter en kort pause på 100 ms tænder vi LED’et ved hjælp af “LOW”. Endnu en pause opstår, før  for  -løkken går tilbage til start igen. Når for -løkken har kørt tre gange, slutter den og afbryder. En sidste pause på et sekund (1000 ms) får LED’et til at slukke, og den opretter en lang pause i flashsekvensen.


 

   digitalWrite(2, HIGH); 


   delay(100); 


   digitalWrite(2, LOW);


   delay(100);


  } 


  delay(1000);


 }


>> Klik på fluebenet for at tjekke din kode [Billede], og klik dernæst på pilen for at flashe koden til Arduino. Efter få sekunder genstarter kortet, og LED’et flasher hurtigt tre gange, holder pause, og gentager processen. Til lykke! Du har med held afprøvet dit Arduino. 


3 Projekt 2: behold jobbet

Her vil vi lave en simpel kontakt – når man trykker på den, udløser den en ny fane i Firefox eller Chrome, og der bliver åbnet en side, som ligner MS Outlook, men som faktisk er Reddit i forklædning. Den er praktisk på arbejde, i skolen eller hjemme, men du må bruge den på egen risiko!

>> Ved hjælp af et breadboard skal vi forbinde en trykknapkontakt over den centrale kanal, således at benene bliver spredt over mellemrummet. Brug nu to jumperkabler (han-til-han), forbind kontaktens øverste venstre ben til GND på Arduino, og forbind så det øverste højre ben til pin 2 på Arduino.

4 Projektets kodning

I Arduino IoT Cloud klikker du “Arduino Web Editor” og slutter Arduino til din computer. Opret en ny sketch i “Sketchbook”. Importer nu biblioteket “Keyboard”, som sætter Arduino i stand til at emulere et USB-tastatur [Billede].

 

 #include <Keyboard.h>


 
Vi kan skrive dette i kode, eller vi kan gå til “Libraries”, søger efter “Keyboard” og klikke “Include”.


>> Det næste skridt er at konfigurere den pin, vi bruger til kontakten, og til at starte tastaturets interface. Vi bruger en funktion ved navn “setup”, som kører én gang, når der bliver tændt for kortet. Ved hjælp af “pinMode” kan vi fortælle Arduino, at vi ønsker at bruge pin 2 som input, og at den interne pull-up-resistor skal trække pin’en højt, således at når der bliver trykket på kontakten, forbinder den pin 2 (high) til GND. Dette trækker pin 2 lavt og udløser handlingen. 

 void setup() {


  pinMode(2, INPUT_PULLUP);  


  Keyboard.begin();


 }


>> For at få koden til at køre konstant skal vi oprette en løkke, der rummer koden. Den første kodesektion i løkken er en test af, om der er blevet trykket på knappen. Med “digitalRead” kan vi tjekken pin 2, og hvis den er “HIGH”, er der ikke blevet trykket på knappen. Det betyder, at koden ikke skal gøre noget og stadig skal vente på input. Vi bør bruge en pause på 50 ms for at forhindre uønsket aktivering.

 

 void loop() {  


  while (digitalRead(2) == HIGH) {


    delay(50); 


 }


 
>> Hvad sker der, hvis der bliver trykket på knappen? I dette tilfælde bliver der tilføjet en pause på 100 ms, før der bliver trykket på en række taster for at åbne en fane. Til at trykke på en tast bruger vi “Keyboard.press” og angiver tastens detaljer. For taster som Ctrl, Alt og Shift angiver vi detaljerne i en fast rækkefølge og angiver, om det er venstre eller højre udgave af hver tast. For almindelige tegn (bogstaver, tal, tegnsætning) angiver vi tasten som en streng. Dernæst angiver vi en pause på 100 ms for at sikre os, at tastaturtrykkene bliver registreret. 

 delay(100); 


   Keyboard.press(KEY_LEFT_CTRL); 


   Keyboard.press(‘t’); 


   delay(100);


 
>> Lige nu bliver tasterne trykket ned. Hvis det sker for længe, kan det give problemer. For at slippe tasterne bruger vi “Keyboard.releaseAll”, før vi fortsætter. Når en ny fane åbnes i Firefox/Chrome, fokuserer markøren på adressebjælken, og i den næste kodelinje sætter vi en URL til Reddit/Outlook-websitet. Så slipper vi tasterne endnu en gang, før en endelig pause på 100 ms afslutter løkken.

 

   Keyboard.releaseAll(); 


   Keyboard.println(“http://pcottle.github.io/ MSOutlookit/”); 


   Keyboard.releaseAll(); 


   delay(100);


 }


>> Klik på fluebenet for at tjekke din kode, og klik så på pilen for at flashe koden til Arduino. Efter få sekunder genstarter kortet og er klart til brug. Fortsæt, tryk på knappen [Billede], og sørg for, at det virker, før chefen kommer marcherende ind!