electronic sinhalen

සිංහල භාෂාවෙන් විද්‍යා හා තාක්ෂණ කරුණු ලබාදෙන, SENRO-TECH යුගයේ අපූර්වතම විද්‍යා හා තාක්ෂණ ගෙව්ශණය. SENROTECH is all about connecting you to the Technologies ©Copyrighted

Friday, June 28, 2019

Arduino සිංහලෙන් - 12


arduino analog input

ඇනලොග් INPUT යොදාගැනීම



ඉලෙක්ට්‍රොණික පරිපථ වල ප්‍රධාන වශයෙන් දෙවර්ගයක සංඥා යොදාගනු ලබන බව අපි දනිමු.එනම් ඇනලොග් සහ ඩිජිටල් සංඥා යන දෙවර්ගයයි.එසේම ප්‍රයෝගිකව අපට ඩිජිටල් සංඥා හමු නොවන තරම් වන අතර ඩිජිටල් සංඥා යනු මිනිසා විසින් නිර්මාණය කර ගත් සංඥා වර්ගයක් වේ.එහෙත් ඇනලොග් සංඥා ස්වාභාවිකව ඕනෑ තරම් හමු වේ.ඇත්තටම ස්වාභාවික හමුවන සියලු සංඥා ඇනලොග් වේ. Arduino යොදාගෙනද පරිපථ නිර්මාණය කරන විට ද මෙම ඇනලොග් සංඥා ලබා දීමට සිදු වේ. 

(ඇනලොග් හා ඩිජිටල්සංඥා ගැන සහ ඒවා යොදාගනු ලබනු ආකාරය පිළිබදව මීට පෙර විස්තරත්මකව පැහැදිලි කිරීම්සිදු කර ඇත.  ) 
Arduino තුල ද ඇනලොග් සංඥා ලබා දීම සදහා වෙනම පින් කිහිපයක් අන්තර්ගත කොට ඇත.ඒ අනුව පහත දැක්වෙන්නේ Arduino Uno r3 හී එලෙස යොදාගත හැකි පින් වේ.මෙම පින් මගින් ඇනලොග් සංඥා Arduino වෙත ලබා ගෙන එය (ADC ක්‍රියාව සිදුකර) විවිධ කාර්යන් සිදුකරගැනීම සදහා යොදාගත හැක.

ඇනලොග් සංඥා ඩිජිටල් පරිපථ සමග යෙදාගැනීමේදී ඒවා ප්‍රථමයෙන් ඩිජිටල් සංඥා බවට පරිවර්ථනය කර ගත යුතුය.ඒ අනුව ADC පරිවර්තනයක වැදගත්ම මිනුම් දෙකක් ඇත.එනම් resolution එක සහ ADC පරිවර්තනය සදහා බිට්  කියක් යොදාගනු ලබනවාද යන්න.( ADC පිළිබදව මීටපෙර විස්තර කර ඇත.)

Arduino තුලද  ADC පරිවර්තනය සදහා බිට් 10 යක් යොදාගනු ලබයි. එමනිසා මෙහිදී එකිනෙකට වෙනස් බිට් දහයේ අගයන් 1024 ක් නිර්මාණය කරගත හැක.ඒ අනුව මෙහි  resolutionඑක වන්නේ

 
මේ අනුව 0 හා 5 අතර වෝල්ටීයතාවය කොටස් 1024 කට බෙදිය හැකි අතර එහි එක් කොටසක අගය  4.887mv  පමන වේ. .ඒ අනුව මෙහි උපරිම අගය වන 5v වෝල්ටීයතා අගය 1111111111 මගින්ද අවම අගය වන 0v වෝල්ටීයතා අගය 0000000000 මගින්ද පෙන්නුම් කරනු ලබයි.

Arduino IDE තුලදී ඇනලොග් වෝල්ටීයතාවයට අනුරූප බයිනරි අගය ලබා ගැනීමට  analogRead (pin) function එක යොදාගනු ලබයි. පහත දැක්වෙන්නේ මෙයට අදාල කුඩා වැඩසටහනකි. 
මෙම වැඩසටහනෙන් සිදු වන්නේ ලබා දෙන ඇනලොග් සංඥාව අනුව LED එකක ආලෝකය පාලනය කිරීම වේ.
මෙහි ඇනලොග් සංඥාව ලබා දීමට යොදාගෙන ඇත්තේ වේරියබල් රෙසිස්ටරයක් වේ.ඒ මගින් 0 හා 5 අතර වෙනස් වෝල්ටීයතා මට්ටම් ඇති කර ගත හැක.






int led_pin = 6;
int pot_pin = A0;
int output;
int led_value;
void setup() {

pinMode(led_pin, OUTPUT);
}
void loop() {
output = analogRead(pot_pin);

ඇනලොග් සංඥාව Read කිරීමෙන්  ලැබෙන්නේ 0 හා 1024 අතර අගයක් වේ.එහෙත් ආලෝකය පාලනය කිරීම සදහා PWM output එකට ලබා දිය යුත්තේ 0 හා 255 අතර අගයක් වේ.එමනිසා එම අගයන් Mapping කිරීම සිදුකර ගත යුතුය.පහත දැක්වෙන්නේ එය සිදු කරන ආකාරය වේ.

led_value = map(output, 0, 1023, 0, 255);

  analogWrite(led_pin, led_value);

  delay(1);
}