const int led = 13;
এটি সঠিক পদ্ধতি। অথবা এমনকি:
const byte led = 13;
আপনার কত পিন আছে?
কিছু টিউটোরিয়াল তাদের কাছে থাকা মানের গুণমানের পক্ষে যথেষ্টভাবে যায় নি।
পারফরম্যান্স আরও ভাল ব্যবহার করা হবে const byte
, তুলনা করুন int
তবে সংকলক আপনি কী করছেন তা উপলব্ধি করতে যথেষ্ট স্মার্ট হতে পারে।
আপনি যা করতে পারেন তা হ'ল লোককে নিজের কোডে ব্যবহার করে আরও দক্ষ কৌশল ব্যবহার করতে উত্সাহিত করা।
মন্তব্যে প্রতিক্রিয়া
একজন মন্তব্যকারী পরামর্শ দিয়েছেন যে byte
এটি স্ট্যান্ডার্ড সি নয় এটি সঠিক, তবে এটি একটি আরডুইনো স্ট্যাকএক্সচেঞ্জ সাইট এবং আমি বিশ্বাস করি যে আরডুইনো আইডিই সরবরাহিত স্ট্যান্ডার্ড প্রকারগুলি গ্রহণযোগ্য is
আরডুইনো.হ এই লাইন আছে:
typedef uint8_t byte;
মনে রাখবেন যে এটি ঠিক একই রকম নয় unsigned char
। দেখুন বনাম স্বাক্ষরবিহীন গৃহস্থালির কাজ uint8_t এবং যখন uint8_t ≠ স্বাক্ষরবিহীন গৃহস্থালির কাজ হয়? ।
অন্য একজন মন্তব্যকারী পরামর্শ দিয়েছেন যে বাইট ব্যবহার করা অগত্যা কর্মক্ষমতা উন্নত করতে পারে না, কারণ এর চেয়ে কম সংখ্যায় int
প্রচার করা হবে int
(আপনি যদি আরও কিছু চান তবে পূর্ণসংখ্যা প্রচারের নিয়মগুলি দেখুন)।
তবে কোনও কনট সনাক্তকারী হিসাবে প্রসঙ্গে, সংকলকটি যে কোনও ক্ষেত্রে দক্ষ কোড তৈরি করবে। উদাহরণস্বরূপ, "জ্বলজ্বলে" বিচ্ছিন্ন করা এটিকে মূল আকারে দেয়:
00000086 <loop>:
86: 8d e0 ldi r24, 0x0D ; 13
88: 61 e0 ldi r22, 0x01 ; 1
8a: 1b d1 rcall .+566 ; 0x2c2 <digitalWrite>
আসলে এটি একই কোড উত্পন্ন করে কিনা 13
:
- আক্ষরিক
- ইহা একটি
#define
- ইহা একটি
const int
- ইহা একটি
const byte
সংকলকটি জানে যে এটি কখন একটি রেজিস্টারে কোনও সংখ্যাকে ফিট করতে পারে এবং কখন তা করতে পারে না। তবে কোডিং ব্যবহার করা ভাল অভ্যাস যা আপনার অভিপ্রায় নির্দেশ করে । এটি তৈরি করলে const
এটি স্পষ্ট হয় যে সংখ্যাটি পরিবর্তন হবে না এবং এটি byte
(বা uint8_t
) তৈরি করলে তা স্পষ্ট হয় যে আপনি অল্প সংখ্যক আশা করছেন।
বিভ্রান্তিকর ত্রুটি বার্তা
এড়াতে যাওয়ার আরও একটি বড় কারণ #define
হ'ল আপনি যদি কোনও ভুল করেন তবে প্রাপ্ত ত্রুটি বার্তাগুলি। এই "পলক" স্কেচটি বিবেচনা করুন যার একটি ত্রুটি রয়েছে:
#define LED = 13;
void setup() {
pinMode(LED, OUTPUT); // <---- line with error
}
void loop() {
digitalWrite(LED, HIGH); // <---- line with error
delay(1000);
digitalWrite(LED, LOW); // <---- line with error
delay(1000);
}
উপরিভাগে এটি দেখতে ঠিক আছে তবে এটি ত্রুটি বার্তা উত্পন্ন করে:
Blink.ino: In function ‘void setup()’:
Blink:4: error: expected primary-expression before ‘=’ token
Blink:4: error: expected primary-expression before ‘,’ token
Blink:4: error: expected `;' before ‘)’ token
Blink.ino: In function ‘void loop()’:
Blink:8: error: expected primary-expression before ‘=’ token
Blink:8: error: expected primary-expression before ‘,’ token
Blink:8: error: expected `;' before ‘)’ token
Blink:10: error: expected primary-expression before ‘=’ token
Blink:10: error: expected primary-expression before ‘,’ token
Blink:10: error: expected `;' before ‘)’ token
আপনি প্রথম হাইলাইট করা রেখা (লাইন 4) দেখুন এবং একটি "=" চিহ্নও দেখতে পাবেন না । এছাড়াও, লাইনটি ভাল দেখাচ্ছে। এখন এটা মোটামুটি সুস্পষ্ট কি সমস্যা এখানে ( = 13
প্রতিস্থাপিত হচ্ছে LED
), কিন্তু যখন লাইন 400 লাইন আরও কোডে ডাউন তার সাথে পথে চালিত সংজ্ঞায়িত করা হয় সমস্যা সুস্পষ্ট নয়।
আমি এর জন্য বহুবার লোককে পড়ে থাকতে দেখেছি (নিজেকে সহ)।