Jump to content
php.lv forumi

Robotika. Arduino plate + iRobot Roomba


mandarīnpīle

Recommended Posts

Ir pie iRobot Roomba pieslēgta Arduino plate. Neskaidrību rada braukšanu komandu došana, respektīvi, veids, kā no decimālās skaitīšanas sistēmas pāriet uz high-byte un low-byte. iRobots savai funkcionēšanai pieprasa komandu došanu šādā secībā:

 

[braukšanas kods] [ātruma high-byte] [ātruma low-byte] [pagrieziena high-byte] [pagrieziena low-byte]

 

 

Instrukcijā dots piemērs, kā veikt pārveidojumus:

 

ātrums          =  -200 mm/s = hex FF38 = [hex FF] [hex 38] = [255] [56]

pagrieziens   =  500 grādu = hex 01F4 = [hex 01] [hex F4] = [1] [244]

 

Testa nolūkos nolēmu nosūtīt šos rezultātā iegūtos skaitļus un robots tiešām brauc kā paredzēts:

 

Serial.write(137) //Braukšanas kods

Serial.write(255);

Serial.write(56);

Serial.write(1);

Serial.write(244);

 

Jautājums, kā saveidot funkciju, kas automātiski no decimālās sistēmas jebkādu ātruma un pagrieziena vērtību pārveidos par high un low bytiem? Arduino funkcijas highByte(); un lowByte(); atgriež kaut ko uz to pusi, bet ne īsti. Piemēram, funkcija lowByte(500); (skaitlis no piemēra instrukcijā) atgriež skaitli 244 (kā piemērā) bet ar kaut kādām nesaprotamām rakstzīmēm galā.

 

Kāpēc tā un kā šis process ir pareizi jādara? 

Link to comment
Share on other sites

Matemātiski neizskaidrošu, bet nu idejiski tas ir vnk darbības ar citu bāzi. Piemēram, pie bāzes 10 ir kā ierasts: 1,2,3...,9 un tad mainās kārta: '1'+'0' (hi=1 lo=0), 11 - hi=1, lo=2.

Šajā gadījumā bāze ir 256 (0xFF + 1, b11111111 + 1).

Ar negatīvo - šāds pieraksts vnk ir pieņemts - pēdējais (vai pirmais - no kuras puses skatoties - b1000000000000000) bits ir 1 - tātad negatīvs, kas rezultējas uz 65536 / 2 katrai zīmei.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...