Innehållsförteckning:

Introduktion till Arduino: 15 steg (med bilder)
Introduktion till Arduino: 15 steg (med bilder)

Video: Introduktion till Arduino: 15 steg (med bilder)

Video: Introduktion till Arduino: 15 steg (med bilder)
Video: You can learn Arduino in 15 minutes. 2024, Juli
Anonim
Introduktion till Arduino
Introduktion till Arduino

En Arduino är ett utvecklingsbräde för mikrokontroller med öppen källkod. På vanlig engelska kan du använda Arduino för att läsa sensorer och styra saker som motorer och lampor. Detta låter dig ladda upp program till detta kort som sedan kan interagera med saker i den verkliga världen. Med detta kan du skapa enheter som svarar och reagerar på världen i stort.

Till exempel kan du läsa en fuktsensor ansluten till en krukväxt och slå på ett automatiskt vattningssystem om det blir för torrt. Eller så kan du skapa en fristående chatserver som är ansluten till din internetrouter. Eller så kan du låta den twittra varje gång din katt passerar genom en sällskapsdörr. Eller du kan låta den börja en kopp kaffe när ditt larm går på morgonen.

I grund och botten, om det är något som på något sätt styrs av el, kan Arduino interagera med det på något sätt. Och även om det inte styrs av elektricitet, kan du förmodligen fortfarande använda saker som är (som motorer och elektromagneter) för att ansluta till det.

Möjligheterna med Arduino är nästan obegränsade. Som sådan finns det inget sätt att en enda handledning kan täcka allt du någonsin behöver veta. Som sagt, jag har gjort mitt bästa för att ge en grundläggande översikt över de grundläggande färdigheter och kunskaper som du behöver för att få din Arduino igång. Om inte annat bör detta fungera som en språngbräda till ytterligare experiment och lärande.

Steg 1: Olika typer av Arduinos

Olika typer av Arduinos
Olika typer av Arduinos
Olika typer av Arduinos
Olika typer av Arduinos
Olika typer av Arduinos
Olika typer av Arduinos

Det finns ett antal olika typer av Arduinos att välja mellan. Detta är en kort översikt över några av de mer vanliga typerna av Arduino -kort som du kan stöta på. För en fullständig lista över Arduino -kort som för närvarande stöds, kolla in Arduino -maskinvarusidan.

Arduino Uno

Den vanligaste versionen av Arduino är Arduino Uno. Denna tavla är vad de flesta talar om när de hänvisar till en Arduino. I nästa steg finns en mer fullständig genomgång av dess funktioner.

Arduino NG, Diecimila och Duemilanove (äldre versioner)

Äldre versioner av Arduino Uno -produktserien består av NG, Diecimila och Duemilanove. Det viktiga att notera om äldre brädor är att de saknar särdrag hos Arduino Uno. Några viktiga skillnader:

  • Diecimila och NG använder en ATMEGA168 -chips (i motsats till den kraftfullare ATMEGA328),
  • Både Diecimila och NG har en bygel bredvid USB -porten och kräver manuellt val av antingen USB- eller batteriström.
  • Arduino NG kräver att du håller ned viloknappen på tavlan i några sekunder innan du laddar upp ett program.

Arduino Mega 2560

Arduino Mega 2560 är den näst vanligaste versionen av Arduino -familjen. Arduino Mega är som Arduino Unos biffigare storebror. Den har 256 KB minne (8 gånger mer än Uno). Den hade också 54 ingångs- och utgångsstiften, varav 16 är analoga stift, och 14 av dem kan göra PWM. Men all den extra funktionaliteten kostar en lite större kretskort. Det kan göra ditt projekt mer kraftfullt, men det kommer också att göra ditt projekt större. Kolla in den officiella Arduino Mega 2560 -sidan för mer information.

Arduino Mega ADK

Denna specialiserade version av Arduino är i grunden en Arduino Mega som har utformats speciellt för gränssnitt med Android -smartphones. Även detta är nu en äldre version.

Arduino Yun

