ඔබන යතුරකින් ආදානය ලබාගැනීම
 
ආඩියුනෝ පරිපථයේ ඔබන අවස්ථා යතුරක් (Momentary Push button)ලබාදෙන ආදානයක භෞතික ගැටළු මත කිහිප වතාවක් එබුන ලෙස වැරදි ආදානයක් ලබාදිය හැක. ඔබන යතුරකින් නිවැරදි ආදානය ලබාගැනීම debounce උපක්‍රමය භාවිතා කරමු. එහිදී millis()ශ්‍රිතය භාවිතා කර යතුර ඔබූ අවස්ථාවේ වේලාව ලබාගැනීම කරමු. millis()ආඩියුනෝව ක්‍රියාත්මක වූ අවස්ථාවේ සිට ගතවූ මිලි තත්පර ගණන ලබාදේ. එයින් අපගේ කේතය කොපමණ වේලා දුවන ලද්දේද යන්න සොයාගත හැක.
මේ සඳහා භාවිතා කරන ඔබන අවස්ථා යතුරේ අග්‍ර 4 ක් ඇත. ඉන් 3 ක් පුවරුවට සවිකෙරේ. රතු 5v අග්‍රයටද, කලු කණුව එනම් කැතෝඩය 10k Ω ප්‍රතිරෝධයක් හරහා බ්ම් අග්‍රයට(GND pin )ද සවි කරන්න. තෙවන වයරය ඩ්ගිටල් 2 අග්‍රයට සවි කරන්න.

ආරම්භයේදී යතුර ඔබා නැති අතර එහි කණු අතර සම්බන්ධයක් නැත. එම නිසා ආදානය LOW වේ. යතුර එබූවිට වෝල්ට් 5 ක ධාරාවකට සම්බන්ධවීමෙන් ආදානය HIGH වේ.
යතුර ඔබන සෑම විටකම ආදානය LOW සහ HIGH අතර මාරු වේ.
එබුම් අතර අවම විරාමය නිසා පරිපථයේ ඇතිවන බාධා (noise)නොසලකා හැරේ. 

// නියත 
const int buttonPin = 2;    // ඔබන අවස්ථා යතුරේ අග්‍රය
const int ledPin = 13;      // LED අග්‍රය

// වෙනස් විය හැකි විචල්‍ය
int ledState = HIGH;         //ප්‍රතිදාන අග්‍රයේ අගය
int buttonState;             // යතුරේ ප්‍රතිදාන අගය
int lastButtonState = LOW;   // අවසාන යතුරු අවස්ථාවේ ප්‍රතිදාන අගය

//කාලය දිග පූර්ණ සංඛ්‍යාවක් ලෙස
// ප්‍රතිදාන අග්‍රය අවසාන වතාවට වෙනස් වූ වේලාව 
unsigned long lastDebounceTime = 0;  
// බාධා ඉවතලන විරමයේ කාලපරාසය - අවශ්‍ය නම් වැඩි කරන්න
unsigned long debounceDelay = 50;    // 

void setup() {
  pinMode(buttonPin, INPUT); // යතුර ආදානයක් ලෙස
  pinMode(ledPin, OUTPUT); //බල්බය ප්‍රතිදානයක් ලෙස

  // set initial LED state
  digitalWrite(ledPin, ledState); // මුල් LED අවස්ථාව ලියන්න
}

void loop() {
  // ඔබන අවස්ථා යතුරේ වත්මන් තත්වය ලබාගන්න
  int reading = digitalRead(buttonPin);

  // භෞතික බාදා නිස යතුර වෙනස් වීද බලන්න
  if (reading != lastButtonState) {
    //  ආපසු නොවන (debounce) කාලගණකය ශූන්‍ය කරන්න
     lastDebounceTime = millis();
  }
  // අවසාන debounce එකට පසු debounce විරාමය ගෙවී ඇතිද?
  if ((millis() - lastDebounceTime) > debounceDelay) {
    // අගය debounce විරාමයට වඩා කාලයක් තිබී ඇත එමනිසා හරි
    // යතුර වෙනස් වී ඇත්ද?
    if (reading != buttonState) {
       buttonState = reading;// අලුත් යතුරු තත්වය
      // යතුර HIGH නම් බල්බය දල්වන්න
      if (buttonState == HIGH) {
         // ඔව් = නැත(ඔව්) ලෙස වෙනස් කිරීමට NOT භාවිතය
         ledState = !ledState;   //! සලකුණ NOT වේ 
      }
    }
  }

  // ledState අනුව LED බල්බය සකසන්න:
  digitalWrite(ledPin, ledState);
  //ඊ ලඟ වටය සඳහා ආදානය lastButtonState හි සේවා කරගන්න
  lastButtonState = reading;
}

(c) Shilpa Sayura Foundation 2006-2017