IPad att skriva steampunk robot - ROBOLED (2 / 7 steg)
Steg 2: Firmware
I början, jag planerade på programmering alla servostyrningar mig själv med en arduino och standard servo library, men sedan snubblade över Pololu Mini Maestro servo styrenheter och beslutade att använda en av dessa. Annars programmering ultrarapid servo rörelser skulle förmodligen ha tagit alldeles för lång. Med dessa styrenheter kan du ställa in hastighet och acceleration, skickar PWM-värde (i 1/4th millisekunds noggrannhet) och via seriell protokoll och vänta på signalen "gjort". Då du skickar nästa värde och så vidare.
Roboten själv arbetar i en polär koordinatsystem, att kunna rotera (vinkel) och utöka/dra tillbaka (radius) armen. Skärmen på iPad är – å andra sidan – ett ganska bra exempel på en kartesiska systemet (x - och y-koordinater). Så hur får vi från den ena till den andra?
Svar: matematik! (Eller geometri, om du tycker att mindre hotfull ;-))
Sir Pythagoras var vänlig nog att låt oss veta hur man beräknar förhållandet mellan alla vinklar i en rätvinklig triangel. Och eftersom varje godtycklig triangel kan delas in i 2 rätt-metade trianglar, kombinerat med viss kunskap om bihålor/cosinussvängningar, etc. och dimensioner på roboten, detta ger oss möjlighet att:
-Först transformera x - och y-koordinater av iPad i vinkel - och radius-värden för den robotarm (vinkeln går direkt till base-servo)
-Sedan omsätta radien av det polära koordinatsystemet i vinkel-värden för två arm-servon.
Det faktum att jag bestämde mig tidigt att inte gå full 3D, men endast 2, 5D, gjorde denna del mycket lättare, eftersom jag kan undvika sånt omvänd kinematik.
Värdet för hur högt spetsen av roboten svävar ovanför iPads ytan inte styrs och beräknas som en vinkel, men bara i ett ms (millisekunder) värde som läggs till / debiterade från servon PWM signal.