Arduino Yun använder ett ATMega32U4 -chip istället för ATmega328. Men det som verkligen skiljer det från är tillägget av Atheros AR9331 -mikroprocessorn. Detta extra chip tillåter detta kort att köra Linux utöver det vanliga Arduino -operativsystemet. Om allt detta inte var tillräckligt, har det också inbyggd wifi -funktion. Med andra ord kan du programmera styrelsen för att göra saker som du skulle med alla andra Arduino, men du kan också komma åt Linux -sidan av kortet för att ansluta till internet via wifi. Arduino-sidan och Linux-sidan kan sedan enkelt kommunicera fram och tillbaka med varandra. Detta gör denna bräda extremt kraftfull och mångsidig. Jag kliar knappt upp ytan på vad du kan göra med det här, men för att lära dig mer, kolla in den officiella Arduino Yun -sidan.

Arduino Nano

Om du vill gå mindre än vanliga Arduino -kortet är Arduino Nano något för dig! Baserat på ett ytmonterat ATmega328 -chip har denna version av Arduino krympt till ett litet fotavtryck som kan passa in i trånga utrymmen. Det kan också sättas in direkt i en brödbräda, vilket gör det enkelt att prototypa med.

Arduino LilyPad

LilyPad är designad för bärbara och e-textilapplikationer. Den är avsedd att sys i tyg och anslutas till andra sybara komponenter med hjälp av ledande tråd. Detta kort kräver användning av en speciell FTDI-USB TTL seriell programmeringskabel. För mer information är Arduino LilyPad -sidan en anständig utgångspunkt.

(Observera att några av länkarna på denna sida är affiliatelänkar. Detta ändrar inte kostnaden för varan för dig. Jag återinvesterar vad jag får för att göra nya projekt. Om du vill ha förslag på alternativa leverantörer, låt mig känna till.)

Steg 2: Arduino Uno -funktioner

Arduino Uno -funktioner
Arduino Uno -funktioner

Vissa människor tänker på hela Arduino -kortet som en mikrokontroller, men detta är felaktigt. Arduino -kortet är faktiskt ett specialdesignat kretskort för programmering och prototyper med Atmel -mikrokontroller.

Det fina med Arduino-kortet är att det är relativt billigt, ansluts direkt till en dators USB-port och det är enkelt att installera och använda (jämfört med andra utvecklingskort).

Några av de viktigaste funktionerna i Arduino Uno inkluderar:

  • En öppen källkod design. Fördelen med att den är öppen källkod är att den har en stor grupp människor som använder och felsöker den. Detta gör det enkelt att hitta någon som hjälper dig att felsöka dina projekt.
  • Ett enkelt USB -gränssnitt. Chippet på kortet ansluts direkt till din USB -port och registreras på din dator som en virtuell serieport. Detta låter dig ansluta till det som genom en seriell enhet. Fördelen med den här inställningen är att seriell kommunikation är ett extremt enkelt (och tidstestat) protokoll, och USB gör det enkelt att ansluta den till moderna datorer.
  • Mycket bekväm strömhantering och inbyggd spänningsreglering. Du kan ansluta en extern strömkälla på upp till 12v och den reglerar den till både 5v och 3.3v. Den kan också slås av direkt från en USB -port utan extern ström.
  • En lätt att hitta och smutsig "mikrokontroller" hjärna. ATmega328 -chipet säljs för cirka 2,88 dollar på Digikey. Den har otaliga fina hårdvarufunktioner som timers, PWM -stift, externa och interna avbrott och flera vilolägen. Kolla in det officiella databladet för mer information.
  • En 16mhz klocka. Detta gör den inte till den snabbaste mikrokontrollern som finns, men tillräckligt snabbt för de flesta applikationer.
  • 32 KB flashminne för lagring av din kod.
  • 13 digitala stift och 6 analoga stift. Med dessa stift kan du ansluta extern hårdvara till din Arduino. Dessa stift är nyckeln för att utöka Arduino: s beräkningskapacitet till den verkliga världen. Anslut helt enkelt dina enheter och sensorer till uttagen som motsvarar var och en av dessa stift så är du klar.
  • En ICSP -kontakt för att kringgå USB -porten och ansluta Arduino direkt som en seriell enhet. Denna port är nödvändig för att starta om ditt chip om det skadar och inte längre kan prata med din dator.
  • En inbyggd LED ansluten till digital pin 13 för snabb och enkel felsökning av kod.
  • Och sist, men inte minst, en knapp för att återställa programmet på chipet.

För en fullständig genomgång av allt som Arduino Uno har att erbjuda, se till att kolla in den officiella Arduino -sidan.

Steg 3: Arduino IDE

Arduino IDE
Arduino IDE

Innan du kan börja göra något med Arduino måste du ladda ner och installera Arduino IDE (integrerad utvecklingsmiljö). Från och med nu kommer vi att hänvisa till Arduino IDE som Arduino -programmeraren.

Arduino -programmeraren är baserad på Processing IDE och använder en variation av programmeringsspråken C och C ++.

Du hittar den senaste versionen av Arduino -programmeraren på den här sidan.

Steg 4: Anslut den

Koppla in den
Koppla in den

Anslut Arduino till datorns USB -port.

Observera att även om Arduino ansluts till din dator, så är det inte en äkta USB -enhet. Kortet har ett speciellt chip som gör att det kan visas på din dator som en virtuell serieport när den är ansluten till en USB -port. Det är därför det är viktigt att koppla in kortet. När kortet inte är anslutet kommer den virtuella serieporten som Arduino fungerar på inte att finnas (eftersom all information om den finns på Arduino -kortet).

Det är också bra att veta att varje enskild Arduino har en unik virtuell serieportadress. Det betyder att varje gång du ansluter ett annat Arduino -kort till din dator måste du konfigurera om den seriella porten som används.

Arduino Uno kräver en USB A -hane till manlig USB B -kabel.

Steg 5: Inställningar

inställningar
inställningar
inställningar
inställningar

Innan du kan börja göra något i Arduino-programmeraren måste du ställa in korttyp och serieport.

För att ställa in tavlan, gå till följande:

Verktygstavlor

Välj den version av kortet du använder. Eftersom jag har en Arduino Uno ansluten valde jag självklart "Arduino Uno".

För att ställa in serieporten, gå till följande:

Verktyg Seriell port

Välj den seriella porten som ser ut:

/dev/tty.usbmodem [slumpmässiga tal]

Steg 6: Kör en skiss

Kör en skiss
Kör en skiss
Kör en skiss
Kör en skiss
Kör en skiss
Kör en skiss

Arduino -program kallas skisser. Arduino -programmeraren kommer med massor av exempelskisser förinstallerade. Det här är fantastiskt för även om du aldrig har programmerat något i ditt liv kan du ladda en av dessa skisser och få Arduino att göra något.

För att få lysdioden knuten till digital stift 13 för att blinka på och av, låt oss ladda blinkningsexemplet.

Blinksexemplet hittar du här:

Filer Exempel Grunder Blink

Blink -exemplet ställer i princip in stift D13 som en utgång och blinkar sedan test -LED på Arduino -kortet på och av varje sekund.

När blinkningsexemplet är öppet kan det installeras på ATMEGA328 -chipet genom att trycka på uppladdningsknappen, som ser ut som en pil som pekar åt höger.

Observera att statusmonteringslampan för ytmontering som är ansluten till stift 13 på Arduino börjar blinka. Du kan ändra blinkningshastigheten genom att ändra fördröjningens längd och trycka på uppladdningsknappen igen.

Steg 7: Seriell bildskärm

Seriell bildskärm
Seriell bildskärm
Seriell bildskärm
Seriell bildskärm

Med den seriella bildskärmen kan din dator ansluta seriellt till Arduino. Detta är viktigt eftersom det tar data som din Arduino tar emot från sensorer och andra enheter och visar det i realtid på din dator. Att ha denna förmåga är ovärderlig för att felsöka din kod och förstå vilka talvärden chipet faktiskt får.

Anslut till exempel mittsvep (mittstift) på en potentiometer till A0 respektive de yttre stiften till 5v och jord. Ladda sedan upp skissen som visas nedan:

Filexempel 1. Basics AnalogReadSerial

Klicka på knappen för att aktivera den seriella bildskärmen som ser ut som ett förstoringsglas. Du kan nu se siffrorna som läses av den analoga stiftet i den seriella bildskärmen. När du vrider på ratten kommer siffrorna att öka och minska.

Siffrorna kommer att ligga mellan 0 och 1023. Anledningen till detta är att den analoga stiftet konverterar en spänning mellan 0 och 5V till ett diskret tal.

Steg 8: Digital ingång

Digital in
Digital in

Arduino har två olika typer av ingångsstiften, de är analoga och digitala.

Till att börja med, låt oss titta på de digitala ingångsstiften.

