මීට පෙර arduino UNO බෝර්ඩ් එක භාවිතා කොට ව්යාපෘති ගණනාවක් නිම කළ අතර දැන් අපි ඉලෙක්ට්රොනික සංරචක හා මොඩියුල භාවිතා කරන විදිහ පිළිබඳව විමසා බලමු. මේවායේ විශේෂතා හා භාවිතයන් රැසක් අපට හමුවේ.
Active Buzzer
මුලින්ම Active Buzzer එකක් කියන්නේ මොකද්ද කියලා බලමු.
අවශ්යය උපාංග
උපාංග පිලිබද දැනුම
Transistor
Transistor එකක් කියන්නේ ධාරාව පාලනය කරන අර්ධ සන්නායක උපාංගයකි. Transistor එකක් ධාරා වර්ධකයක් ලෙසත් switch එකක් ලෙසත් භාවිතා කළ හැකි අතර මෙහි base(b), collector(c) සහ emittor(e) ලෙස අග්ර තුනක් පවතී. ‘be’ සන්ධිය හරහා ධාරාවක් ගලන විට ‘ce’ සන්ධිය හරහාද යම් ධාරාවක් ගලයි. මෙම අවස්ථාවේදී transistor එක වර්ධක අවස්ථාවේ පවතී. නමුත් මෙම ‘be’ ධාරාව යම් අගයක් ඉක්මවන විට ‘ce’ සන්ධිය තව දුරටත් ධාරාව වැඩි වීමට ඉඩ නොදේ. මෙවිට transistor එක සංතෘප්ත අවස්ථාවේ පවතී. transistors ආකාර දෙකක් පවතී. එනම් PNP සහ NPN ලෙසයි. ඒවා පහත දැක්වේ.
transistor එකේ ලාක්ෂනිකය අනුව, digital circuit වලදී මෙය switch යක් ලෙස භාවිතයට ගනී. මෙහි ඇති transisitor වල PNP නම් s8550 ලෙසද, NPN නම් s8050 ලෙසද සඳහන් කොට ඇත.
Buzzer
Buzzer එකක් යනු ශබ්ධය නිකුත් කරන උපකරණයකි. මෙය calculators, electronic warning clocks. alarm වගේ ගොඩක් තැන් වලදී භාවිතා වේ. තවද Buzzer වල Active සහ Passive කියල වර්ග දෙකක් තිබේ.
Active buzzer එකට oscillator එකක් ඇතුලත් කර තිබෙන අතර එම නිසා power එකක් ලබා දී තිබෙන තාක් buzzer එක නාද වේ. Passive buzzer එකට බාහිරින් oscillator signal එකක් සැපයිය යුතුයි. මේ සඳහා සාමාන්යයෙන් වෙනස් සංඛ්යාත සහිත PWM signals භාවිතා කරයි.
Active buzzer එක සාමාන්යයෙන් භාවිතය පහසුයි. නමුත් එහි ඇත්තේ එක් විශේෂ වූ සංඛ්යාත පමණයි. නමුත් passive buzzer වලදී බාහිර පරිපථයක් භාවිතා කර වෙනස් සංඛ්යාතයන් භාවිතයෙන් අපට වෙනස් නාදයන් ලබා ගත හැකිය. Active buzzer වල සුදු පැහැති ලේබලයක් අලවා ඇති අතර passive buzzer වල එසේ නොමැත.
Buzzer එකක් නාදයට විශාල ධාරාවක් අවශ්ය අතර UNO බෝර්ඩ් මඟින් සපයන ධාරාව එයට ප්රමාණවත් නැත. එම නිසා transistor එක මඟින් එහි ක්රියාකාරිත්වයට අවශ්ය ශක්තිය සපයන අතර UNO බෝර්ඩ් එකේ පින් එක මඟින් එය පාලනය කිරීම සිදු කරයි.
අපි මෙහිදී NPN transistor එකක් යොදා ගන්නේ නම් පහත ක්රමය භාවිතා කළ යුතුයි. මෙහිදී UNO බෝර්ඩ් එකේ පින් එක high වූ විට R1 ප්රතිරෝධය හරහා ධාරාවක් ගමන් කරනා අතර එවිට Buzzer එක නාද වේ. එය low වූ විට ප්රතිරෝධය හරහා ධාරාවක් නොගලන නිසා එහිදී ධාරාවක් හටනොගනී. එවිට Buzzer එක නිහඬව පවතී.
NPN transistor එකක් වෙනුවට PNP transistor එකක් භාවිතා කරන විට පහත ක්රමය භාවිතා කරයි. මෙහිදී UNO pin එක low වූ විට R1 ප්රතිරෝධය හරහා ධාරාවක් ගමන් කරනා අතර එවිට බසරය නාද වේ. එය high වූ විට ප්රතිරෝධය හරහා ධාරාවක් නොගලන නිසා මෙහිදී ධාරාවක් හටනොගනී. එවිට බසරය නිහඬව පවතී.
පරිපථ සැකැස්ම
මෙහිදී push button එකේ state එක ලබා ගැනීමට D12 පින් එක භාවිත කරන අතර D9 පින් එක බසරය ක්රියාකරවීමට භාවිතා කරයි.
Schematic diagram
Hardware connections
Sketch 8.1
දැන් අපි ඉහත පරිපථයට අදාළව push button එකේ දත්ත ලබා ගැනීමට හා ඒ අනුව බසරය නාද කිරීම සඳහා ප්රෝග්රෑම් එකක් ලිවිය යුතුය. එය පහත පරිදි අපිට නිර්මාණය කර ගත හැකිය.
int buttonPin = 12; // the number of the push button pin int buzzerPin = 9; // the number of the buzzer pin void setup() { pinMode(buttonPin, INPUT); // Set push button pin into input mode pinMode(buzzerPin, OUTPUT); // Set Buzzer pin into output mode } void loop() { if (digitalRead(buttonPin) == HIGH)// If the pin is high level, the button is not pressed. digitalWrite(buzzerPin, LOW); // Turn off Buzzer else // The button is pressed, if the pin is low level digitalWrite(buzzerPin, HIGH); // Turn on Buzzer }
මේ code එකේදී push button එක press කල විට output එක high වී transistor එක හරහා ධාරාවක් ගමන් කොට බසරය ක්රියාත්මක වී නාදයක් ලබා දේ.
verify කර upload කල පසුව push button එක තද කරන වාරයක් පාසා බසරය නාද වීම ඔබට ඇසිය හැකිය.
Passive Buzzer
මෙම පාඩමේදී අපි passive buzzer එකක් විවිධ වෙනස් නාදයන්ගෙන් නාද කරන ආකාරය ඉගෙන ගනිමු.
අවශ්යය උපාංග
පරිපථ සැකැස්ම
මෙහිදී arduino UNO බෝර්ඩ් එකේ D9 පින් එක passive buzzer එක නාද කිරීමට යොදා ගනී.
Schematic diagram
Hardware connection
Sketch 8.1
අපි pssive buzzer එක මඟින් අනතුරු ඇඟවීම් නාදයක් ලබා ගැනීමට ප්රෝග්රෑම් එකක් නිර්මාණය කරගමු. මෙහිදී පහත sin wave එකේ පරිදි සංඛ්යාත අගයක් යොදා ගනිමු.
Output PWM wave එක වෙනස් සංඛ්යාත වලින් පින් එකට ලබා දීමෙන් transistor එක හරා බසරය මගින් විවිධ නාද ලබා ගත හැකිය.
int buzzerPin = 9; // the number of the buzzer pin float sinVal; // Define a variable to save sine value int toneVal; // Define a variable to save sound frequency void setup() { pinMode(buzzerPin, OUTPUT); // Set Buzzer pin to output mode } void loop() { for (int x = 0; x < 360; x++) { // X from 0 degree->360 degree sinVal = sin(x * (PI / 180)); // Calculate the sine of x toneVal = 2000 + sinVal * 500; // Calculate sound frequency according to the sine of x tone(buzzerPin, toneVal); // Output sound frequency to buzzerPin delay(1); } }
ඉහත ප්රෝග්රෑම් එකට අනුව output සංඛ්යාතය 2000±500 පරාසයක පවතී.
for (int x = 0; x < 360; x++) { // X from 0 degree->360 degree sinVal = sin(x * (PI / 180)); // Calculate the sine of x toneVal = 2000 + sinVal * 500; // Calculate sound frequency according to the sine of x tone(buzzerPin, toneVal); // Output sound frequency to buzzerPin delay(1); }
sin() function වල අගයන් ඇත්තේ රේඩියන් අගයන් වලින් වේ. එම නිසා අපිට කෝණයන් රේඩියන් අගයන් වලට පරිවර්තය කර භාවිතා කිරීම කල යුතුය.
verify කර අප්ලෝඩ් කිරීමෙන් පසුව passive බසරය නාද කිරීම මගින් අනතුරු ඇඟවීම පටන් ගන්නා අතර ඔබට PNP transistor එකක් භාවිතා කර මෙම සියලු project නැවත අත්හදා බැලිය හැක.