Competitive LFR

আজকের পর্বে আমরা দেখবো কিভাবে ইনভার্স লাইন ফলো করানো যায়।

ইনভার্স লাইনের ক্ষেত্রে তোমার রোবটের সেন্সর এর পারসপেক্টিভ চেঞ্জ করে দিলেই কিন্তু আরামসে আগের সেম লজিক দিয়েই লাইন ফলো করা যায়। অর্থাৎ আমরা যদি threshold ভ্যালুর চেয়ে বড় মান কে সাদা এবং ছোট মান কে কালো ধরে নিই, তাইলেই আমার রোবট এর লাইনের প্রতি দৃষ্টিভঙ্গি উলটে যায়। নিচের কোডটি লক্ষ্য করোঃ

void reading() {
  sensor = 0;
  sum = 0;
  for (byte i = 0; i < 6; i++) {
    s[i] = analogRead(i);
    (s[i] > threshold) ? s[i] = 1 ^ i_mode : s[i] = 0 ^ i_mode;
    sensor += s[i] * base[i];
    sum += s[i];
  }
}

এখানে i_mode নামক ভ্যারিয়েবল টির মান যদি 1 হয়, সেক্ষেত্রে রোবট এর পারপেক্টিভ ইনভার্স হয়ে যাবে। আর যদি i_mode এর মান 0 থাকে, সেক্ষেত্রে রোবট সাধারণভাবেই লাইন ফলো করে যাবে।

এখন আমরা নিচের কোডে দেখতে পাবো কিভাবে ইনভার্স লাইন ডিটেক্ট করে i_mode এর মান চেঞ্জ করে ট্রিগার করানো যায়ঃ

void i_detection() {
  if (s[5] && s[0] && sum < 6) {  //inverse line detection
    uint32_t timer = millis();
    while ((s[5] || s[0]) && sum < 6) {
      reading();
      if (millis() - timer > i_timer) {
        i_mode = !i_mode;
        digitalWrite(led, i_mode);
        cross = 's'; //to avoid any unnecessary sharp turns
        break;
      }
    }
    turn = 'l'; //specific guided turn for Y section
  }
}

লক্ষ্য রাখবে যে তোমার এই কোডে মাঝে মাঝে লেফট হ্যান্ড রুল কিংবা রাইট হ্যান্ড রুল ট্রিগার করতে পারে। সেক্ষেত্রে cross এর ভ্যালু অবশ্যই ‘s’ করে নিতে হবে। বিস্তারিত জানতে Advanced Line Follow কোর্সটি দেখে নিতে পারো!

0% Complete