Digitala ingångar har bara två möjliga tillstånd, som är på eller av. Dessa två av- och påstater kallas också:

  • HÖG eller LÅG
  • 1 eller 0
  • 5V eller 0V.

Denna ingång används vanligtvis för att känna av närvaron av spänning när en omkopplare öppnas eller stängs.

Digitala ingångar kan också användas som grund för otaliga digitala kommunikationsprotokoll. Genom att skapa en 5V (HIGH) puls eller 0V (LOW) puls kan du skapa en binär signal, grunden för all beräkning. Detta är användbart för att prata med digitala sensorer som en PING ultraljudssensor eller för att kommunicera med andra enheter.

För ett enkelt exempel på en digital ingång som används, anslut en omkopplare från digital stift 2 till 5V, ett 10K motstånd ** från digital stift 2 till jord, och kör följande kod:

Filexempel 2. Digital knapp

** 10K-motståndet kallas ett neddragningsmotstånd eftersom det ansluter den digitala stiftet till jord när omkopplaren inte trycks in. När strömbrytaren trycks in har de elektriska anslutningarna i omkopplaren mindre motstånd än motståndet, och elen ansluts inte längre till jord. Istället flyter el mellan 5V och den digitala stiftet. Detta beror på att elektricitet alltid väljer minsta motståndets väg. För mer information om detta, besök sidan Digital Pins.

Steg 9: Analog in

Analog in
Analog in

Bortsett från de digitala ingångsstiften har Arduino också ett antal analoga ingångsstiften.

Analoga ingångsstiften tar en analog signal och utför en 10-bitars analog-till-digital (ADC) -omvandling för att förvandla den till ett tal mellan 0 och 1023 (4,9 mV steg).

Denna typ av ingång är bra för att läsa resistiva sensorer. Dessa är i grunden sensorer som ger motstånd mot kretsen. De är också bra för att läsa en varierande spänningssignal mellan 0 och 5V. Detta är användbart vid gränssnitt med olika typer av analoga kretsar.

Om du följde exemplet i steg 7 för att koppla in den seriella bildskärmen har du redan försökt använda en analog ingångsstift.

Steg 10: Digital utgång

Digital utgång
Digital utgång

En digital utpinne kan ställas in på HÖG (5v) eller LÅG (0v). Detta gör att du kan slå på och av saker.

Bortsett från att slå på och stänga av saker (och få lysdioder att blinka), är denna form av utmatning bekväm för ett antal applikationer.

Framför allt kan du kommunicera digitalt. Genom att snabbt slå på och av stiftet skapar du binära tillstånd (0 och 1), som igenkänns av otaliga andra elektroniska enheter som en binär signal. Genom att använda denna metod kan du kommunicera med ett antal olika protokoll.

Digital kommunikation är ett avancerat ämne, men för att få en allmän uppfattning om vad som kan göras, kolla in sidan Interfacing With Hardware.

Om du följde exemplet i steg 6 för att få en lysdiod att blinka har du redan försökt använda en digital utgångsstift.

Steg 11: Analog ut

Analog ut
Analog ut

Som nämnts tidigare har Arduino ett antal inbyggda specialfunktioner. En av dessa specialfunktioner är pulsbreddsmodulation, vilket är hur en Arduino kan skapa en analogliknande utgång.

Pulsbreddsmodulering - eller PWM för kort - fungerar genom att snabbt vrida PWM -stiftet högt (5V) och lågt (0V) för att simulera en analog signal. Till exempel, om du skulle blinka och släcka en LED tillräckligt snabbt (ungefär fem millisekunder vardera) verkar det som att den genomsnittliga ljusstyrkan verkar och bara verkar få halva effekten. Alternativt, om det skulle blinka i 1 millisekund och sedan blinka i 9 millisekunder, verkar lysdioden vara 1/10 lika ljus och bara ta emot 1/10 spänningen.

PWM är nyckeln för ett antal applikationer, inklusive ljudframställning, kontroll av ljusstyrkan och kontroll av motorns hastighet.

För en mer ingående förklaring, kolla in hemligheterna på PWM-sidan.

För att prova PWM själv, anslut en LED och 220 ohm motstånd till digital stift 9, i serie till jord. Kör följande exempelkod:

Filexempel 3. Analog Fading

Steg 12: Skriv din egen kod

Skriv din egen kod
Skriv din egen kod

För att skriva din egen kod måste du lära dig några grundläggande syntax för programmeringsspråk. Med andra ord måste du lära dig hur du korrekt formar koden för att programmeraren ska förstå den. Du kan tänka dig den här typen av att förstå grammatik och skiljetecken. Du kan skriva en hel bok utan ordentlig grammatik och skiljetecken, men ingen kommer att kunna förstå den, även om den är på engelska.

Några viktiga saker att tänka på när du skriver din egen kod:

Ett Arduino -program kallas en skiss

All kod i en Arduino -skiss bearbetas uppifrån och ner

Arduino -skisser är vanligtvis uppdelade i fem delar

  1. Skissen börjar vanligtvis med en rubrik som förklarar vad skissen gör och vem som skrev den.
  2. Därefter definierar den vanligtvis globala variabler. Ofta är det här som konstant namn ges till de olika Arduino -stiften.
  3. Efter att de initiala variablerna har ställts in börjar Arduino installationsrutinen. I installationsfunktionen ställer vi in initiala villkor för variabler vid behov och kör eventuell preliminär kod som vi bara vill köra en gång. Det är här seriekommunikation initieras, vilket krävs för att köra seriell bildskärm.
  4. Från installationsfunktionen går vi till loop -rutinen. Detta är skissens huvudrutin. Det är inte bara dit din huvudkod går, utan den kommer att köras om och om igen, så länge skissen fortsätter att köras.
  5. Under loop -rutinen finns det ofta andra funktioner listade. Dessa funktioner är användardefinierade och aktiveras endast när de anropas i setup- och loop-rutinen. När dessa funktioner anropas bearbetar Arduino hela koden i funktionen uppifrån och ner och går sedan tillbaka till nästa rad i skissen där den slutade när funktionen anropades. Funktioner är bra eftersom de låter dig köra standardrutiner - om och om igen - utan att behöva skriva samma kodrader om och om igen. Du kan helt enkelt anropa en funktion flera gånger, och detta kommer att frigöra minne på chipet eftersom funktionsrutinen bara skrivs en gång. Det gör också koden lättare att läsa. För att lära dig hur du skapar dina egna funktioner, kolla in den här sidan.

Allt detta sagt, de enda två delarna av skissen som är obligatoriska är installations- och loop -rutinerna

Koden måste skrivas på Arduino -språket, som ungefär är baserat på C

Nästan alla uttalanden skrivna på Arduino -språket måste sluta med a;

Villkor (t.ex. om uttalanden och för slingor) inte behöver a;

Villkor har sina egna regler och finns under "Kontrollstrukturer" på sidan Arduino Language

Variabler är förvaringsfack för nummer. Du kan överföra värden till och från variabler. Variabler måste definieras (anges i koden) innan de kan användas och måste ha en datatyp kopplad till den. Om du vill lära dig några av de grundläggande datatyperna kan du granska språksidan

Okej! Så låt oss säga att vi vill skriva kod som läser en fotocell som är ansluten till stift A0 och använder den avläsning vi får från fotocellen för att styra ljusstyrkan på en LED ansluten till stift D9.

Först vill vi öppna BareMinimum -skissen, som finns på:

Filexempel 1. Basic BareMinimum

BareMinimum Sketch ska se ut så här:

void setup () {

// lägg din installationskod här, för att köra en gång:} void loop () {// lägg din huvudkod här, för att köra upprepade gånger:} Låt oss sedan lägga en rubrik på koden, så att andra människor vet om vad vi gör, varför och under vilka villkor

/*

LED Dimmer av Genius Arduino Programmer 2012 Kontrollerar ljusstyrkan på en LED på stift D9 baserat på avläsning av en fotocell på stift A0 Denna kod är i Public Domain */ void setup () {// lägg din installationskod här, för att köra once:} void loop () {// lägg din huvudkod här för att köra upprepade gånger:} När det hela är kvadrerat bort, låt oss definiera stiftnamnen och fastställa variabler

/*

LED Dimmer av Genius Arduino Programmer 2012 Styr ljusstyrkan på en LED på stift D9 baserat på avläsning av en fotocell på stift A0 Denna kod är i Public Domain */ // namn analog pin 0 ett konstant namn const int analogInPin = A0; // namn digital pin 9 ett konstant namn const int LEDPin = 9; // variabel för avläsning av en fotocell int fotocell; void setup () {// lägg din installationskod här, för att köra en gång:} void loop () {// lägg din huvudkod här, för att köra upprepade gånger:} Nu när variabler och pin -namn är inställda, låt oss skriva den faktiska koden

/*

LED Dimmer av Genius Arduino Programmer 2012 Styr ljusstyrkan på en LED på stift D9 baserat på avläsning av en fotocell på stift A0 Denna kod är i Public Domain */ // namn analog pin 0 ett konstant namn const int analogInPin = A0; // namn digital pin 9 ett konstant namn const int LEDPin = 9; // variabel för avläsning av en fotocell int fotocell; void setup () {// ingenting här just nu} void loop () {// läs analogen i stift och ställ in avläsningen till fotocellvariabeln photocell = analogRead (analogInPin); // styra LED -stiftet med värdet avläst av fotocellen analogWrite (LEDPin, fotocell); // pausa koden i 1/10 sekund // 1 sekund = 1000 fördröjning (100); } Om vi vill se vilka siffror den analoga stiftet faktiskt läser från fotocellen, måste vi använda den seriella bildskärmen. Låt oss aktivera serieporten och mata ut dessa nummer

/*

LED Dimmer av Genius Arduino Programmer 2012 Styr ljusstyrkan på en LED på stift D9 baserat på avläsning av en fotocell på stift A0 Denna kod är i Public Domain */ // namn analog pin 0 ett konstant namn const int analogInPin = A0; // namn digital pin 9 ett konstant namn const int LEDPin = 9; // variabel för avläsning av en fotocell int fotocell; void setup () {Serial.begin (9600); } void loop () {// läs analogen i stift och ställ in avläsningen till fotocellvariabeln fotocell = analogRead (analogInPin); // skriva ut fotocellvärdet i seriell bildskärm Serial.print ("Fotocell ="); Serial.println (fotocell); // styra LED -stiftet med värdet avläst av fotocellen analogWrite (LEDPin, fotocell); // pausa koden i 1/10 sekund // 1 sekund = 1000 fördröjning (100); }För mer information om formulering av kod, besök Foundations -sidan. Om du behöver hjälp med Arduino -språket är språksidan rätt plats för dig.

Exempelskissidan är också ett bra ställe att börja krångla med kod. Var inte rädd för att ändra saker och experimentera.

Steg 13: Sköldar

Sköldar
Sköldar

Sköldar är expansions -apdapterkort som ansluts över Arduino Uno och ger den speciella funktioner.

Eftersom Arduino är öppen hårdvara kan alla som har lutningen göra en Arduino -sköld för vilken uppgift de vill utföra. På grund av detta finns det otaliga antal Arduino -sköldar ute i naturen. Du kan hitta en ständigt växande lista över Arduino-sköldar på Arduino-lekplatsen. Tänk på att det kommer att finnas mer sköld än vad du hittar på listade på den sidan (som alltid är Google din vän).

För att ge dig en liten känsla av möjligheterna hos Arduino -sköldar, kolla in dessa självstudier om hur du använder tre officiella Arduino -sköldar:

  • Trådlös SD -skärm
  • Ethernet -sköld
  • Motorskydd

Steg 14: Bygga en extern krets

Bygga en extern krets
Bygga en extern krets

När dina projekt blir mer komplexa kommer du att vilja bygga dina egna kretsar för att ansluta till Arduino. Även om du inte lär dig elektronik över en natt, är internet en otrolig resurs för elektronisk kunskap och kretsscheman.

För att komma igång med elektronik, besök Basic Electronics Instructable.

Steg 15: Going Beyond

Går bortom
Går bortom

Härifrån är det bara att göra några projekt. Det finns otaliga fantastiska Arduino -resurser och handledning online.

Se till att kolla in den officiella Arduino -sidan och forumet. Informationen som listas här är ovärderlig och mycket komplett. Detta är en bra resurs för felsökningsprojekt.

Om du behöver inspiration för några roliga nybörjarprojekt, kolla in 20 Unbelievable Arduino Projects guide.

För en omfattande lista eller Arduino -projekt är Arduino Channel ett bra ställe att börja.

Det är allt. Du är på egen hand.

Lycka till och lycklig hackning!

Bild
Bild

Tyckte du att det här var användbart, roligt eller underhållande? Följ @madeineuphoria för att se mina senaste projekt.

Rekommenderad: