පාඩම් මාලාව 5: Analog Inputs සහ Outputs

Digital සංඥා (HIGH/LOW) මෙන් නොව, Analog සංඥා යනු අගයන් පරාසයක් අතර ನಿರಂತರව වෙනස් වන සංඥා වේ. මෙම පාඩමෙන් Arduino හි analog pins (A0, A1, ...) භාවිතයෙන් එවැනි සංඥා කියවන ආකාරය සහ PWM තාක්ෂණය භාවිතයෙන් analog ප්‍රතිදානයන් ලබාදෙන ආකාරය ඉගෙන ගනිමු.

පාඩමේ අන්තර්ගතය

Digital සංඥාවල ඇත්තේ ON සහ OFF යන තත්ව දෙක පමණි. නමුත් analog සංඥා යනු උෂ්ණත්වය, ආලෝකයේ තීව්‍රතාව, ශබ්දය වැනි ನೈಜ ලෝකයේ ඇති ನಿರಂತರව වෙනස් වන අගයන් නිරූපණය කරයි.

Arduino හි ඇති Analog-to-Digital Converter (ADC) මගින් මෙම analog වෝල්ටීයතා අගයන් (0V සිට 5V දක්වා) 0 සිට 1023 දක්වා වූ පූර්ණ සංඛ්‍යා (integer) බවට පරිවර්තනය කරයි. 0V යනු 0 ට ද, 5V යනු 1023 ට ද අනුරූප වේ.

Potentiometer යනු එහි knob එක කරකැවීමෙන් ප්‍රතිරෝධය වෙනස් කළ හැකි උපාංගයකි. මෙය analog input ලබාගැනීමට ඇති කදිම උපාංගයකි.
  • සම්බන්ධ කිරීම: Potentiometer එකේ අග්‍ර තුනක් ඇත. දෙපස අග්‍ර 5V සහ GND වලටද, මැද අග්‍රය Arduino හි A0 වැනි analog input pin එකකටද සම්බන්ධ කරන්න.
  • කේතය: analogRead(pin) ශ්‍රිතය භාවිතයෙන් එම pin එකේ වෝල්ටීයතාවයට අනුරූප 0-1023 අතර අගය ලබාගත හැක.
int sensorValue = analogRead(A0); // A0 pin එකේ අගය කියවයි
Serial.println(sensorValue);      // එම අගය Serial Monitor එකේ පෙන්වයි

Arduino වලට සැබෑ analog output එකක් ලබාදිය නොහැක. ඒ වෙනුවට, එය PWM (Pulse Width Modulation) නමැති තාක්ෂණය භාවිතා කරයි. මෙහිදී digital pin එකක් ඉතා වේගයෙන් ON සහ OFF කිරීම මගින් analog අගයක් අනුකරණය කරයි.
  • PWM Pins: Arduino Uno බෝඩ් එකේ ~ සලකුණ ඇති pins (3, 5, 6, 9, 10, 11) පමණක් PWM සඳහා භාවිතා කළ හැක.
  • analogWrite() ශ්‍රිතය: analogWrite(pin, value) ශ්‍රිතය භාවිතයෙන් PWM ප්‍රතිදානයක් ලබා දිය හැක. මෙහි value යනු 0 (සම්පූර්ණයෙන්ම OFF) සිට 255 (සම්පූර්ණයෙන්ම ON) දක්වා අගයකි.
අගය 127 ක් ලබාදීමෙන් LED එක අර්ධ දීප්තියෙන් දල්වා තැබිය හැක.

මෙම ව්‍යාපෘතියේදී, potentiometer එක කරකවන විට LED එකක දීප්තිය අඩු වැඩි වන සේ සකසමු.
  1. පරිපථය: Potentiometer එකක් A0 pin එකටද, LED එකක් pin 9 (PWM pin) එකටද සම්බන්ධ කරන්න.
  2. කේතය:
    • loop() එක තුළදී, analogRead(A0) මගින් potentiometer අගය (0-1023) කියවා විචල්‍යයකට (variable) දමාගන්න.
    • analogWrite() ශ්‍රිතයට අවශ්‍ය වන්නේ 0-255 අතර අගයක් නිසා, අපට ලැබුණු 0-1023 අගය 0-255 පරාසයට පරිවර්තනය කළ යුතුය. map() ශ්‍රිතය මේ සඳහා ඉතා පහසුය: outputValue = map(sensorValue, 0, 1023, 0, 255);
    • අවසානයේ, analogWrite(9, outputValue); ලෙස LED එකේ දීප්තිය සකසන්න.
මෙමගින් analog input එකක් ලබාගෙන, එයට අනුරූපව analog output එකක් (PWM මගින්) පාලනය කරන ආකාරය ඔබට පැහැදිලි වනු ඇත.
← පෙර පාඩම: Digital Inputs & Outputs ඊළඟ පාඩම: Sensors සමඟ වැඩ කිරීම →