Ruuttu wrote:Oletetaan, että minulla on neljä lokeroa, 1-4. Nämä lokerot ovat pyörivällä alustalla, jota liikuttaa moottori. Oletetaan, että punainen pallo pitää saada lokeroon 3 - toisin sanoen moottorin on pyöräytettävä lokero 3 pallon kohdalle. Käytän seuraavaa kaavaa: Rotation = NewBox - CurrentBox * 90. CurrentBox (eli pallon kohdalla oleva lokero) on 1 joten 3-1*90 = 180 astetta. Näin moottori pyörähtää 180 astetta, ja pallo pääsee juuri oikealle paikalle, lokeroon 3. Mutta!! Entäpä jos pallo pitääkin saada lokeroon neljä? 4-1*90 = 270, joten sen sijaan että moottori pyörähtäisi yhden pykälän kellon suuntaan, se pyörähtää kolme pykälää vastapäivään. Sama lopputulos, mutta vaikeamman kautta, pidempää reittiä. Miten saan siis muokattua tätä kaavaa tai ylipäänsä moottorin ohjausta siten, että kierros tehdään aina lyhintä kautta? Mahdollisimman yksinkertaisesti - tässä ohjelmoidaan LEGO -robottia, joten muuttujat ja ehtolauseet ovat tuskaa.
Onko liian yksinkertaista olettaa, että pallo on aluksi joka liikkeen aloituksen kohdalla laatikon kaksi edessä? Tällöin sinun kaavasi hoitaa homman kätevästi. Tämä siis, jos joka liikkeen alussa päätetään, että rasia jossa pallo aluksi on on numero kaksi. Tälle voit tietenkin luoda oman laskukaavansa, ei pitäisi olla liian vaikeaa. Vaikkapa näin:
NewBox + (2 - CurrentBox)
if NewBox == 5 then NewBox = 1
CurrentBox = 2
Rotation = NewBox - CurrentBox * 90
Ratkaisit juuri universaaliongelman! Hienoa, ota keksi.
Filosofia on ajattelun taidetta, mutta sen maalari elää juoden apurahojaan masennukseensa.