অ্যানালগ রিড (0) বা অ্যানালগ রিড (A0)


14

আরডুইনো রেফারেন্সে বলা হয়েছে যে আপনি এনালগ পিন # 5 থেকে মানটি পড়তে নিম্নলিখিত কোডটি ব্যবহার করবেন:

int val1 = analogRead(5);

ডিজিটাল পিন # 5 থেকে পড়ার জন্য, আপনি একই পিন নম্বরটি এখানে পাঠাতে হবে digitalRead:

int val2 = digitalRead(5);

analogRead(A5)পরিবর্তে আপনি ব্যবহার করবেন না analogRead(5)?

যদি তা না হয় তবে নিম্নলিখিত কোডগুলি কী করে:

int val3 = analogRead(A5);

উত্তর:


28

টাইাইলোর নির্দিষ্ট প্রশ্নের উত্তর দিতে:

analogRead(5)এবং digitalRead(5)দুটি পৃথক স্থান থেকে পড়া হবে। প্রাক্তনটি এনালগ চ্যানেল থেকে পড়বে 5বা A5দ্বিতীয়টি পিন 5 থেকে পড়বে যা একটি ডিজিটাল পিন হিসাবে ঘটে । হ্যাঁ, আপনি যদি একটি এনালগ পিনটি পড়তে চান তবে আপনার digitalReadব্যবহার করা উচিত A5

কেন?

analogReadঅভ্যন্তরীণভাবে একটি চ্যানেল নম্বর প্রয়োজন তবে এটি আপনাকে এটির একটি পিন নম্বরও দেবে। আপনি যদি এটি একটি পিন নম্বর দেন তবে এটি এটির সাথে সম্পর্কিত চ্যানেল নম্বরে রূপান্তর করবে। যতদূর আমি বলতে পারি যে analogReadকেবলমাত্র একটি ফাংশন যা অভ্যন্তরীণভাবে চ্যানেল নম্বর ব্যবহার করে, কেবলমাত্র একটি চ্যানেল নম্বরকে অনুমতি দেয় এবং এই অনাবন্ধিত পিন-টু-চ্যানেল রূপান্তর সহ একমাত্র ফাংশন। এটি বুঝতে কয়েকটি উদাহরণ দিয়ে শুরু করা যাক।

আপনি যদি analogReadপ্রথম অ্যানালগ পিন ব্যবহার করতে চান তবে আপনি চ্যানেল নম্বর ব্যবহার A0করতে পারেন analogRead(0)বা analogRead(A0)কোনটি পিন নম্বর ব্যবহার করে তা করতে পারেন । আপনি যদি পিন নম্বর বৈকল্পিক ব্যবহার করতে চান তবে পিন নম্বরটিকে তার যথাযথ চ্যানেল সংখ্যায় analogReadরূপান্তর করবে ।A00

আপনি ব্যবহার করতে চান তাহলে digitalWriteপ্রথম এনালগ পিন উপর A0আপনি পারেন শুধুমাত্র না digitalWrite(A0, x)digitalWriteঅভ্যন্তরীণভাবে অ্যানালগ চ্যানেল ব্যবহার করে না এবং আপনাকে এটি একটি চ্যানেল নম্বর পাস করতে দেয় না। ওয়েল, এটা করব দিন আপনি কিন্তু আপনি ভুল PIN নির্বাচন করব। একই digitalReadএবং এমনকি প্রযোজ্য analogWrite

পিন-টু-চ্যানেল রূপান্তরগুলি analogReadকী করবে? এই ফাংশনের জন্য উত্সটি পাওয়া যাবে hardware/arduino/avr/cores/arduino/wiring_analog.cআপনি দেখতে পাবেন এটি বোর্ড প্রকারের উপর ভিত্তি করে কিছু সাধারণ বিয়োগফল করে। A0/ A1/ A2/ ইত্যাদি। ধ্রুবকগুলি অ্যানালগ চ্যানেলের পিন নম্বর উপস্থাপন করে এবং এনালগ ইনপুটগুলি উল্লেখ করার জন্য আপনার যে কোনও জায়গায় ব্যবহার করা যেতে পারে। সেই কারণে তারা আপনার আরডুইনো কোডে ব্যবহারের সেরা বিকল্প কারণ এটি খুব স্পষ্ট। যে আপনি বিভিন্ন ফাংশন ব্যবহার করার পরেও একই শারীরিক বন্দর ব্যবহার করছেন। এই ধ্রুবকের সংজ্ঞাগুলি আপনার বোর্ডের উপর নির্ভর করে।

উদাহরণস্বরূপ, আরডুইনো ইউনো-এর জন্য অ্যানালগ পিন সংজ্ঞা কোডটি এখানে hardware/arduino/avr/variants/standard/pins_arduino.h

static const uint8_t A0 = 14;
static const uint8_t A1 = 15;
static const uint8_t A2 = 16;
static const uint8_t A3 = 17;
static const uint8_t A4 = 18;
static const uint8_t A5 = 19;
static const uint8_t A6 = 20;
static const uint8_t A7 = 21;

তুলনার জন্য এখানে আরডুইনো মেগার জন্য অ্যানালগ পিন সংজ্ঞা কোডটি রয়েছে:

static const uint8_t A0 = 54;
static const uint8_t A1 = 55;
static const uint8_t A2 = 56;
[...]
static const uint8_t A13 = 67;
static const uint8_t A14 = 68;
static const uint8_t A15 = 69;

এনালগ পিনের উপর আরও EE আলোচনা: আমি কি আমার প্রকল্পটির জন্য ডিজিটাল হিসাবে আরডুইনোতে এনালগ পিনগুলি ব্যবহার করতে পারি?


1
আমি যদিও এটি আপনার ব্যাখ্যা করার মতোই ছিলাম, আমি কেবলমাত্র আরডিনো রেফারেন্স দ্বারা বিভ্রান্ত হয়ে পড়েছিলাম, এতে মিথ্যা তথ্য রয়েছে।
টিয়ালো

1
এছাড়াও আপনি করতে পারেন শুধুমাত্র কি analogReadএনালগ পিনের এ! অন্যদিকে, analogWriteএনালগ এবং পিডব্লিউএম পিন উভয়ই ব্যবহার করা যেতে পারে।
টিয়ালো

1
@ টিইলো আমি সোর্স কোড থেকে নেওয়া আরও কিছু সঠিক তথ্য দিয়ে আমার প্রতিক্রিয়া আপডেট করেছি।
কেভিন মার্ক

3
এনালগ রাইট () পিনের যে কোনও একটিতে কল করা যেতে পারে, তবে এটি কেবল পিডব্লিউএম পিনগুলিতে কিছু করে। PWM নন ডিটাল পিন এবং সমস্ত অ্যানালগ পিনগুলিতে এটি কেবল ডিজিটালওয়াইট () কল করে।
বাল্ডেনজিনিয়ার

3
@ পোটাটাক - এটি সাধারণত গৃহীত হয় যে কমপক্ষে প্রায় কাছাকাছি সময়ে আরডুইনো ডকুমেন্টেশন মোটামুটি ঘৃণ্য। মনে হচ্ছে না যেন আপনি কিছু মিস করছেন, এটি আপনি নন, এটি আর্দুইনো মানুষ।
কনার ওল্ফ

3

আমি এই উপর ঘন্টা ব্যয়। আমি ভেবেছিলাম আমার একটি হার্ডওয়্যার সমস্যা আছে। দেখা যাচ্ছে যে আমি analogRead()ভুল করে ফোন করছিলাম ।

ভুল ( DFRobot from এর থেকে ভ্রান্ত নমুনা কোড ):

val = analogRead(0); //connect sensor to Analog 0

সঠিক:

val = analogRead(A0); //connect sensor to Analog 0

আপডেট : analogRead()GPIO পিন নম্বর নেয়। A0ইত্যাদি হ'ল আরডুইনো পিন সংখ্যার জন্য # নির্দিষ্টকরণ, যেখানে A0 == 36

সতর্কতা অবলম্বন করুন: যেমন ফায়ারবিটল ইএসপি 32, "আইও 36 / এ0" (জিপিআইও 36) লেবেলযুক্ত পিনটি আরডুইনোর সমান A0, তবে "আইও 39 / এ 1" (জিপিআইও 39) আরডুইনো A3(নয় A1), "আইও 34 / এ 2" (জিপিআইও 34) এর সমান আরডিনো A6(নয় A2) ইত্যাদি

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.