Съдържание:

ATTiny-RAT, ATTINY Powered Mini Lightfollower: 3 стъпки
ATTiny-RAT, ATTINY Powered Mini Lightfollower: 3 стъпки

Видео: ATTiny-RAT, ATTINY Powered Mini Lightfollower: 3 стъпки

Видео: ATTiny-RAT, ATTINY Powered Mini Lightfollower: 3 стъпки
Видео: Using Digispark Attiny85 Mini Arduino boards: Lesson 108 2024, Ноември
Anonim
ATTiny-RAT, ATTINY Powered Mini Lightfollower
ATTiny-RAT, ATTINY Powered Mini Lightfollower
ATTiny-RAT, ATTINY Powered Mini Lightfollower
ATTiny-RAT, ATTINY Powered Mini Lightfollower
ATTiny-RAT, ATTINY Powered Mini Lightfollower
ATTiny-RAT, ATTINY Powered Mini Lightfollower
ATTiny-RAT, ATTINY Powered Mini Lightfollower
ATTiny-RAT, ATTINY Powered Mini Lightfollower

Здравейте приятели, Измина доста време, откакто публикувах последната си инструкция. Е, сега в главата ми се въртят много неща, но успях да документирам „първите си стъпки“с чиповете ATTiny от тази кратка инструкция за вас.

Поръчах няколко проби от ATTINY85 само защото исках да ги тествам:-) (всички обичат да тестват нещата, нали?) След това започнах да черпя някои идеи в тефтера си. Честно казано, първото нещо, което направих, беше мигането на светодиод, който както винаги е добро начало за проверка дали вашата настройка/верига от инструменти работи. Опитах и регистратор за температура и влажност с DHT22 и SoftwareSerial. Това беше сложно, защото DHT библиотеките са предимно за 16Mhz часовник (ако планирате да направите нещо подобно, проверете как да мащабирате вътрешния часовник). Но реших да ви покажа нещо, което е, просто по -смешно. BTW: Качих една от моите рисунки за вас, това не е Рембранд, но ще ви покаже как получих тази (наистина) глупава идея върху лист хартия: -П.

Използвах само неща, които бях лежал, за да поддържам този проект възможно най-евтин (за мен). Резултатът от това малко приключение е един хубав малък „робот на светлината“за около 10-15 $ (3 $ за мен:-P)

Така че, ако сами се интересувате от ATTINY, просто прочетете по -нататък.

BTW: съжалявам за лошия ми английски (не съм носител на езика)

Стъпка 1: Първи стъпки с ATTiny & Tools & Materials

Първи стъпки с ATTiny & Tools & Materials
Първи стъпки с ATTiny & Tools & Materials
Първи стъпки с ATTiny & Tools & Materials
Първи стъпки с ATTiny & Tools & Materials
Първи стъпки с ATTiny & Tools & Materials
Първи стъпки с ATTiny & Tools & Materials
Първи стъпки с ATTiny & Tools & Materials
Първи стъпки с ATTiny & Tools & Materials

Какво ще ви е необходимо, за да започнете:

- чип ATTiny85

- Arduino UNO или подобен

-abreadboard с някакъв джъмпер-проводник или програмист на ATTINY или направете сами програмист-щит за Arduino (проверете приложените снимки, има схема от avdweb.nl). Направих и този и съм наистина доволен от него. Единствената модификация, която направих, беше, че добавих гнездо за серията ATTinyx4 (вижте снимката и диаграмите на разклонението).

- IDE на Arduino (вземете го тук)

- хардуерните файлове за ArduinoIDE (изтеглете и инсталирайте ги)

Info-Link към playground директна връзка към github файловете, които използвах

- заредете скицата на Arduino като ISP върху UNO (това ще бъде вашият програмист)

- следвайте тази инструкция (https://highlowtech.org/) или тази инструкция (от ardutronix) и опитайте скицата "мига" (променете PIN номера и резистор ~ 220Ohm за това)

Направете малка настройка, за да проверите всичко. Ако сте направили всичко правилно, светодиодът ще мига и сте готови за работа

ИНСТРУМЕНТИ

- поялник- малко спойка- малка тел за рязане- дремел или друг въртящ се инструмент (само за рязане на печатни платки!)- малко горещо лепило- пинсети- проводници

МАТЕРИАЛИ

- прототипиране на печатна платка (~ 4cmx6cm ще го направи)- 2x LDR- 5x 10k резистор (2x за LDRs и 2x за транзистори BE, 1x LED)- 1x 330Ohm резистор (1x NEOPIXELS)- 2x LDR- 1x LED (цвят на вашия избор, вместо колелото)- 3x NEOPIXEL WS2812- 2x транзистор (BD137 или подобен)- 2x диод (1N4001 или подобен)- 2x микромотор (напр. от микро квадрокоптер Hubsan)- 1x ATTINY85 + по избор (препоръчително) 8PIN IC гнездо- 1x 1s LIPO (използвах 140Ah от стар RC-хеликоптер)- някои щифтове/гнезда- свиваема тръба (LDR корпус)

Нека продължим с изграждането на хардуера …

Стъпка 2: Хардуер

Хардуер
Хардуер
Хардуер
Хардуер
Хардуер
Хардуер

Ако погледнете приложените схеми, настройката на хардуера е доста проста. Така че, ако можете да четете схеми и да използвате поялник, това е половината от трика. Разгледайте и снимките, добавих няколко бележки за вас.

Не предлагам план за рязане на печатни платки, имате свободата да направите свой собствен дизайн (бъдете креативни и ни покажете своите малки ботове). Разположението на всички електронни компоненти също зависи от вас. Някои съвети от моя страна:

Опитайте се да подредите двигателите точно (гледайте ъгъла!), Ние използваме само вала на двигателя вместо колелата. (това ще изразходва по -малко енергия) Препоръчвам да поставите двигателите под батерията (тегло) и да използвате LDR отпред (под ъгъл 45 °), сдвоени с LED (опитвам се да използвам тази комбинация за избягване на препятствия, по -нататък са необходими тестове).

Освен това препоръчвам да направите малък джъмпер за включване/изключване, така че батерията да не се загуби толкова лесно.

Ако има нещо неясно или ако имате въпроси, просто ме попитайте. Това няма да накара много сенове да направят теза от този малък проект.

Стъпка 3: Софтуер

Софтуер
Софтуер
Софтуер
Софтуер

На първо място изтеглете и инсталирайте ADAFRUIT Neopixel Library

Ето моя код с някои основни описания (добавих и файла с скици). Не коментирах всяка стъпка, защото смятам, че не е необходимо.

Качете скицата на вашия ATTiny85 и се забавлявайте с новата си играчка

Идеите за функция "личност" + може би кодовите примери са добре дошли:-)

