реклама

Искали ли сте някога да имате собствен автомобил Knight Industries Two Thousand (KITT) - знаете ли, от Knight Rider? Направете мечтата си една крачка по-близо до реалността, като изградите LED скенер! Ето и крайния резултат:

От какво имаш нужда

За този проект не са необходими много части и може би вече имате много от тях:

  • 1 x Arduino UNO или подобен
  • 1 х тавичка
  • 8 x червени светодиоди
  • 8 x 220 ома резистори
  • Потенциометър 1 x 10k ом
  • Мъжки към мъжки куки

Ако имате Arduino стартов комплект Какво е включено в стартовия комплект за Arduino? [MakeUseOf обяснява]По-рано представих хардуера с отворен код на Arduino тук на MakeUseOf, но ще ви трябва повече от само действителния Arduino, за да изградите нещо от него и всъщност да започнете. Arduino "стартови комплекти" са ... Прочетете още вероятно имате всички тези части (какво можете да направите с стартов комплект? 5 уникални Arduino проекта за начинаещи, които можете да направите само с стартов комплект Прочетете още ).

Почти всеки Arduino ще работи, при условие че разполага с осем налични щифта (Никога преди не сте използвали Arduino?

instagram viewer
Започнете тук Първи стъпки с Arduino: Ръководство за начинаещиArduino е платформа за създаване на прототипи за електроника с отворен код, базирана на гъвкав, лесен за използване хардуер и софтуер. Той е предназначен за художници, дизайнери, любители и всички, които се интересуват от създаването на интерактивни обекти или среди. Прочетете още ). Можеш използвайте Shift регистър Програмиране на Arduino - Игра със сменени регистри (a.k.a Още повече светодиоди)Днес ще се опитам да ви науча малко за регистрите Shift. Това са доста важна част от програмирането на Arduino, основно защото те разширяват броя на изходите, които можете да използвате, в замяна на ... Прочетете още за управление на светодиодите, въпреки че това не е необходимо за този проект, тъй като Arduino има достатъчно пинове.

Изградете план

Arduino-Knight Rider--LED-скенер-Complete
Това е много прост проект. Въпреки че може да изглежда сложно от големия брой проводници, всяка отделна част е много проста. Всеки светодиод (LED) е свързан със собствения си пин Arduino. Това означава, че всеки светодиод може да бъде включен и изключен индивидуално. Към аналога на Arduino в щифтове е свързан потенциометър, който ще се използва за регулиране на скоростта на скенера.

Веригата

Arduino-Knight Rider--Circuit
Свържете външния ляв щифт (гледайки отпред, с щифтовете в долната част) на потенциометъра към земята. Свържете противоположния външен щифт към + 5V. Ако не работи правилно, обърнете тези щифтове. Свържете средния щифт към Arduino аналог в 2.

Свържете анода (дълъг крак) на всеки светодиод към цифрови щифтове един до осем. Свържете катодите (къс крак) към земята Arduino.

Кодът

Създайте нова скица и я запишете като „knightRider“. Ето кода:

const int led [] = {1,2,3,4,5,6,7,8}; // Led щифтове. const int totalLeds = 8; int време = 50; // Настройка на невалидната скорост по подразбиране () {// Инициализиране на всички изходи за (int i = 0; i <= totalLeds; ++ i) {pinMode (води [i], OUTPUT); } } void loop () {for (int i = 0; i  0; --i) {// Сканиране отдясно на ляво време = analogRead (2); digitalWrite (води [i], HIGH); закъснение); digitalWrite (светодиоди [i - 1], HIGH); закъснение); digitalWrite (води [i], LOW); } }

Нека го разградим Всеки светодиоден щифт се съхранява в масив:

const int led [] = {1,2,3,4,5,6,7,8};

Масивът е по същество колекция от свързани елементи. Тези елементи са дефинирани като постоянни („const“), което означава, че не могат да бъдат променяни по-късно. Не е нужно да използвате константа (кодът ще работи перфектно, ако премахнете „const“), въпреки че е препоръчително.

Достъп до елементи от масива се използват с помощта на квадратни скоби („[]“) и цяло число, наречено индекс. Индексите започват от нула, така че "led [2]" ще върне третия елемент в масива - пин 3. Масивите правят кода по-бърз за писане и по-лесен за четене, те карат компютъра да свърши тежката работа!

A за цикъл се използва за настройка на всеки пин като изход:

за (int i = 0; i <= totalLeds; ++ i) {pinMode (води [i], OUTPUT); }

Този код е вътре във функцията “setup ()”, тъй като трябва да се стартира само веднъж в началото на програмата. За бримки са много полезни. Те ви позволяват да пускате един и същ код отново и отново, с различна стойност всеки път. Те са идеални за работа с масиви. Декларирано е цяло число „i“ и само код вътре в цикъла има достъп до тази променлива (това е известно като „обхват“). Стойността на i започва от нула и за всяка итерация на цикъла i се увеличава с една. След като стойността на i е по-малка или равна на променливата „totalLeds“, цикълът „се прекъсва“ (спира).

Стойността на i се използва за достъп до масива „led“. Този цикъл осъществява достъп до всеки елемент от масива и го конфигурира като изход. Бихте могли ръчно да напишете „pinMode (pin, OUTPUT)“ осем пъти, но защо да пишете осем реда, когато можете да напишете три?

Докато някои езици за програмиране могат да ви кажат колко елементи са в масив (обикновено със синтаксис като array.length), Arduino не го прави толкова прост (включва малко повече математика). Тъй като броят на елементите в масива вече е известен, това не е проблем.

Arduino-Knight Rider--светодиоди

Вътре в основния контур (void loop ()) са още две за бримки. Първият свети светодиодите и след това изключва от 1 - 8. Вторият контур включва светодиодите включени и след това изключени от 8 - 1. Забележете как е зададен текущият щифт, както и текущият щифт плюс един. Това гарантира, че винаги има два светодиода едновременно, което прави скенера по-реалистичен.

В началото на всеки цикъл стойността на пота се чете в променливата „време“:

време = analogRead (2);

Това се прави два пъти, веднъж във всеки цикъл. Това трябва постоянно да се проверява и актуализира. Ако това е извън бримките, тя все още ще работи, но ще има малко закъснение - тя ще се изпълни само след като цикълът приключи изпълнението. Съдовете са аналогови, затова се използва "analogRead (pin)". Това връща стойности между нула (минимум) и 1023 (максимум). Arduino е в състояние да преобразува тези стойности в нещо по-полезно, но те са идеални за този случай на използване.

Закъснението между променящите светодиоди (или скоростта на скенера) се задава в милисекунди (1/1000 секунда), така че максималното време е малко над 1 секунда.

Разширен скенер

Ардуино-светодиоди външен двойки

Сега, когато знаете основите, нека разгледаме нещо по-сложно. Този скенер ще свети светодиодите по двойки, като се започне отвън и се работи вътре. След това ще обърне това и ще премине от двойки отвътре навън. Ето кода:

const int led [] = {1,2,3,4,5,6,7,8}; // Led щифтове. const int totalLeds = 8; const int halfLeds = 4; int време = 50; // Настройка на невалидната скорост по подразбиране () {// Инициализиране на всички изходи за (int i = 0; i <= totalLeds; ++ i) {pinMode (води [i], OUTPUT); } } void loop () {for (int i = 0; i  0; --i) {// Сканиране на вътрешни двойки време = analogRead (2); digitalWrite (води [i], HIGH); digitalWrite (светодиоди [(totalLeds - i) - 1], HIGH); закъснение); digitalWrite (води [i], LOW); digitalWrite (светодиоди [(totalLeds - i) - 1], LOW); закъснение); } }

Този код е малко по-сложен. Забележете как двете бримки преминават от нула до „halfLeds - 1“ (3). Това прави по-добър скенер. Ако и двете вериги преминаха от 4 - 0 и 0 - 4, тогава същите светодиоди ще мигат два пъти в една и съща последователност - това няма да изглежда много добре.

Вече трябва да притежавате работещ LED скенер за Knight Rider! Би било лесно да промените това, за да използвате повече или по-големи светодиоди или да приложите свой собствен модел. Тази схема е много лесна за пристанище към Raspberry Pi (ново за Пи? Започни тук Raspberry Pi: Неофициалният урокНезависимо дали сте настоящ собственик на Pi, който иска да научи повече, или потенциален собственик на това устройство с размер на кредитна карта, това не е ръководство, което искате да пропуснете. Прочетете още ) или ESP8266 Запознайте се с Arduino Killer: ESP8266Ами ако ви кажа, че има съвместим с Arduino плат за разработка с вграден Wi-Fi за по-малко от 10 долара? Е, има. Прочетете още .

Изграждате реплика KITT? Бих искал да видя всички неща Knight Rider в коментарите.

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