Inhoudsopgave:
Video: DE EMOTIONELE OBSTAKEL VOOR HET VERMIJDEN VAN ROBOT - Ajarnpa
2025 Auteur: John Day | [email protected]. Laatst gewijzigd: 2025-01-13 06:57
De emotionele robot. Deze robot toont emoties met neopixels (RGB LED's) zoals verdriet, blijheid, boos en bang, hij kan ook obstakels ontwijken en bepaalde bewegingen doen tijdens zijn bepaalde emotie. Het brein van deze robot is een Arduino-mega. onthoud dat dit mijn eerste geprogrammeerde robot is die ik ooit heb gebouwd, en daardoor ben ik verliefd geworden op programmeren, de code zelf is erg beginner en kan hoogstwaarschijnlijk worden vereenvoudigd.
Stap 1: ONDERDELEN
-3.2ft van een neopixelstrip
-HC-SR04 Ultrasone sensor (of een andere ultrasone sensor)
-kantelschakelaar
-3 3.7v lithium-ionbatterij (18650)
-boost-converter (uitgelegd in power-stap)
-fotoweerstand (elke waarde)
-analoge geluidssensor
-2 gelijkstroommotoren 6v
-l293d (motorbestuurder)
-plastic plaat
-karton
-zwenkwiel
Stap 2: Neopixels
Omdat ik een krap budget had, is de eenvoudigste en goedkoopste manier om de emoties van mijn robots tot leven te laten komen, neopixels, ze hebben alleen 3 ingangen en uitgangen. de drie pinnen op de ingang zijn gelabeld 5v, DIN (data in) en GND (aarde); de uitvoer wordt hetzelfde genoemd als invoer, maar in plaats van gegevens in zijn DO (gegevens uit). De manier waarop je deze led aansluit is om ze parallel met elkaar te verbinden, dus 5v verbindt met 5v op de andere led en GND is verbonden met de andere led GND, DO van de eerste led is verbonden met DIN van de tweede led en dan dit proces gaat door totdat je de gewenste lengte van de ledstrip hebt bereikt. Een hele strip neopixels vereist slechts één digitale uitgangspin van de ingang, dit komt omdat de DO en DIN in een lange keten zijn verbonden, zodat ze allemaal gegevens met elkaar delen. Dit is nodig omdat we bepaalde leds op bepaalde tijden aan en uit moeten zetten. Een handige instructable hierover is NEOPIXEL HELP
Stap 3: Het schema
Het circuit is heel eenvoudig, omdat het grootste deel van de robot net is geprogrammeerd, de motoren draaien op bijna 7v met een l293d-motordriver om de motoren te besturen om vooruit of achteruit te gaan. De andere aansluitingen zijn de sensoren naar de Arduino. En dat is het!
Stap 4: De code
Het eerste wat ik deed was de vereiste bibliotheken downloaden om de codering een beetje gemakkelijker te maken, de bibliotheken die ik gebruikte zijn "FastLED.h" en "NewPing.h". De snelle led is voor de leds en de nieuwe ping is voor de ultrasone sensoren. Het volgende wat ik deed was het maken van alle definities voor de pinnen die ik gebruikte, daarna was de ongeldige setup, dit is waar ik de pin-modi en de neostrip "FastLED.addLeds(leds, NUM_LEDS);" instelde. ik heb de NUM_LEDS gedefinieerd als 56, aangezien ik 56 leds heb gebruikt, zullen de configuraties van de leds in de face-stap worden uitgelegd. Ik heb toen een aantal functies voor mijn robot gemaakt om vooruit en achteruit te gaan en ook zijn bepaalde emotie te hebben, daarna kom ik bij de lege lus, dit is waar ik al mijn functies aanroep in een bepaalde volgorde die ik wil, bijvoorbeeld, als ik wilde dat mijn robot glimlachte, zou ik smile();. Als ik wilde dat een bepaalde led aanging, zou ik leds[45] = CRGB::Green;, hierdoor wordt led 45 groen. Als ik de kleur op zwart zet, betekent het gewoon uit. Houd er rekening mee dat dit een van mijn eerste programma's is, dus het is duidelijk niet perfect, maar het werkte nog steeds.
DE CODE
Stap 5: Het gezicht
Voor het gezicht heb ik 56 leds gebruikt, wat bijna een volledige 3.2ft neopixelstrip is. Ik heb de strip in 7 strips van 8 leds gesneden, de eerste 3 strips heb ik voor de ogen gebruikt en de laatste 4 voor de mond. Ik heb de strips in een soort slangvorm verbonden, je zult het hopelijk beter begrijpen met het diagram. Toen ik klaar was met het gezicht, legde ik een dun plastic vel (ongeveer 2 mm dik) over de ledstrips.
Stap 6: Gelukkige functie
Deze functie is de gemakkelijkste van allemaal omdat er geen sensoren worden gebruikt, maar zodra je de bot opstart, glimlacht hij meteen naar je. Maar het lacht niet alleen; wanneer het lacht, is het ook in de modus voor het vermijden van obstakels. De modus voor het vermijden van obstakels wordt in mijn code weergegeven als de functie roamen. De modus voor het vermijden van obstakels of zwerven werkt door gebruik te maken van twee ultrasone sensoren aan de kant van de robot, wanneer de sensor 30 cm naar iets komt, zou hij achteruit gaan en naar rechts of links gaan, afhankelijk van de sensor die zich het dichtst bij het object bevindt.
Stap 7: Trieste functie
Om ervoor te zorgen dat de robot verdrietig werd, moest ik een persoonlijkheidskenmerk voor deze robot bedenken, dus besloot ik hem verdrietig te maken als hij in een donkere omgeving is. Om dit te doen heb ik een fotoweerstand gebruikt om licht te voelen. Hoe donkerder de omgeving, hoe hoger de weerstand en hoe lichter de omgeving, hoe lager de weerstand. De schakeling werkt als een spanningsdeler, een schakeling met twee weerstanden die in serie zijn geschakeld met +5v en GND. In het middelpunt van de weerstandsaansluiting ligt een spanning die kan worden bepaald door deze vergelijking: ingangsspanning*(R2/R1+R2). wanneer de Arduino Analog Pin deze waarde leest, wordt de spanning omgezet in een bereik van 0 tot 1023.
Stap 8: Boze functie
Om de robot boos te maken, besloot ik hem om te draaien/om te gooien. Dit werkt door een kantelschakelaar te gebruiken, en een kantelschakelaar is in feite een normale schakelaar, maar in plaats van een knop of tuimelschakelaar, heb je een kwikbal die, als hij onder een bepaalde hoek wordt gekanteld, de twee contacten verbindt en aanzet; dus de waarde hiervan is 0 of 1, 0 voor uit en 1 voor aan. Als de robot boos is, negeert hij ook de modus voor het vermijden van obstakels en ramt hij alles in het zicht in voorwaartse richting, vanwege zijn woede.
Stap 9: Bang Functie
Voor de laatste functie van de robot is de schrikfunctie, die gebruik maakt van een geluidssensor die bovenop de robot is geplaatst. Telkens wanneer de robot een lastgeluid hoort, wordt hij bang en rilt hij terwijl hij achteruit gaat. De geluidssensor werkt met behulp van een condensatormicrofoon die een microfoon is, wanneer hij geluiden of trillingen waarneemt, zal hij een kleine spanning creëren, meestal ongeveer 100mv, deze spanning wordt dan versterkt en gelezen via de analoge pin van de Arduino, hoe hoger de spanning of harder het geluid, hoe hoger de analoge waarde, en vice versa.
Stap 10: Stroom
Nu je alles hebt gebouwd wat je nodig hebt om het van stroom te voorzien, probeerde ik dit oorspronkelijk van stroom te voorzien met 8 AA-batterijen, maar was gewoon te omvangrijk en onpraktisch. Ik gebruikte toen 3 lithium-ionbatterijen die elk ongeveer 3,5 V bevatten, ik heb een batterij aangesloten op een boost-converter die een spanningsbooster is, dit verhoogde mijn 3,5 v naar 5 v om de Arduino van stroom te voorzien, ik gebruikte toen twee van de batterijen en was direct aangesloten het naar de motoren en LED's, dit is niet zo'n goed idee omdat de spanning niet gereguleerd was, maar ik had geen spanningsregelaar rondslingeren, als je dit probeert te bouwen, raad ik aan een spanningsregelaar te gebruiken dan 5v kan doen rond 2-3 ampère, een voorbeeld hiervan is de LM78S05. Of je kunt de LM7805 gebruiken om de Arduino van stroom te voorzien en in plaats daarvan een step-down-converter of buck-converter krijgen om de spanning te verlagen en de LED's en motoren van stroom te voorzien.
Stap 11: Veel plezier!
Ik hoop dat je deze robot bouwt en een leuke tijd hebt, ik hoop ook dat je je eigen draai aan deze robot geeft en je eigen emoties creëert om hem LEVEND te maken!!!