Ändra en iRobot skapa för att måla (5 / 6 steg)
Steg 5: Använda sensorer för att måla
Mycket enklast att måla med sensorer är att köra prov täcka programmet med i ytterkanten av området målning samt även några tunga objekt (det är antingen måla resistenta eller insvept i smörpapper) inom området målning. Men du förmodligen vill ha lite mer kontroll än så, och jag lagt till modulen kommando i listan material av en anledning.
Om du vill behålla vissa slumpmässigheten i vad roboten är målning, men ändå har det arbete inom parametrar du ställer in, här är några sätt att göra det:
Öppna programmet prov kallas "drive" i programmerare notebook (en förklaring av detta finns i den handbok som du kan hämta från iRobot webbplats.)
På rad 156 hittar du:
Ställa in turn parametrar och återställa vinkeln
Detta är vad roboten gör när en sensor utlöses. Detta inkluderar stöta till saker eller nästan faller bort av saker. Detta avsnitt har några roliga saker att leka med.
distans = 0;
Du kan ändra detta till ett obegränsat antal. Det nummer du väljer är hur många millimeter roboten kommer att backa upp efter det träffar eller finner i utkanten av något. Så, till exempel, kommer att ändra "0" till "200", det säkerhetskopiera 200 millimeter. Detta ger dig 200 millimeter långa rader i olika vinklar från kanterna och oavsett andra objekt är på och runt målning ytan.
vinkel = 0;
Detta innebär det ryggen rakt upp efter det träffar något. Du man inte vill detta. Om du vill ha den för att säkerhetskopiera på olika som vinkel flera här. Ändra "0" till "45" kommer att få den att säkerhetskopiera på en båge på 45 grader. Här tar några justeringar för att få precis hur du vill ha det, men det kan orsaka några häftiga effekter.
turn_angle = randomAngle();
Detta innebär att det belopp som roboten varv efter slå något kommer att vara någonstans mellan 53 och 180 grader. Om du vill ändra omfattningen av "random" sedan gå ner till raden 460 och ändra koden. Om du vill ställa in den till en specifik vinkel förändring "randomAngle()" till "15" eller vad andra vinkel gillar du. Nummer "1" och "-1" är reserverade för rät vinkel, men det verkar som alla andra nummer, positiv eller negativ är rättvist spel. Jag insåg precis att jag har inte provat något över 360, men nu jag kan inte vänta att prova.
På linje 143 och 149 hittar du "vrida" följt av en 0. Ändra de till något annat gör roboten spin för evigt. Detta är inte en mycket effektiv eller kul förändring att göra, så jag inte skulle bry.
enhet (300, RadStraight);
Detta innebär att gå framåt med en hastighet av 300 rubrik raka. Du kan ändra hastigheten på roboten genom att ändra "300" till ett annat. Lägre är långsammare, högre är snabbare (inga knep här). Ändra "RadStraight" till ett nummer kommer att resultera i roboten kör i en båge. Detta kommer definitivt öka "måleriska" arten av vad roboten gör. Jag gillar verkligen ändrar den här inställningen.
Ändra hastigheten roboten flyttar kan ändra raderna det målar. Långsammare hastigheter resulterar vanligtvis i en jämnare, tyngre tillämpning av färg. Snabbare hastigheter kommer att ge dig en brushier effekt, eller det kommer ibland till och med göra din pensel hoppa.
När du delta i koden kommer du att kunna justera alla möjliga saker. Om du har problem med att förstå något kontrollera ledtrådar oi filen, ibland finns det det. Mycket av tiden jag har haft bättre tur med en vinkelnummer i stället för "RadCW" eller liknande kommandon. Jag antar att detta är en lyckträff, men det är något att kolla om du har problem.
Jag är inte en erfaren programmerare alls. I själva verket, detta är först jag någonsin gjort något med kod, med undantag för att göra webbplatser. Jag tror det är ganska svårt att skada roboten, och det finns alltid en ren kopia av exempelprogrammen på CD om du ohjälpligt skada den som du är på att ändra. Koden är väl känd, och du kan ganska mycket räkna ut vad allt innebär om du tar lite tid med den. Det är värt dykning i och ändra saker att se vad du får. Jag har skrivit en hel del nya saker att lägga till "drive"-program, men de är inte redo att visa för världen ganska ännu.