Ако имате въпроси, не се колебайте да попитате.

Надявам се да ви хареса краткото ми инструктаж и малкото пътешествие в света на ATTINYs.

/* ATTINY85-Rata прост ATTINY85 задвижван светлинен робот. Версия 2.0, от Auer Markus */

#включва

#включва

// двигатели

#дефинирайте LMOTOR 0 #дефинирайте RMOTOR 1 // светодиоди #дефинирайте PIXELPIN 2 #дефинирайте NUMPIXEL 3 // LDRs #дефинирайте LLDR A2 #дефинирайте RLDR A3

// otherint emo = 0; поплавъчен калибър; булева емоция; дълги олдмили; // определяне на NeopixelsAdafruit_NeoPixel PIXEL = Adafruit_NeoPixel (NUMPIXEL, PIXELPIN, NEO_GRB + NEO_KHZ800);

void setup ()

{// висококачествен часовник иначе ще срещнете някои проблеми с времето (неопикселовият lib е написан за 16MHz) #ако е дефиниран (_AVR_ATtiny85_) if (F_CPU == 16000000) clock_prescale_set (clock_div_1); #endif

// PINMODE pinMode (LMOTOR, OUTPUT); pinMode (RMOTOR, OUTPUT); pinMode (LLDR, INPUT); pinMode (LLDR, INPUT); // инициализиране на пиксели PIXEL.begin (); PIXEL.show (); забавяне (500); // начална последователност за (int i = 0; i

void loop ()

{if (lightfollow () == 1) {left (); } else if (lightfollow () == 2) {right (); } else if (lightfollow () == 0) {forward (); } емоция (); }

int lightfollow () {

int treshold = 14; int резултат = 0; плаващ наляво = 0; плаващ вдясно = 0; int проби = 1; // чете LDR за (int j = 0; j <проби; j ++) {

ляво = ляво + analogRead (LLDR); дясно = дясно + (analogRead (RLDR)*calib);

}

// изчисляваме резултата (от коя посока идва светлината?)

if ((ляво/мостри)> ((дясно/мостри)+праг)) {резултат = 2;}

иначе ако ((ляво/семпли) <((дясно/мостри) -предел)) {резултат = 1;}

else {резултат = 0;}

възвръщаем резултат; } void forward () {// Препращане analogWrite (LMOTOR, 230); analogWrite (RMOTOR, 230); PIXEL.setPixelColor (0, PIXEL. Color (0, 0, 255)); PIXEL.setPixelColor (2, PIXEL. Color (0, 0, 255)); PIXEL.show (); }

void left () {

// НАЛЯВО analogWrite (LMOTOR, 150); analogWrite (RMOTOR, 255); PIXEL.setPixelColor (0, PIXEL. Color (0, 0, 255)); //PIXEL.setPixelColor(1, PIXEL. Color (75, 0, 0)); PIXEL.setPixelColor (2, PIXEL. Color (0, 100, 0)); PIXEL.show (); }

void right () {

// ПРАВО analogWrite (LMOTOR, 255); analogWrite (RMOTOR, 150); PIXEL.setPixelColor (0, PIXEL. Color (0, 100, 0)); PIXEL.setPixelColor (2, PIXEL. Color (0, 0, 255)); PIXEL.show (); }

// това е за по-нататъшни експерименти, опитвайки се да му дам малко индивидуалност:-) тествам какво мога да направя, но все още няма добри идеи.

void emotion () {int emotimer = 2500; int продължителност = случаен (250, 750); if (millis () - oldmillis> емотимер) {oldmillis = millis (); емо = случаен (1, 4); } if (millis () - oldmillis> продължителност) {emostate =! emostate; } if (emostate == true) {switch (emo) {случай 1: PIXEL.setPixelColor (1, PIXEL. Color ((255), (255), (255))); PIXEL.show (); прекъсване; случай 2: PIXEL.setPixelColor (1, PIXEL. Color ((255), (0), (0))); PIXEL.show (); прекъсване; случай 3: PIXEL.setPixelColor (1, PIXEL. Color ((0), (255), (0))); PIXEL.show (); прекъсване; по подразбиране: PIXEL.setPixelColor (1, PIXEL. Color (произволен (0, 255), случаен (0, 255), случаен (0, 255))); PIXEL.show (); прекъсване; }} else {PIXEL.setPixelColor (1, PIXEL. Color (25, 0, 0)); PIXEL.show (); }}

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