Turinys:
Video: Emocinė kliūtis, išvengianti roboto: 11 žingsnių
2025 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2025-01-13 06:57
Emocinis robotas. Šis robotas neopikseliais (RGB šviesos diodais) demonstruoja emocijas, tokias kaip liūdesys, laimė, piktas ir išsigandęs, taip pat gali išvengti kliūčių ir atlikti tam tikrus judesius tam tikros emocijos metu. Šio roboto smegenys yra „Arduino mega“. atminkite, kad tai mano pirmasis užprogramuotas robotas, kurį aš kada nors sukūriau, ir jis privertė mane įsimylėti programavimą, pats kodas yra labai pradedantysis ir greičiausiai gali būti supaprastintas.
1 žingsnis: DALYS
-3,2 pėdos neopikselio juostelės
-HC-SR04 ultragarso jutiklis (arba bet kuris kitas ultragarso jutiklis)
-pakreipimo jungiklis
-3 3,7 V ličio jonų baterija (18650)
-pakrovimo keitiklis (paaiškinta maitinimo žingsnyje)
-fotorezistorius (bet kokia vertė)
-Analoginis garso jutiklis
-2 dc varikliai 6v
-l293d (variklio vairuotojas)
-plastikinis lakštas
-kartonas
-ratuko ratas
2 žingsnis: Neopikseliai
Dėl to, kad turėjau ribotą biudžetą, paprasčiausias ir pigiausias būdas pagyvinti mano robotų emocijas yra neopikseliai, jie turi tik 3 įėjimus ir išėjimus. trys įvesties kaiščiai pažymėti 5v, DIN (duomenys įeina) ir GND (įžeminti); išvestis pažymėta taip pat, kaip įvestis, bet vietoj duomenų jo DO (duomenys išvesti). Šių diodų prijungimo būdas yra juos sujungti lygiagrečiai vienas kitam, taigi 5v jungiasi prie 5v kitame LED, o GND yra prijungtas prie kito LED GND, pirmojo diodo DO yra prijungtas prie antrojo diodo DIN ir tada šis procesas tęsiasi tol, kol pasieksite norimą LED juostos ilgį. Visai neopikselių juostai iš įvesties reikia tik vieno skaitmeninio išvesties kaiščio, nes DO ir DIN yra sujungti ilgoje grandinėje, todėl visi dalijasi duomenimis tarpusavyje. Tai būtina, nes tam tikru laiku turime įjungti ir išjungti tam tikrus šviesos diodus. Naudinga instrukcija šiuo klausimu yra NEOPIXEL HELP
3 žingsnis: schema
Grandinė yra labai paprasta, nes didžioji dalis roboto yra tik užprogramuota, varikliai veikia arti 7 V su l293d variklio tvarkykle, kad būtų galima valdyti variklius, kad jie judėtų atgal. Kitos jungtys yra „Arduino“jutikliai. Štai ir viskas!
4 žingsnis: Kodas
Pirmas dalykas, kurį padariau, buvo atsisiųsti reikiamas bibliotekas, kad kodavimas būtų šiek tiek lengvesnis. Mano naudojamos bibliotekos yra „FastLED.h“ir „NewPing.h“. Greitasis LED yra skirtas LED, o naujasis - ultragarso jutikliams. Kitas dalykas, kurį aš padariau, buvo visų mano naudojamų kaiščių apibrėžimų nustatymas, o po to buvo anuliuota sąranka - čia aš nustatiau kaiščių režimus ir „Neostrip“„FastLED.addLeds (leds, NUM_LEDS)“; Aš apibrėžiau NUM_LEDS kaip 56, nes naudojau 56 šviesos diodus, jų konfigūracija bus paaiškinta veido žingsnyje. Tada sukūriau daugybę funkcijų, kad mano robotas galėtų judėti pirmyn ir atgal, taip pat jausti tam tikras emocijas, po to aš atėjau į tuštumos ciklą, čia aš vadinu visas savo funkcijas tam tikra norima seka, pavyzdžiui, jei norėčiau, kad mano robotas šypsotųsi, padėčiau šypseną ();. Jei norėčiau, kad įjungtų tam tikras šviesos diodas, įdėčiau, LED [45] = CRGB:: Green;, tai paskatins 45 būti žalias. Kai perkeliu spalvą į juodą, tai tiesiog reiškia išjungti. Dabar atminkite, kad tai yra viena iš mano pirmųjų programų, todėl ji akivaizdžiai nėra tobula, tačiau ji vis tiek veikė.
KODAS
5 žingsnis: veidas
Veidui naudojau 56 lemputes, kurios yra beveik visa 3,2 pėdų neopikselių juostelė. Juostelę perpjoviau į 7 juostas iš 8 ledų, pirmas 3 juosteles naudojau akims, o paskutines 4 - burnai. Juostas sujungiau gyvatės formos jungtimi, tikiuosi, kad geriau suprasite diagramą. Kai baigiau veidą, ant LED juostų uždėjau ploną plastikinį lakštą (apie 2 mm storio).
6 žingsnis: laiminga funkcija
Ši funkcija yra lengviausia iš visų, nes ji nenaudoja jokių jutiklių, o kai tik įjungiate robotą, jis akimirksniu jums šypsosi. Bet tai ne tik šypsena; kai jis šypsosi, jis taip pat yra kliūčių vengimo režimas. Kliūčių vengimo režimas mano kode nurodomas kaip tarptinklinio ryšio funkcija. Kliūčių vengimo režimas arba klaidžiojimas veikia naudojant du ultragarso jutiklius robotų pusėje, kai jutiklis yra 30 cm atstumu nuo bet ko, ko jis sukuria, ir eina į dešinę arba į kairę, priklausomai nuo arčiausiai objekto esančio jutiklio.
7 žingsnis: liūdna funkcija
Kad robotas taptų liūdnas, turėjau galvoti apie šio roboto asmenybės bruožą, todėl nusprendžiau jį nuliūdinti, kai jis yra tamsioje aplinkoje. Norėdami tai padaryti, aš naudoju foto rezistorių, kad suvokčiau šviesą. Kuo tamsesnė aplinka, tuo didesnis atsparumas, o šviesesnė aplinka - mažesnis atsparumas. Grandinė veikia kaip įtampos daliklis, kuris yra grandinė su dviem rezistoriais, nuosekliai prijungtais prie +5v ir GND, rezistoriaus jungties viduryje yra įtampa, kurią galima nustatyti pagal šią lygtį: įėjimo įtampa*(R2/R1 +R2). kai „Arduino“analoginis kaištis nuskaito šią vertę, jis konvertuoja įtampą į diapazoną nuo 0 iki 1023.
8 žingsnis: pikta funkcija
Norėdami supykdyti robotą, nusprendžiau jį apversti/apversti. Tai veikia naudojant pakreipimo jungiklį, o pakreipimo jungiklis iš esmės yra įprastas jungiklis, tačiau vietoj mygtuko ar svirties turite gyvsidabrio rutulį, kuris, pakreipus tam tikru kampu, sujungs du kontaktus ir įsijungs; taigi reikšmė yra 0 arba 1, 0 išjungta ir 1 - įjungta. Kai robotas pyksta, jis taip pat nepaiso kliūčių vengiančio režimo ir dėl savo pykčio sutrenkia viską, kas matoma į priekį.
9 žingsnis: Išgąsdinta funkcija
Paskutinė roboto funkcija yra baimės funkcija, kuri naudoja garso jutiklį, esantį tiesiai ant roboto. Kai robotas girdi apkrovos triukšmą, jis išsigąsta ir dreba eidamas atgal. Garso jutiklis veikia naudojant kondensatoriaus mikrofoną, kuris yra mikrofonas, kai jis jaučia garsus ar vibracijas, jis sukuria mažą įtampą, paprastai apie 100 mV, tada ši įtampa sustiprinama ir nuskaitoma per analoginį „Arduino“kaištį, tuo didesnė įtampa ar garsesnis garsas, tuo didesnė analoginė vertė ir atvirkščiai.
10 žingsnis: maitinimas
Dabar, kai sukūrėte viską, ko reikia, kad jį maitintumėte, iš pradžių bandžiau jį maitinti 8 AA baterijomis, tačiau buvau per daug apimtas ir nepraktiškas. Tada aš naudoju 3 ličio jonų baterijas, kurių kiekvienoje yra apie 3,5 V, vieną bateriją prijungiau prie stiprintuvo, kuris yra įtampos stiprintuvas, tai padidino mano 3,5 V iki 5 V, kad galėčiau maitinti „Arduino“, tada naudoju dvi baterijas ir tiesiogiai prijungiau tai varikliai ir šviesos diodai, tai nėra tokia gera idėja, nes įtampa nebuvo reguliuojama, bet aš neturėjau įtampos reguliatoriaus, jei bandysite tai sukurti, rekomenduoju naudoti įtampos reguliatorių, nei galite padaryti 5v esant maždaug 2–3 amperams, to pavyzdys yra LM78S05. Arba galite naudoti „LM7805“, kad įjungtumėte „Arduino“maitinimą, o vietoj to įsigykite žemesnio lygio keitiklį arba „Buck“keitiklį, kad sumažintumėte įtampą ir įjungtumėte šviesos diodus bei variklius.
11 žingsnis: linksminkitės !
Tikiuosi, kad sukursite šį robotą ir smagiai praleisite laiką, taip pat tikiuosi, kad sukursite šį robotą ir sukursite savo emocijas, kad jis taptų GYVAS !!!