ආඩියුනෝ පරිපථයේ ඔබන අවස්ථා යතුරක් (Momentary Push button)එබූ වාර ගණන ලබාගැනීම කරමු.
ඔබන අවස්ථා යතුරේ රතු කණුව 5v අග්රයටද, කලු කණුව 10k Ω ප්රතිරෝධයක් හරහා බ්ම් අග්රයට(GND pin )ද සවි කරන්න. තෙවන කණුව ඩ්ගිටල් 2 අග්රයට සවි කරන්න.
ආරම්භයේදී යතුර ඔබා නැති අතර එහි කණු අතර සම්බන්ධයක් නැත. එම නිසා ආදානය LOW වේ. යතුර එබූවිට වෝල්ට් 5 ක ධාරාවකට සම්බන්ධවීමෙන් ආදානය HIGH වේ.
යතුර ඔබන සෑම විටකම ආදානය LOW සහ HIGH අතර මාරු වේ.
ඒවා ගණන් කිරීමෙන් වාර ගණන ලබාගනී.
// නියත
const int buttonPin = 2; // ඔබන අවස්ථා යතුරේ අග්රය
const int ledPin = 13; // LED අග්රය
// වෙනස් විය හැකි විචල්ය
int buttonPushCounter = 0; // එබූ වාර ගණන
int buttonState = 0; // යතුරේ තත්වය
int lastButtonState = LOW; // කලින් අවස්ථාවේ ප්රතිදාන අගය
void setup() {
pinMode(buttonPin, INPUT); // යතුර ආදානයක් ලෙස
pinMode(ledPin, OUTPUT); //බල්බය ප්රතිදානයක් ලෙස
Serial.begin(9600); // රේඛීය සන්නිවේදන ආරමිභය
}
void loop() {
// යතුරේ ආදානය ලබාගන්න
buttonState = digitalRead(buttonPin);
// කලින් අවස්ථාවේ තත්වයට අසමාන නම්
if (buttonState != lastButtonState) {
// යතුරේ ආදානය වෙනස් වී ඇතිනම්
if (buttonState == HIGH) {
// වත්මන් තත්වය HIGH නම්
// එබූ වාරගණනට එකක් එකතු කරන්න
buttonPushCounter++;
Serial.println("on"); // රේඛීය මුද්රණය
Serial.print("number of button pushes: ");
Serial.println(buttonPushCounter); //එබූ වාර ගණන
} else {
// වත්මන් තත්වය LOW නම්
Serial.println("off");
}
// ආපසු ඒම (bouncing) නොසලකා හැරීමට විරාමය
delay(50);
}
// ඊ ලඟ වටය සඳහා වත්මන් තත්වය අවසාන අවස්ථාව ලෙස සේවා කරන්න
lastButtonState = buttonState;
//සෑම එබුම් හතරකටම බල්බය දැල්වේ
// modulo ශ්රතය (%) බෙදීමක ඉතිරිය (remainder) ලබා දේ
if (buttonPushCounter % 4 == 0) {
digitalWrite(ledPin, HIGH); //බල්බය දල්වන්න
} else {
digitalWrite(ledPin, LOW); // බල්බය නිවන්න
}
}
ශිල්ප 64