Arduino Uno ile Geri Sayım Sayacı

Bu projede geri sayım yapılacak süre kullanıcı tarafından tuş takımı ile girilerek 16×2 LCD yardımıyla görüntülenir. Zamanlayıcı sıfır değerine ulaştığında, Buzzer yardımı ile ikaz sesi üretilir. Malzeme Listesi: Orjinal Arduino UNO R3 Aliexpress Linki 16*2 LCD Aliexpress Linki 4*4 tuş takımı Aliexpress Linki Buzzer (10 adet fiyatı) Aliexpress Linki Push Button (10 adet fiyatı) Aliexpress Linki 10K Potansiyometre (5 adet fiyatı) Aliexpress Linki 10K direnç 100 ohm direnç Bağlantı için jumper kablolar Devre şeması: Geri sayım yapılacak süre tuş takımından girilir ve 16*2 LCD de görüntülenir. Push button geri sayımı başlatmak için kullanılır. Arduino ile 4×4 Tuş Takımı ve 16×2 LCD’yi nasıl bağlayacağınızı yukarıdaki devre şemasından görebilirsiniz. Program Kodu ve açıklamalar:   [sourcecode language=”plain”] #include <LiquidCrystal.h> #include <Keypad.h> const byte ROWS = 4; // Four rows const byte COLS = 4; // Three columns long int set1; long int set2; long int set3; long int set4; long int j; String hours; String minutes; String seconds; // Define the Keymap char keys[ROWS][COLS] = { {‘1′,’2′,’3′,’A’}, {‘4′,’5′,’6′,’B’}, {‘7′,’8′,’9′,’C’}, {‘*’,’0′,’#’,’D’} }; byte rowPins[ROWS] = { 6, 7, 8, 9 };// Connect keypad ROW0, ROW1, ROW2 and ROW3 to these Arduino pins byte colPins[COLS] = { 10, 11, 12, 13 };// Connect keypad COL0, COL1 and COL2 to t Keypad kpd = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS ); LiquidCrystal lcd(A0, A1, 5, 4, 3, 2); // Creates an LC object. Parameters: (rs, enable, d4, d5, d6, d7) int t1, t2, t3, t4, t5, t6; int r1, r2, r3; boolean feed = true; // condition for alarm char key; String r[8]; void setFeedingTime() { feed = true; int i=0; lcd.clear(); lcd.setCursor(0,0); lcd.print("Set feeding Time"); lcd.clear(); lcd.print("HH:MM:SS"); lcd.setCursor(0,1); while(1){ key = kpd.getKey(); char j; if(key!=NO_KEY){ lcd.setCursor(j,1); lcd.print(key); r[i] = key-48; i++; j++; if (j==2 || j == 5) { lcd.print(":"); j++; } delay(500); } if (key == ‘D’) {key=0; break; } } lcd.clear(); } void setup() { lcd.begin(16,2); Serial.begin(9600); pinMode(A0, OUTPUT); pinMode(A1, OUTPUT); pinMode(A3, INPUT); pinMode(A4, OUTPUT); } void loop() { lcd.setCursor(0,0); lcd.print("Arduino Timer"); //Serial.println(A3); if (digitalRead(A3)==1) // { lcd.clear(); setFeedingTime(); for(int i = 0; i < 6; i++)  // this for loop is used to get the value of the feeding time and print it serially { Serial.print(r[i]); Serial.println(); } hours = String (r[0]) + String (r[1]) ; //combining two separate int values of r[0] and r[1] into one string and save it to "hours" minutes = String (r[2]) + String (r[3]) ;  //combining two separate int values of r[2] and r[3] into one string and save it to "minutes" seconds = String (r[4]) + String (r[5]) ;  //combining two separate int values of r[4] and r[5] into one string and save it to "seconds" set1 = (hours.toInt()*3600); //converting hours into seconds set2 = (minutes.toInt() * 60);  //converting minutes into seconds set3 = seconds.toInt(); set4 = (hours.toInt() * 3600)+ (minutes.toInt() * 60) + seconds.toInt(); //adding set1, set2 and set3 together in set4 Serial.print("set4"); Serial.print(set4); Serial.println(); lcd.setCursor(0,0); lcd.print("Countdown begins"); delay(1000); lcd.clear(); for(long int j = set4; j >= 0; j–) // this for loopis used to decrease the total time in seconds { Serial.println(j); lcd.setCursor(0,0); lcd.print("HH:MM:SS"); long int HH = j / 3600; // converting the remaining time into remaining hours lcd.setCursor(0,1); Serial.println(HH); if (HH < 10) { lcd.print(‘0’);  } lcd.print(HH); lcd.print(":"); long int MM = (j – (HH*3600))/60 ; //converting the remaining time into remaining minutes lcd.setCursor(3,1); Serial.println(MM); if (MM < 10) { lcd.print(‘0’);  } lcd.print(MM); lcd.print(":"); long int SS = j – ((HH*3600)+(MM*60)); //converting the remaining time into remaining seconds lcd.setCursor(6,1); Serial.println(SS); if (SS < 10) { lcd.print(‘0’);  } lcd.print(SS); delay(1000); if (digitalRead(A3)==1){break;} if (j == 0) { lcd.clear(); lcd.setCursor(0,0); lcd.print("Timer Stop"); lcd.setCursor(2,1); lcd.print("-Ring-Ring-"); for(int k =0; k<= 100; k++) //this for loop is used for the buzzer to beep 100 time as the timer reaches zero { digitalWrite(A4,HIGH); delay(300); digitalWrite(A4,LOW); delay(300); if (digitalRead(A3)==1){break;} } } } } } [/sourcecode]  ]]>

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir