Съдържание:

Въведение в Arduino: 15 стъпки (със снимки)
Въведение в Arduino: 15 стъпки (със снимки)

Видео: Въведение в Arduino: 15 стъпки (със снимки)

Видео: Въведение в Arduino: 15 стъпки (със снимки)
Видео: 🤖Я в шоке! ChatGPT пишет Arduino проекты 2024, Юли
Anonim
Въведение в Arduino
Въведение в Arduino

Arduino е платка за разработка на микроконтролер с отворен код. На обикновен английски можете да използвате Arduino за четене на сензори и управление на неща като двигатели и светлини. Това ви позволява да качвате програми на тази дъска, които след това могат да взаимодействат с нещата в реалния свят. С това можете да създавате устройства, които реагират и реагират на света като цяло.

Например, можете да прочетете сензор за влажност, свързан към саксийно растение, и да включите автоматична поливна система, ако стане прекалено суха. Или можете да направите самостоятелен чат сървър, който е включен във вашия интернет рутер. Или можете да го пуснете в туит всеки път, когато котката ви мине през вратата на домашен любимец. Или можете да го накарате да започне каничка, когато алармата ви се задейства сутрин.

По принцип, ако има нещо, което по някакъв начин се контролира от електричество, Arduino може да взаимодейства с него по някакъв начин. И дори да не се контролира от електричество, вероятно все още можете да използвате неща, които са (като двигатели и електромагнити), за да взаимодействате с него.

Възможностите на Arduino са почти неограничени. По този начин няма начин един единствен урок да покрие всичко, което някога може да се наложи да знаете. Въпреки това, направих всичко възможно да дам основен преглед на основните умения и знания, от които се нуждаете, за да стартирате вашия Arduino. Ако не повече, това трябва да функционира като трамплин за по -нататъшни експерименти и учене.

Стъпка 1: Различни видове Arduinos

Различни видове Arduinos
Различни видове Arduinos
Различни видове Arduinos
Различни видове Arduinos
Различни видове Arduinos
Различни видове Arduinos

Има няколко различни типа Arduinos, от които да избирате. Това е кратък преглед на някои от по -често срещаните типове дъски Arduino, които може да срещнете. За пълен списък на поддържаните в момента дъски на Arduino, вижте хардуерната страница на Arduino.

Arduino Uno

Най -често срещаната версия на Arduino е Arduino Uno. Това табло е това, за което повечето хора говорят, когато се позовават на Arduino. В следващата стъпка има по -пълно изчерпване на нейните функции.

Arduino NG, Diecimila и Duemilanove (Наследени версии)

Наследените версии на продуктовата линия Arduino Uno се състоят от NG, Diecimila и Duemilanove. Важното, което трябва да се отбележи при наследените дъски, е, че им липсват особености на Arduino Uno. Някои ключови разлики:

  • Diecimila и NG използват чипове ATMEGA168 (за разлика от по -мощните ATMEGA328),
  • И Diecimila, и NG имат джъмпер до USB порта и изискват ръчен избор на USB или захранване от батерията.
  • Arduino NG изисква да задържите бутона за почивка на дъската за няколко секунди, преди да качите програма.

Arduino Mega 2560

Arduino Mega 2560 е втората най -често срещана версия на семейството Arduino. Arduino Mega е като по -големия по -голям брат на Arduino Uno. Той може да се похвали с 256 KB памет (8 пъти повече от Uno). Той също така имаше 54 входни и изходни пина, 16 от които са аналогови и 14 от които могат да правят PWM. Въпреки това, цялата добавена функционалност идва с цената на малко по -голяма платка. Това може да направи вашия проект по -мощен, но също така ще направи проекта ви по -голям. Вижте официалната страница на Arduino Mega 2560 за повече подробности.

Arduino Mega ADK

Тази специализирана версия на Arduino е по същество Arduino Mega, която е специално проектирана за взаимодействие със смартфони с Android. Това също вече е наследствена версия.

Ардуино Юн

Arduino Yun използва чип ATMega32U4 вместо ATmega328. Това, което наистина го отличава, е добавянето на микропроцесора Atheros AR9331. Този допълнителен чип позволява на тази платка да работи с Linux в допълнение към нормалната операционна система Arduino. Ако всичко това не беше достатъчно, то има и вградена wifi възможност. С други думи, можете да програмирате дъската да прави неща, както бихте направили с всеки друг Arduino, но можете също да получите достъп до страничната част на дъската на Linux, за да се свържете с интернет чрез wifi. Страната Arduino и Linux могат лесно да комуникират взаимно напред и назад. Това прави тази дъска изключително мощна и универсална. Едва надрасквам повърхността на това, което можете да направите с това, но за да научите повече, разгледайте официалната страница на Arduino Yun.

Arduino Nano

Ако искате да бъдете по -малки от стандартната платка Arduino, Arduino Nano е за вас! Въз основа на чип ATmega328 с повърхностен монтаж, тази версия на Arduino е свита до малък отпечатък, който може да се побере в тесни пространства. Той може също да бъде поставен директно в макет, което улеснява създаването на прототип.

Arduino LilyPad

LilyPad е проектиран за носещи и електронни текстилни приложения. Той е предназначен да бъде пришит към плат и свързан с други компоненти за канализация с помощта на проводима нишка. Тази платка изисква използването на специален кабел за серийно програмиране FTDI-USB TTL. За повече информация страницата Arduino LilyPad е прилична отправна точка.

(Обърнете внимание, че някои от връзките на тази страница са партньорски връзки. Това не променя цената на артикула за вас. Реинвестирам всички приходи, които получавам, в създаването на нови проекти. Ако искате някакви предложения за алтернативни доставчици, моля, позволете ми зная.)

Стъпка 2: Функции на Arduino Uno

Характеристики на Arduino Uno
Характеристики на Arduino Uno

Някои хора мислят за цялата платка Arduino като микроконтролер, но това е неточно. Платката Arduino всъщност е специално проектирана платка за програмиране и прототипиране с микроконтролери Atmel.

Хубавото на дъската Arduino е, че е сравнително евтина, включва се директно в USB порта на компютъра и е мъртва-лесна за настройка и използване (в сравнение с други платки за разработка).

Някои от основните характеристики на Arduino Uno включват:

  • Дизайн с отворен код. Предимството на това, че е с отворен код, е, че има голяма общност от хора, които го използват и отстраняват неизправности. Това улеснява намирането на някой, който да ви помогне да отстраните грешките в проектите си.
  • Лесен USB интерфейс. Чипът на платката се включва директно във вашия USB порт и се регистрира на вашия компютър като виртуален сериен порт. Това ви позволява да взаимодействате с него, както чрез него като серийно устройство. Предимството на тази настройка е, че серийната комуникация е изключително лесен (и изпитан във времето) протокол, а USB прави свързването му със съвременни компютри наистина удобно.
  • Много удобно управление на захранването и вградено регулиране на напрежението. Можете да свържете външен източник на захранване до 12v и той ще го регулира както на 5v, така и на 3.3v. Също така може да се захранва директно от USB порт без външно захранване.
  • Лесен за намиране и евтин за мръсотия микроконтролер „мозък“. Чипът ATmega328 се продава на дребно за около 2,88 долара на Digikey. Той има безброй много хубави хардуерни функции като таймери, PWM щифтове, външни и вътрешни прекъсвания и множество режими на заспиване. Вижте официалния лист с данни за повече подробности.
  • 16 -мегахерцов часовник. Това го прави не най -бързият микроконтролер, но достатъчно бърз за повечето приложения.
  • 32 KB флаш памет за съхранение на вашия код.
  • 13 цифрови пина и 6 аналогови пина. Тези щифтове ви позволяват да свържете външен хардуер към вашия Arduino. Тези щифтове са ключови за разширяване на изчислителните възможности на Arduino в реалния свят. Просто включете вашите устройства и сензори в гнездата, които отговарят на всеки от тези щифтове, и сте готови.
  • ICSP конектор за заобикаляне на USB порта и свързване на Arduino директно като серийно устройство. Този порт е необходим за повторно зареждане на вашия чип, ако той се повреди и вече не може да говори с вашия компютър.
  • Вграден светодиод, прикрепен към цифров щифт 13 за бързо и лесно отстраняване на грешки в кода.
  • И не на последно място, бутон за нулиране на програмата на чипа.

За пълен обзор на всичко, което Arduino Uno може да предложи, не забравяйте да разгледате официалната страница на Arduino.

Стъпка 3: Arduino IDE

Arduino IDE
Arduino IDE

Преди да можете да започнете да правите нещо с Arduino, трябва да изтеглите и инсталирате Arduino IDE (интегрирана среда за разработка). От този момент нататък ще говорим за Arduino IDE като Arduino програмист.

Arduino Programmer се основава на IDE за обработка и използва вариация на езиците за програмиране на C и C ++.

На тази страница можете да намерите най -новата версия на Arduino Programmer.

Стъпка 4: Включете го

Включи го
Включи го

Свържете Arduino към USB порта на вашия компютър.

Моля, обърнете внимание, че въпреки че Arduino се включва към вашия компютър, това не е истинско USB устройство. Платката има специален чип, който позволява да се показва на вашия компютър като виртуален сериен порт, когато е включен в USB порт. Ето защо е важно да включите платката. Когато платката не е свързана, виртуалният сериен порт, върху който работи Arduino, няма да присъства (тъй като цялата информация за него се намира на дъската на Arduino).

Също така е добре да знаете, че всеки един Arduino има уникален адрес на виртуален сериен порт. Това означава, че всеки път, когато включвате различна платка Arduino към вашия компютър, ще трябва да преконфигурирате серийния порт, който се използва.

Arduino Uno изисква мъжки USB A към мъжки USB B кабел.

Стъпка 5: Настройки

Настройки
Настройки
Настройки
Настройки

Преди да можете да започнете да правите каквото и да е в програмиста на Arduino, трябва да настроите типа платка и серийния порт.

За да настроите дъската, отидете на следното:

Табла за инструменти

Изберете версията на платката, която използвате. Тъй като имам включен Arduino Uno, очевидно съм избрал „Arduino Uno“.

За да настроите серийния порт, отидете на следното:

Инструменти Сериен порт

Изберете серийния порт, който изглежда така:

/dev/tty.usbmodem [случайни числа]

Стъпка 6: Изпълнете скица

Пуснете скица
Пуснете скица
Пуснете скица
Пуснете скица
Пуснете скица
Пуснете скица

Програмите на Arduino се наричат скици. Програмистът на Arduino идва с много предварително заредени примерни скици. Това е чудесно, защото дори и никога да не сте програмирали нищо в живота си, можете да заредите една от тези скици и да накарате Arduino да направи нещо.

За да свържете светодиода към цифров щифт 13, за да мига и изключва, нека заредим примера за мигане.

Примерът за мигане може да се намери тук:

Примери за файлове Основи Мига

Примерът за мигане основно задава извод D13 като изход и след това мига тестовия светодиод на платката Arduino, който се включва и изключва всяка секунда.

След като примерът за мигане е отворен, той може да бъде инсталиран на чипа ATMEGA328 чрез натискане на бутона за качване, който изглежда като стрелка, сочеща надясно.

Забележете, че светодиодът за състояние на повърхностен монтаж, свързан към щифт 13 на Arduino, ще започне да мига. Можете да промените скоростта на мигане, като промените дължината на забавянето и отново натиснете бутона за качване.

Стъпка 7: Сериен монитор

Сериен монитор
Сериен монитор
Сериен монитор
Сериен монитор

Серийният монитор позволява на компютъра ви да се свързва последователно с Arduino. Това е важно, защото взема данни, които вашият Arduino получава от сензори и други устройства и ги показва в реално време на вашия компютър. Наличието на тази способност е безценно, за да отстраните грешките в кода си и да разберете какви стойности на числата всъщност получава чипът.

Например, свържете централно разгъване (среден щифт) на потенциометър към A0 и външните щифтове съответно към 5v и маса. След това качете скицата, показана по -долу:

Примери за файлове 1. Основи AnalogReadSerial

Щракнете върху бутона, за да включите серийния монитор, който прилича на лупа. Сега можете да видите числата, които се четат от аналоговия щифт в серийния монитор. Когато завъртите копчето, числата ще се увеличават и намаляват.

Числата ще бъдат в диапазона от 0 до 1023. Причината за това е, че аналоговият щифт преобразува напрежение между 0 и 5V в дискретно число.

Стъпка 8: Цифров вход

Цифров вход
Цифров вход

Arduino има два различни типа входни щифтове, тези са аналогови и цифрови.

Като начало, нека разгледаме щифтовете за цифров вход.

Пиновете за цифров вход имат само две възможни състояния, които са включени или изключени. Тези две състояния на включване и изключване се наричат още:

  • ВИСОК или НИСКИ
  • 1 или 0
  • 5V или 0V.

Този вход обикновено се използва за усещане на наличието на напрежение при отваряне или затваряне на превключвател.

Цифровите входове могат да се използват и като основа за безброй цифрови комуникационни протоколи. Създавайки 5V (ВИСОК) импулс или 0V (НИСКИ) импулс, можете да създадете двоичен сигнал, основата на всички изчисления. Това е полезно за разговори с цифрови сензори като ултразвуков сензор PING или за комуникация с други устройства.

За прост пример за използване на цифров вход, свържете превключвател от цифров извод 2 към 5V, 10K резистор ** от цифров извод 2 към земята и изпълнете следния код:

Примери за файлове 2. Цифров бутон

** 10K резисторът се нарича изтеглящ резистор, защото свързва цифровия щифт към земята, когато превключвателят не е натиснат. Когато превключвателят е натиснат, електрическите връзки в превключвателя имат по -малко съпротивление от резистора и електричеството вече не се свързва към земята. Вместо това електричеството протича между 5V и цифровия щифт. Това е така, защото електричеството винаги избира пътя на най -малкото съпротивление. За да научите повече за това, посетете страницата Digital Pins.

Стъпка 9: Аналогов вход

Аналогов вход
Аналогов вход

Освен пиновете за цифров вход, Arduino може да се похвали и с редица аналогови входни щифтове.

Пиновете за аналогов вход приемат аналогов сигнал и извършват 10-битово аналогово-цифрово (ADC) преобразуване, за да го превърнат в число между 0 и 1023 (стъпки 4.9mV).

Този тип вход е добър за четене на резистивни сензори. Това са основно сензори, които осигуряват устойчивост на веригата. Те също са добри за четене на сигнал с различно напрежение между 0 и 5V. Това е полезно при взаимодействие с различни видове аналогови схеми.

Ако сте последвали примера в Стъпка 7 за включване на серийния монитор, вече сте опитали да използвате аналогов входен щифт.

Стъпка 10: Цифров изход

Цифров изход
Цифров изход

Изходът за цифров изход може да бъде настроен на HIGH (5v) или LOW (0v). Това ви позволява да включвате и изключвате нещата.

Освен че включва и изключва нещата (и кара светодиодите да мигат), тази форма на изход е удобна за редица приложения.

Най -вече ви позволява да комуникирате по цифров път. Чрез бързо включване и изключване на щифта вие създавате двоични състояния (0 и 1), които се разпознават от безброй други електронни устройства като двоичен сигнал. Използвайки този метод, можете да комуникирате, използвайки редица различни протоколи.

Дигиталната комуникация е напреднала тема, но за да получите обща представа какво може да се направи, вижте страницата „Взаимодействие с хардуер“.

Ако сте последвали примера в стъпка 6, за да накарате светодиода да мига, вече сте опитали да използвате изход за цифров изход.

Стъпка 11: Аналогов изход

Аналогов изход
Аналогов изход

Както бе споменато по -рано, Arduino има редица вградени специални функции. Една от тези специални функции е широчинно-импулсна модулация, по която Arduino може да създаде аналогов изход.

Широтно -импулсната модулация - или PWM за кратко - работи чрез бързо завъртане на PWM щифта високо (5V) и ниско (0V), за да симулира аналогов сигнал. Например, ако трябва да мигате и изключвате светодиод достатъчно бързо (около пет милисекунди всеки), изглежда, че осреднява яркостта и изглежда, че получава само половината мощност. Алтернативно, ако трябва да мига за 1 милисекунда и след това да мига за 9 милисекунди, светодиодът ще изглежда 1/10 толкова ярък и ще приема само 1/10 напрежението.

ШИМ е ключов за редица приложения, включително издаване на звук, контрол на яркостта на светлините и контрол на скоростта на двигателите.

За по-задълбочено обяснение проверете тайните на PWM страницата.

За да изпробвате сами ШИМ, свържете LED и 220 омов резистор към цифров извод 9, последователно към земята. Изпълнете следния примерен код:

Примери за файлове 3. Аналогово избледняване

Стъпка 12: Напишете свой собствен код

Напишете свой собствен код
Напишете свой собствен код

За да напишете свой собствен код, ще трябва да научите основен синтаксис на езика за програмиране. С други думи, трябва да се научите как правилно да оформите кода, за да го разбере програмистът. Можете да мислите за този вид като разбиране на граматиката и пунктуацията. Можете да напишете цяла книга без подходяща граматика и пунктуация, но никой няма да може да я разбере, дори и да е на английски.

Някои важни неща, които трябва да имате предвид, когато пишете свой собствен код:

Програма Arduino се нарича скица

Целият код в скица на Arduino се обработва отгоре надолу

Скиците на Arduino обикновено са разделени на пет части

  1. Скицата обикновено започва с заглавка, която обяснява какво прави скицата и кой я е написал.
  2. След това обикновено дефинира глобални променливи. Често тук се дават постоянни имена на различните щифтове на Arduino.
  3. След като първоначалните променливи са зададени, Arduino започва рутинната настройка. Във функцията за настройка ние задаваме начални условия на променливите, когато е необходимо, и изпълняваме всеки предварителен код, който искаме да изпълним само веднъж. Тук се инициира серийна комуникация, която е необходима за стартиране на серийния монитор.
  4. От функцията за настройка преминаваме към рутината на цикъла. Това е основната рутина на скицата. Това не е само мястото, където отива основният ви код, но той ще се изпълнява отново и отново, стига скицата да продължи да се изпълнява.
  5. Под цикъла на цикъла често има изброени други функции. Тези функции са дефинирани от потребителя и се активират само когато се извикат в рутината за настройка и цикъл. Когато се извикат тези функции, Arduino обработва целия код във функцията отгоре надолу и след това се връща към следващия ред в скицата, където е спрял при извикването на функцията. Функциите са добри, защото ви позволяват да изпълнявате стандартни процедури - отново и отново - без да се налага да пишете едни и същи редове код отново и отново. Можете просто да извикате функция няколко пъти и това ще освободи паметта на чипа, тъй като рутинната функция се записва само веднъж. Освен това прави кода по -лесен за четене. За да научите как да създавате свои собствени функции, разгледайте тази страница.

Всичко казано, единствените две части от скицата, които са задължителни, са програмите за настройка и цикъл

Кодът трябва да бъде написан на езика Arduino, който приблизително се основава на C

Почти всички изявления, написани на езика Arduino, трябва да завършват с a;

Условията (като например ако операторите и за цикли) не се нуждаят от a;

Условията имат свои собствени правила и могат да бъдат намерени в „Контролни структури“на страницата Arduino Language

Променливите са отделения за съхранение на числа. Можете да предавате стойности в и извън променливи. Променливите трябва да бъдат дефинирани (посочени в кода), преди да могат да се използват и трябва да имат свързан тип данни. За да научите някои от основните типове данни, прегледайте езиковата страница

Добре! Така че, нека кажем, че искаме да напишем код, който чете фотоклетка, свързана към пин А0, и използваме показанията, които получаваме от фотоклетката, за да контролираме яркостта на светодиод, свързан към щифт D9.

Първо, искаме да отворим скицата BareMinimum, която може да бъде намерена на:

Примери за файлове 1. Основен BareMinimum

BareMinimum Sketch трябва да изглежда така:

void setup () {

// поставете вашия код за настройка тук, за да се изпълнява веднъж:} void loop () {// поставете основния си код тук, за да се изпълнява многократно:} След това нека поставим заглавка на кода, така че другите хора да знаят какво правим, защо и при какви условия

/*

LED Dimmer от Genius Arduino Programmer 2012 Контролира яркостта на светодиода на щифт D9 въз основа на отчитането на фотоклетка на щифт A0 Този код е в Public Domain */ void setup () {// поставете вашия код за настройка тук, за да стартирате веднъж:} void loop () {// поставете основния си код тук, за да се изпълнява многократно:} След като всичко това е на квадрат, нека да дефинираме имената на пиновете и да установим променливи

/*

LED Dimmer от Genius Arduino Programmer 2012 Контролира яркостта на светодиод на щифт D9 въз основа на отчитането на фотоклетка на щифт A0 Този код е в Public Domain */ // име аналогов щифт 0 постоянно име const int analogInPin = A0; // име на цифров пин 9 постоянно име const int LEDPin = 9; // променлива за четене на фотоклетка int фотоклетка; void setup () {// поставете вашия код за настройка тук, за да стартирате веднъж:} void loop () {// поставете основния си код тук, за да се изпълнява многократно:} След като имената на променливите и пиновете са зададени, нека напишем действителния код

/*

LED Dimmer от Genius Arduino Programmer 2012 Контролира яркостта на светодиода на щифт D9 въз основа на отчитането на фотоклетка на щифт A0 Този код е в Public Domain */ // име аналогов щифт 0 постоянно име const int analogInPin = A0; // име на цифров пин 9 постоянно име const int LEDPin = 9; // променлива за четене на фотоклетка int фотоклетка; void setup () {// тук няма нищо в момента} void loop () {// прочетете аналога в пина и задайте показанието на променливата на фотоклетката photocell = analogRead (analogInPin); // управляваме светодиодния щифт, като използваме стойността, прочетена от фотоклетката analogWrite (LEDPin, фотоклетка); // пауза на кода за 1/10 секунда // 1 секунда = 1000 забавяне (100); } Ако искаме да видим какви числа аналоговият щифт всъщност чете от фотоклетката, ще трябва да използваме серийния монитор. Нека активираме серийния порт и изведем тези номера

/*

LED Dimmer от Genius Arduino Programmer 2012 Контролира яркостта на светодиода на щифт D9 въз основа на отчитането на фотоклетка на щифт A0 Този код е в Public Domain */ // име аналогов щифт 0 постоянно име const int analogInPin = A0; // име на цифров пин 9 постоянно име const int LEDPin = 9; // променлива за четене на фотоклетка int фотоклетка; void setup () {Serial.begin (9600); } void loop () {// прочетете аналога в щифт и задайте показанието на променливата на фотоклетката photocell = analogRead (analogInPin); // отпечатваме стойността на фотоклетката в серийния монитор Serial.print ("Photocell ="); Serial.println (фотоклетка); // контролираме LED щифта, като използваме стойността, прочетена от фотоклетката analogWrite (LEDPin, фотоелемент); // пауза на кода за 1/10 секунда // 1 секунда = 1000 забавяне (100); }За повече информация относно формулирането на код посетете страницата „Основи“. Ако имате нужда от помощ с езика Arduino, тогава езиковата страница е мястото за вас.

Също така, страницата с примерни скици е чудесно място да започнете да се забърквате с кода. Не се страхувайте да променяте нещата и да експериментирате.

Стъпка 13: Щитове

Щитове
Щитове

Щитовете са разширителни платки за адаптер, които се включват в горната част на Arduino Uno и му придават специални функции.

Тъй като Arduino е отворен хардуер, всеки, който има склонност, е свободен да направи Arduino щит за всяка задача, която иска да изпълни. Поради това в природата има безброй много щитове Arduino. Можете да намерите непрекъснато нарастващ списък с щитове на Arduino в детската площадка на Arduino. Имайте предвид, че ще има повече щит, отколкото ще намерите на изброените на тази страница (както винаги, Google е ваш приятел).

За да ви дадем малко представа за възможностите на щитовете Arduino, разгледайте тези уроци за това как да използвате три официални щита Arduino:

  • Безжичен SD щит
  • Ethernet щит
  • Двигателен щит

Стъпка 14: Изграждане на външна верига

Изграждане на външна верига
Изграждане на външна верига

Тъй като вашите проекти стават все по -сложни, ще искате да изградите свои собствени схеми, които да взаимодействат с Arduino. Въпреки че няма да научите електроника за една нощ, интернет е невероятен ресурс за електронни знания и електрически схеми.

За да започнете с електрониката, посетете Basic Electronics Instructable.

Стъпка 15: Излизане отвъд

Going Beyond
Going Beyond

Оттук нататък единственото нещо, което трябва да направите, е да направите някои проекти. Има безброй страхотни ресурси и уроци за Arduino онлайн.

Не забравяйте да разгледате официалната страница и форум на Arduino. Изброената тук информация е безценна и много пълна. Това е чудесен ресурс за отстраняване на грешки в проекти.

Ако имате нужда от вдъхновение за някои забавни начинаещи проекти, вижте ръководството за 20 невероятни проекта Arduino.

За обширен списък или проект на Arduino, Arduino Channel е чудесно място за начало.

Това е. Вие сте сами.

Успех и щастливо хакване!

Образ
Образ

Намерихте ли това полезно, забавно или забавно? Следвайте @madeineuphoria, за да видите последните ми проекти.

Препоръчано: