Სარჩევი:

ინფრაწითელი დისტანციური კონტროლირებადი რობოკარი AVR (ATMEGA32) MCU: 5 ნაბიჯი
ინფრაწითელი დისტანციური კონტროლირებადი რობოკარი AVR (ATMEGA32) MCU: 5 ნაბიჯი

ვიდეო: ინფრაწითელი დისტანციური კონტროლირებადი რობოკარი AVR (ATMEGA32) MCU: 5 ნაბიჯი

ვიდეო: ინფრაწითელი დისტანციური კონტროლირებადი რობოკარი AVR (ATMEGA32) MCU: 5 ნაბიჯი
ვიდეო: wifi დისტანციური IR და RF კოდების Broadlink RM4C Pro, Home Assistant - აკონტროლეთ კონდიციონერი 2024, ივლისი
Anonim
ინფრაწითელი დისტანციური კონტროლირებადი რობოკარი AVR (ATMEGA32) MCU გამოყენებით
ინფრაწითელი დისტანციური კონტროლირებადი რობოკარი AVR (ATMEGA32) MCU გამოყენებით

წინამდებარე პროექტი აღწერს ინფრაწითელი (IR) დისტანციური მართვის RoboCar- ის დიზაინს და განხორციელებას, რომელიც შეიძლება გამოყენებულ იქნას სხვადასხვა ავტომატური უპილოტო კონტროლის პროგრამებისთვის. მე შემუშავებული მაქვს დისტანციური მართვის RoboCar (მარცხენა-მარჯვენა/წინა-უკანა მოძრაობა). მთელი სისტემა დაფუძნებულია მიკროკონტროლერზე (Atmega32), რაც მართვის სისტემას უფრო ჭკვიანურს ხდის და ადვილად შეცვლის სხვა პროგრამებისთვის. ეს საშუალებას აძლევს მომხმარებელს იმუშაოს ან გააკონტროლოს RoboCar და იმუშაოს მაგისტრალური დენის გადამრთველიდან დაახლოებით 5 მეტრიდან.

საკვანძო სიტყვები: IR დეკოდირი, AVR (Atmega32) მიკროკონტროლი, ტელევიზიის დისტანციური კონტროლერი, უკაბელო კომუნიკაცია

_

ნაბიჯი 1: ინტრა -წითელი კომუნიკაცია

ინტრა -წითელი კომუნიკაცია
ინტრა -წითელი კომუნიკაცია

IR კომუნიკაციის პრინციპი:

ა) IR გადაცემა

IR LED გადამცემი მისი წრედის შიგნით, რომელიც გამოსცემს ინფრაწითელ შუქს მისთვის მიცემული ყოველი ელექტრული პულსისთვის. ეს პულსი წარმოიქმნება როგორც ღილაკზე დაჭერილი დისტანციური მართვის ღილაკი, რითაც სრულდება წრე, რომელიც უზრუნველყოფს მიკერძოებულობას LED- ზე. მიკერძოებული LED ასხივებს 940nm ტალღის სიგრძის სინათლეს, როგორც იმპულსების სერიას, რაც შეესაბამება ღილაკზე დაჭერით. თუმცა მას შემდეგ, რაც IR LED– თან ერთად ინფრაწითელი სინათლის სხვა მრავალი წყარო, როგორიცაა ჩვენ ადამიანები, ნათურები, მზე და ა.შ., გადაცემულ ინფორმაციას შეუძლია ხელი შეუშალოს. ამ პრობლემის გადაწყვეტა არის მოდულაცია. გადაცემული სიგნალის მოდულირება ხდება 38 KHz გადამზიდავი სიხშირის (ან სხვა სიხშირის 36 -დან 46 KHz– მდე) გამოყენებით. IR LED იქმნება ამ სიხშირის რხევისთვის პულსის დროის განმავლობაში. ინფორმაცია ან სინათლის სიგნალები არის პულსის სიგანე მოდულირებული და შეიცავს 38 KHz სიხშირეს. ინფრაწითელი გადაცემა ეხება ენერგიას ელექტრომაგნიტური გამოსხივების სპექტრის რეგიონში ტალღების სიგრძეში უფრო გრძელი ვიდრე ხილული სინათლის, მაგრამ უფრო მოკლე ვიდრე რადიოტალღების. შესაბამისად, ინფრაწითელი სიხშირე უფრო მაღალია ვიდრე მიკროტალღური, მაგრამ უფრო დაბალი ვიდრე ხილული სინათლის. მეცნიერები ინფრაწითელი გამოსხივების (IR) სპექტრს სამ რეგიონად ყოფენ. ტალღის სიგრძე განისაზღვრება მიკრონით (სიმბოლოა μ, სადაც 1 μ = 10-6 მეტრი) ან ნანომეტრებში (შემოკლებით ნმ, სადაც 1 ნმ = 10-9 მეტრი = 0.001 5). ახლომდებარე IR ზოლი შეიცავს ენერგიას ტალღის სიგრძის დიაპაზონში უახლოეს ხილულთან, დაახლოებით 0,750 -დან 1,300 5 -მდე (750 -დან 1300 ნმ). შუალედური IR ზოლი (ასევე მოუწოდა შუა IR ზოლს) შედგება ენერგიის დიაპაზონში 1.300 -დან 3.000 5 -მდე (1300 -დან 3000 ნმ -მდე). შორეული IR დიაპაზონი ვრცელდება 2.000 – დან 14.000 5 – მდე (3000 ნმ – დან 1.4000 x 104 ნმ).

ბ) IR მიმღები

მიმღები შედგება ფოტო დეტექტორისგან, რომელიც ავითარებს გამომავალ ელექტრულ სიგნალს, რადგან მასზე შუქი მოდის. დეტექტორის გამოსასვლელი გაფილტრულია ვიწრო ზოლის ფილტრის გამოყენებით, რომელიც აგდებს ყველა სიხშირეს გადამყვან სიხშირეზე ქვემოთ ან ზემოთ (ამ შემთხვევაში 38 KHz). გაფილტრული გამომავალი გადაეცემა შესაბამის მოწყობილობას, როგორიცაა მიკროკონტროლერი ან მიკროპროცესორი, რომელიც აკონტროლებს მოწყობილობებს, როგორიცაა კომპიუტერი ან რობოტი. ფილტრებიდან გამომავალი ასევე შეიძლება დაუკავშიროთ ოსცილოსკოპს პულსის წასაკითხად.

IR პროგრამები:

ინფრაწითელი გამოიყენება უკაბელო კომუნიკაციის, მონიტორინგისა და კონტროლის სხვადასხვა პროგრამებში. Აი ზოგიერთი მაგალითი:

· სახლის გასართობი დისტანციური მართვის ყუთები

· უკაბელო (ადგილობრივი ქსელები)

· ბმულები ნოუთბუქ კომპიუტერებსა და დესკტოპ კომპიუტერებს შორის

· უკაბელო მოდემი

· შეჭრის დეტექტორები

· მოძრაობის დეტექტორები

· ხანძრის სენსორები

· ღამის ხედვის სისტემები

· სამედიცინო დიაგნოსტიკური აღჭურვილობა

· რაკეტების მართვის სისტემები

· გეოლოგიური მონიტორინგის მოწყობილობები

IR მონაცემების ერთი მოწყობილობიდან მეორეზე გადაცემას ზოგჯერ უწოდებენ სხივს.

ნაბიჯი 2: IR სენსორი და NEC Protocol Fromat

IR სენსორი და NEC პროტოკოლი Fromat
IR სენსორი და NEC პროტოკოლი Fromat
IR სენსორი და NEC პროტოკოლი Fromat
IR სენსორი და NEC პროტოკოლი Fromat
IR სენსორი და NEC პროტოკოლი Fromat
IR სენსორი და NEC პროტოკოლი Fromat
IR სენსორი და NEC პროტოკოლი Fromat
IR სენსორი და NEC პროტოკოლი Fromat

IR სენსორები (სურათი 1)

TSOP1738, SFH-5110-38 (38kHz)

TSOP სენსორების მახასიათებლები:

  • წინასწარი გამაძლიერებელი და ფოტო დეტექტორი ორივე ერთ პაკეტშია
  • შიდა ფილტრი PCM სიხშირისთვის
  • გაუმჯობესებული დაცვა ელექტრული ველის დარღვევისგან
  • TTL და CMOS თავსებადობა
  • გამომავალი აქტიური დაბალი დაბალი ენერგიის მოხმარება
  • მაღალი იმუნიტეტი ატმოსფერული შუქის მიმართ
  • შესაძლებელია მონაცემთა უწყვეტი გადაცემა

NEC პროტოკოლი:

NEC IR გადაცემის პროტოკოლი იყენებს შეტყობინების ბიტების პულსის მანძილის კოდირებას. თითოეული პულსის ამოფრქვევა არის 562.5μs სიგრძე, გადამზიდავი სიხშირით 38kHz (26.3μs). ლოგიკური ბიტები გადადის შემდეგნაირად (სურათი 2):

  • ლოგიკური '0' - 562.5μs პულსი ადიდებული, რასაც მოჰყვა 562.5μs სივრცე, საერთო გადაცემის დრო 1.125ms
  • ლოგიკური '1' - 562.5μs პულსი ადიდებული, რასაც მოყვება 1.6875ms სივრცე, საერთო გადაცემის დრო 2.25ms

გადამზიდავი პულსი შედგება 21 ციკლისგან 38kHz– ზე. იმპულსებს ჩვეულებრივ აქვთ ნიშანი/სივრცე თანაფარდობა 1: 4, მიმდინარე მოხმარების შესამცირებლად:

(სურათი 3)

თითოეული კოდის თანმიმდევრობა იწყება 9ms პულსი, რომელიც ცნობილია როგორც AGC პულსი. ამას მოყვება 4.5 წამიანი დუმილი:

(სურათი 4)

შემდეგ მონაცემები შედგება 32 ბიტისგან, 16-ბიტიანი მისამართით, რასაც მოყვება 16-ბიტიანი ბრძანება, ნაჩვენებია მათი გადაცემის თანმიმდევრობით (მარცხნიდან მარჯვნივ):

(სურათი 5)

ოთხი ბიტიანი მონაცემების ბიტი თითოეული იგზავნება უმცირეს მნიშვნელოვან ბიტამდე. სურათი 1 ასახავს NEC IR გადამცემი ჩარჩოს ფორმატს, მისამართი 00h (00000000b) და ADh ბრძანება (10101101b).

სულ 67.5ms არის საჭირო შეტყობინების ჩარჩოს გადასაცემად. მას სჭირდება 27ms მისამართის 16 ბიტი (მისამართი + შებრუნებული) და ბრძანების 16 ბიტი (ბრძანება + ინვერსია) გადასაცემად.

(სურათი 6)

ჩარჩოს გადასაცემად საჭირო დრო:

16 ბიტი მისამართისთვის (მისამართი + შებრუნებული) მოითხოვს დროის გადაცემას 27ms.და ბრძანებისთვის 16 ბიტი (ბრძანება + ინვერსია) ასევე მოითხოვს 27ms დროის გადაცემას. რადგან (მისამართი + მისამართი შებრუნებული) ან (ბრძანება + ბრძანება შებრუნებული) ყოველთვის შეიცავს 8 '0 -ს და 8' 1 -ს, ასე რომ (8 * 1.125ms) + (8 * 2.25ms) == 27 ms. ჩარჩოს გადასაცემად მთლიანი დროის მიხედვით (9ms +4.5ms +27ms +27ms) = 67.5 ms.

გაიმეორეთ კოდები: თუ დისტანციური მართვის ღილაკი დეპრესიაშია, განმეორებითი კოდი გაიცემა, როგორც წესი, პულსის ამოფრქვევის შემდეგ დაახლოებით 40 წმ, რაც შეტყობინების დასასრულს ნიშნავდა. განმეორებითი კოდის გაგზავნა გაგრძელდება 108 ms ინტერვალით, სანამ გასაღები საბოლოოდ არ გამოვა. განმეორებითი კოდი შედგება შემდეგიდან, თანმიმდევრობით:

  • 9ms წამყვანი პულსი ადიდებული
  • 2.25 მმ სივრცე
  • 562.5μs პულსი ადიდებული იყო სივრცის დასასრულის აღსანიშნავად (და შესაბამისად გადაცემული განმეორებითი კოდის დასასრული).

(სურათი 7)

დაგვიანების გაანგარიშება (1 ms):

საათის სიხშირე = 11.0592 Mhz

მანქანების ციკლი = 12

გადადება = 1 წმ

TimerValue = 65536 - ((Delay * ClockFreq)/Machine Cycle) = 65536 - ((1ms * 11.0592Mhz)/12)

= 65536 - 921 = 0xFC67

ნაბიჯი 3: DC ძრავის კონტროლი L293D გამოყენებით

DC ძრავის კონტროლი L293D გამოყენებით
DC ძრავის კონტროლი L293D გამოყენებით

DC ძრავა

DC ძრავა ელექტრო ენერგიას გარდაქმნის მექანიკურ ენერგიად, რომელიც შეიძლება გამოყენებულ იქნას მრავალი სასარგებლო სამუშაოს შესასრულებლად. მას შეუძლია წარმოქმნას მექანიკური მოძრაობა, როგორიცაა ჩემი RoboCar– ის წინსვლა/წინა სიტყვა. DC ძრავები მოდის სხვადასხვა რეიტინგში, როგორიცაა 6V და 12V. მას აქვს ორი მავთული ან ქინძისთავები. ჩვენ შეგვიძლია შევაბრუნოთ ბრუნვის მიმართულება შეყვანის პოლარობის შეცვლით.

აქ ჩვენ უპირატესობას ვანიჭებთ L293D– ს, რადგან 600mA– ს ნიშანი კარგია მცირე DC ძრავების მართვისთვის და დაცვის დიოდები შედის IC– ში. თითოეული პინის აღწერილობა ასეთია: ჩართეთ ქინძისთავები: ეს არის პინის ნომერი. 1 და პინი არა. 9. პინის ნომერი 1 გამოიყენება Half-H მძღოლის 1 და 2. ჩართვის მიზნით (H ხიდი მარცხენა მხარეს). პინის ნომერი 9 გამოიყენება H- ხიდის მძღოლის 3 და 4. ჩართვის მიზნით (H ხიდი მარჯვენა მხარეს).

კონცეფცია მარტივია, თუ გსურთ გამოიყენოთ კონკრეტული H ხიდი, თქვენ უნდა მიანიჭოთ მაღალი ლოგიკა შესაბამისი ჩართვის ქინძისთავებს IC– ს ელექტროენერგიის მიწოდებასთან ერთად. ეს პინი ასევე შეიძლება გამოყენებულ იქნას ძრავის სიჩქარის გასაკონტროლებლად PWM ტექნიკის გამოყენებით. VCC1 (პინ 16): კვების ბლოკი. შეაერთეთ იგი 5 ვ წყაროსთან. VCC2 (პინ 8): ძრავის კვების ბლოკი. გამოიყენეთ +ve ძაბვა ძრავის რეიტინგის მიხედვით. თუ გსურთ თქვენი ძრავის მართვა 12 ვ -ზე, გამოიყენეთ 12 ვ ამ პინზე.

ასევე შესაძლებელია ძრავის მართვა უშუალოდ ბატარეაზე, გარდა იმისა, რაც გამოიყენება მიკროსქემის ენერგიის მომარაგებისათვის, უბრალოდ დააკავშირეთ ამ ბატარეის +ტერმინალი VCC2 პინთან და გახადეთ ორივე ბატარეის GND საერთო. (MAX ძაბვა ამ პინზე არის 36V მისი მონაცემების მიხედვით). GND (ქინძისთავები 4, 5, 12, 13): შეაერთეთ ისინი წრის საერთო GND– თან. შეყვანა (ქინძისთავები 2, 7, 10, 15):

ეს არის შეყვანის ქინძისთავები, რომლის მეშვეობითაც საკონტროლო სიგნალებს იძლევა მიკროკონტროლერი ან სხვა სქემა/IC. მაგალითად, თუ პინ 2 -ზე (პირველი ნახევრის H დრაივერის შეყვანა) ჩვენ მივცემთ ლოგიკას 1 (5V), ჩვენ მივიღებთ VCC2- ის ტოლ ძაბვას 1 -ლი ნახევრის H დრაივერის შესაბამის გამომავალ პინზე, ანუ პინ no. 3. ანალოგიურად ლოგიკისთვის 0 (0V) პინ 2 -ზე, 0V პინ 3 -ზე ჩანს. გამომავალი (პინ 3, 6, 11, 14): გამოაქვს ქინძისთავები. შეყვანის სიგნალის მიხედვით გამოდის სიგნალი.

საავტომობილო მოძრაობები A B

-----------------------------------------------------------------------------------------

…………… გაჩერება: დაბალი: დაბალი

…… საათის ისრის მიმართულებით: დაბალი: მაღალი

საათის ისრის საწინააღმდეგოდ: მაღალი: დაბალი

…………….გაჩერება: მაღალი: მაღალი

ნაბიჯი 4: მიკროსქემის დიაგრამები საავტომობილო მძღოლისა და IR სენსორისთვის

მიკროსქემის დიაგრამები საავტომობილო მძღოლისა და IR სენსორისთვის
მიკროსქემის დიაგრამები საავტომობილო მძღოლისა და IR სენსორისთვის
მიკროსქემის დიაგრამები საავტომობილო მძღოლისა და IR სენსორისთვის
მიკროსქემის დიაგრამები საავტომობილო მძღოლისა და IR სენსორისთვის
მიკროსქემის დიაგრამები საავტომობილო მძღოლისა და IR სენსორისთვის
მიკროსქემის დიაგრამები საავტომობილო მძღოლისა და IR სენსორისთვის

ATmega32 არის დაბალი სიმძლავრის CMOS 8 ბიტიანი მიკროკონტროლერი, რომელიც დაფუძნებულია AVR გაძლიერებულ RIS არქიტექტურაზე. ერთი საათის ციკლში მძლავრი მითითებების შესრულებით, ATmega32 აღწევს გამტარუნარიანობას, რომელიც უახლოვდება 1 MIPS– ს MHz– ზე, რაც სისტემის დიზაინერს საშუალებას აძლევს ოპტიმიზირდეს ენერგიის მოხმარება და დამუშავების სიჩქარე.

AVR ბირთვი აერთიანებს მდიდარ ინსტრუქციას, 32 ზოგადი დანიშნულების სამუშაო რეგისტრთან. ყველა 32 რეგისტრი უშუალოდ არის დაკავშირებული არითმეტიკული ლოგიკური ერთეულთან (ALU), რაც საშუალებას აძლევს ორ დამოუკიდებელ რეგისტრზე წვდომას ერთ ინსტრუქციაში, რომელიც შესრულებულია ერთი საათის ციკლში. შედეგად მიღებული არქიტექტურა უფრო ეფექტურია კოდისთვის, ხოლო მიღწევების მიღწევა ათჯერ უფრო სწრაფია, ვიდრე ჩვეულებრივი CISC მიკროკონტროლერები.

ATmega32 გთავაზობთ შემდეგ მახასიათებლებს:

  • 32 კბაიტი სისტემაში პროგრამირებადი ფლეშ პროგრამის მეხსიერება წაკითხვისას, წერის შესაძლებლობებით,
  • 1024 ბაიტი EEPROM, 2K ბაიტი SRAM,
  • 32 ზოგადი დანიშნულების I/O ხაზები,
  • 32 ზოგადი დანიშნულების სამუშაო რეგისტრი,
  • JTAG ინტერფეისი Boundaryscan– ისთვის,
  • ჩიპების გამართვის მხარდაჭერა და პროგრამირება, სამი მოქნილი ქრონომეტრი/მრიცხველი შედარების რეჟიმებით, შიდა და გარე შეფერხებები, სერიული პროგრამირებადი USART, ბაიტზე ორიენტირებული ორი მავთულის სერიული ინტერფეისი, 8 არხი,
  • 10-ბიტიანი ADC სურვილისამებრ დიფერენციალური შეყვანის ეტაპი პროგრამირებადი მოგებით (მხოლოდ TQFP პაკეტი),
  • პროგრამირებადი Watchdog ტაიმერი შიდა ოსცილატორით,
  • SPI სერიული პორტი და
  • ექვსი პროგრამული უზრუნველყოფის არჩევის ენერგიის დაზოგვის რეჟიმი.

    • უმოქმედო რეჟიმი აჩერებს CPU– ს USART– ის დაშვებისას,
    • ორ მავთულის ინტერფეისი, A/D კონვერტორი,
    • SRAM,
    • ტაიმერი/მრიცხველები,
    • SPI პორტი და
    • შეუშალოს სისტემა ფუნქციონირების გასაგრძელებლად.
    • Power-down რეჟიმი ინახავს რეესტრის შინაარსს, მაგრამ ყინავს ოსცილატორს, გამორთავს ყველა სხვა ჩიპის ფუნქციებს მომდევნო გარე შეწყვეტის ან აპარატურის გადატვირთვამდე.
    • ენერგიის დაზოგვის რეჟიმში, ასინქრონული ტაიმერი აგრძელებს მუშაობას, რაც მომხმარებელს საშუალებას აძლევს შეინარჩუნოს ტაიმერის ბაზა, სანამ დანარჩენი მოწყობილობა სძინავს.
    • ADC ხმაურის შემცირების რეჟიმი აჩერებს პროცესორს და ყველა I/O მოდულს, გარდა ასინქრონული ტაიმერისა და ADC, რათა შეამციროს ხმაურის გადართვა ADC გარდაქმნების დროს
    • ლოდინის რეჟიმში, ბროლის/რეზონატორის ოსცილატორი მუშაობს, სანამ დანარჩენი მოწყობილობა სძინავს. ეს იძლევა ძალიან სწრაფ გაშვებას დაბალი ენერგიის მოხმარებასთან ერთად.
    • გაფართოებული ლოდინის რეჟიმში, როგორც მთავარი ოსცილატორი, ასევე ასინქრონული ტაიმერი აგრძელებს მუშაობას.

ყველა დაკავშირებული სქემა მოცემულია აქ და მოცემულია ძირითადი სქემა (atmega32).

ნაბიჯი 5: Avr პროგრამები

Avr პროგრამები
Avr პროგრამები
Avr პროგრამები
Avr პროგრამები

1. "დისტანციური სენსორისთვის":

#ჩართეთ #ჩართეთ

#მოიცავს "დისტანციური. თ"

// გლობალური არასტაბილური unsigned int დრო; // მთავარი ქრონომეტრი, ინახავს დროს 10 -ში, // განახლებულია ISR (TIMER0_COMP) არასტაბილური ხელმოუწერელი char BitNo; // მომდევნო BIT არასტაბილური ხელმოუწერელი char ByteNo; // მიმდინარე ბაიტის პოზიციები

არასტაბილური ხელმოუწერელი char IrData [4]; // ოთხი მონაცემთა ბაიტი Ir პაკეტი // 2-ბაიტი მისამართი 2-ბაიტი მონაცემები არასტაბილური ხელმოუწერელი char IrCmdQ [QMAX]; // მიღებული საბოლოო ბრძანება (ბუფერი)

არასტაბილური ხელმოუწერელი char PrevCmd; // გამოიყენება გამეორებისთვის

// ცვლადები გამოიყენება გამეორების დასაწყებად მხოლოდ გარკვეული დროის გასაღების დაჭერის შემდეგ

არასტაბილური ხელმოუწერელი char გაიმეორეთ; // 1 = დიახ 0 = არა არასტაბილური ხელმოუწერელი char RCount; // განმეორებითი დათვლა

არასტაბილური char QFront = -1, QEnd = -1;

არასტაბილური ხელმოუწერელი char სახელმწიფო; // მიმღების მდგომარეობა

არასტაბილური ხელმოუწერელი char Edge; // შეწყვეტის ზღვარი [RISING = 1 OR FALLING = 0]

არასტაბილური ხელმოუწერელი int გაჩერება;

/********************************************** ***************************************** / /*FUNCTIONSSTARTS* / / ********************************************* ******************************************

void RemoteInit () {

char i; for (i = 0; i <4; i ++) IrData = 0;

გაჩერება = 0; მდგომარეობა = IR_VALIDATE_LEAD_HIGH; ზღვარი = 0; გაიმეორეთ = 0;

// ტაიმერის დაყენება 1 // ------------ TCCR0 | = ((1 <

TIMSK | = (1 <

OCR0 = TIMER_COMP_VAL; // შეადარეთ მნიშვნელობა

ხელმოუწერელი char GetRemoteCmd (char ელოდება) {unsigned char cmd;

თუ (დაელოდეთ) სანამ (QFront ==-1); სხვა შემთხვევაში თუ (QFront ==-1) დაბრუნდება (RC_NONE);

cmd = IrCmdQ [QFront];

თუ (QFront == QEnd) QFront = QEnd = -1; სხვა {if (QFront == (QMAX-1)) QFront = 0; სხვა QFront ++; }

cmd დაბრუნება;

}

2. მთავარი ():

int მთავარი (ბათილია) {

uint8_t cmd = 0; DDRB = 0x08;

DDRD = 0x80;

DDRC = 0x0f; PORTC = 0x00;

ხოლო (1) // უსასრულო მარყუჟი აქტიურ IR სენსორზე {

cmd = GetRemoteCmd (1);

გადართვა (სმდ) {

შემთხვევა xx: {// BOT წინ მიიწევს // Ch+ btn forwardmotor ();

შესვენება; // ორივე მოტორი წინსვლის მიმართულებით

}

………………………………………………….

………………………………………………….

………………………………………………….

ნაგულისხმევი: PORTC = 0x00; შესვენება; // მარცხენა და მარჯვენა ძრავები ჩერდება}

}

}/*მთავრის დასასრული*/

……………………………………………………………………………………………………………………

// ეს არის ძირითადი მოდელი, მაგრამ შემიძლია მისი გამოყენება PWM რეჟიმში.

//…………………………………………….. Გაერთე……………………………………………………//

გირჩევთ: