ارڈینوو خودکار اسکول / کالج بیل سسٹم

مسائل کو ختم کرنے کے لئے ہمارے آلے کو آزمائیں





اس پوسٹ میں ہم آرڈینو ، 16 ایکس 2 ڈسپلے اور ریئل ٹائم کلاک ماڈیول کا استعمال کرتے ہوئے ایک خودکار اسکول بیل / کالج بیل نظام تیار کرنے جارہے ہیں۔ آپ اس منصوبے کو دن میں 16 دفعہ اپنے من پسند گھنٹہ اور منٹ پر گھنٹی بجانے کے لئے پروگرام کرسکتے ہیں۔ گھنٹی کی گھنٹی کی لمبائی سیکنڈوں میں تیار کی جاسکتی ہے۔

بغیر کوڈنگ کے ایک آسان ورژن کی تلاش ہے؟ اسے لو یہاں



جائزہ

وہ دن گزر گئے جب اسکول میں ایک چپراسی کی گھنٹی “ٹن ٹن ٹن” بجتی تھی اور طلباء اڑتے رنگوں سے اسکول کے داخلی دروازے سے بھاگتے تھے۔ کچھ منٹ پہلے بھی جب چپراسی نے آخری گھنٹی بجی تو کچھ اور خوش ہوسکتے ہیں۔

15 سے 20 سال پہلے کا یہ منظر تھا ، لیکن اب تمام اسکولوں اور کالجوں کا سختی سے وقت گزرتا ہے اور گھنٹیاں خودکار ہوجاتی ہیں۔



مصنف کا تیز بچپن / نو عمر نو عمر یاد رکھیں:

میرے پرائمری اور سیکنڈری اسکول کے دوران ڈیجیٹل گھڑی جو میں نے پہنی تھی اسے 1 سیکنڈ کے صحت سے متعلق اسکول کے بیل سسٹم کے ساتھ ہم آہنگ کیا گیا تھا۔

جب میں گھنٹی بجنے کے بعد ، تمام طلباء حیرت سے مجھ پر گھورتے ہیں ، تو یہ ہر دن ہوتا ہے۔ کسی دن میں اور میرے قریبی دوست 10 ، 9، 8، 7… گنتی شروع کردیں… آخری گھنٹی سے پہلے۔

میرے سارے دوست کہتے ہیں کہ یہ جادوئی کلائی کی گھڑی ہے ، لیکن انہیں ایک عام سی حقیقت کا ادراک نہیں ہوا کہ اسکول کی گھنٹی خودکار تھی۔ LOL!!

ہم اردوینو کا استعمال کرتے ہوئے ایسی ہی ایک اسکول / کالج کی گھنٹی بنانے جا رہے ہیں۔

ارڈینوو کنکشن پر ڈسپلے کریں

ارڈینو کنیکشن کا ڈسپلے کچھ عام ہے جس سے ہم عام طور پر ان کو تار کرتے ہیں ، یہاں استعمال ہونے والے پنوں 9 ، 8 ، 7 ، 6 ، 5 اور 4 سے کچھ مختلف ہے۔ پن نمبر 2 اور 3 ہارڈویئر کی مداخلت کے بطور استعمال ہوتے ہیں بٹن دبائیں .

10K استعمال کریں پوٹینومیٹر کے لئے اس کے برعکس کو ایڈجسٹ کرنے کے لئے ڈسپلے .

اردوینو اسکول کی گھنٹی LCD

ارڈینو کا استعمال کرتے ہوئے خودکار اسکول / کالج بیل سسٹم

بیل اور ریلے رابطوں سے متعلق تفصیلی معلومات:

Ardino کے ساتھ اسکول کی گھنٹی ٹائمر سرکٹ

اپ ڈیٹ: S5 سے A5 اور A4 سے SDA (A4 to SCK نہیں)

ریئل ٹائم کلاک ماڈیول

اصل وقت کی گھڑی ماڈیول طویل بجلی کی کٹ کے بعد بھی وقت کا ٹریک رکھتا ہے۔ گھنٹی سوئچ کرنے اور بند کرنے کے لئے ایک 9V ریلے فراہم کیا جاتا ہے۔

براہ کرم 1N4007 ڈایڈڈ کو ریلے کے اس پار ریورس تعصب میں جوڑیں (جو اسکیمیٹ میں نہیں دکھایا گیا ہے) جو ریلے سے EMF کو نقصان دہ ہائی ولٹیج کو جذب کرے گا۔

سرکٹ کا استعمال کرتے ہوئے a 9V / 500mA وال اڈاپٹر .

کسی بھی صورتحال کے دوران گھنٹی کو دستی طور پر چلانے کے لئے تین پش بٹن فراہم کیے جاتے ہیں۔ 'باہر نکلیں' کے بٹن کو دبانے سے گھنٹی دستی طور پر بجنے کے بعد گھنٹی رک جائے گی۔

'گھنٹی غیر فعال بٹن' ہمیشہ کے لئے گھنٹی کو غیر فعال کردے گا۔ گھنٹی کو دوبارہ فعال کرنے کیلئے 'باہر نکلیں' کے بٹن کو دبائیں۔

آر ٹی سی ماڈیول کو وقت مقرر کرنے کا طریقہ:

آر ٹی سی لائبریری ڈاؤن لوڈ کریں:
لنک: github.com/PaulStoffregen/DS1307RTC

-------------------------------------------------- ---------------
ڈاؤن لوڈ ٹائم لیب۔
github.com/PaulStoffregen/Time
-------------------------------------------------- ----------------

پروگرام اپ لوڈ کریں

ذیل میں پروگرام اپلوڈ کریں جو RTC پر وقت طے کرے گا

//----------------------------------------------------//
#include
#include
#include
int P=A3 //Assign power pins for RTC
int N=A2
const char *monthName[12] = {
'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',
'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'
}
tmElements_t tm
void setup() {
pinMode(P,OUTPUT)
pinMode(N,OUTPUT)
digitalWrite(P,HIGH)
digitalWrite(N,LOW)
bool parse=false
bool config=false
// get the date and time the compiler was run
if (getDate(__DATE__) && getTime(__TIME__)) {
parse = true
// and configure the RTC with this info
if (RTC.write(tm)) {
config = true
}
}
Serial.begin(9600)
while (!Serial) // wait for Arduino Serial Monitor
delay(200)
if (parse && config) {
Serial.print('DS1307 configured Time=')
Serial.print(__TIME__)
Serial.print(', Date=')
Serial.println(__DATE__)
} else if (parse) {
Serial.println('DS1307 Communication Error :-{')
Serial.println('Please check your circuitry')
} else {
Serial.print('Could not parse info from the compiler, Time='')
Serial.print(__TIME__)
Serial.print('', Date='')
Serial.print(__DATE__)
Serial.println(''')
}
}
void loop() {
}
bool getTime(const char *str)
{
int Hour, Min, Sec
if (sscanf(str, '%d:%d:%d', &Hour, &Min, &Sec) != 3) return false
tm.Hour = Hour
tm.Minute = Min
tm.Second = Sec
return true
}
bool getDate(const char *str)
{
char Month[12]
int Day, Year
uint8_t monthIndex
if (sscanf(str, '%s %d %d', Month, &Day, &Year) != 3) return false
for (monthIndex = 0 monthIndex <12 monthIndex++) {
if (strcmp(Month, monthName[monthIndex]) == 0) break
}
if (monthIndex >= 12) return false
tm.Day = Day
tm.Month = monthIndex + 1
tm.Year = CalendarYrToTm(Year)
return true
}
//----------------------------------------------------//

کوڈ اپ لوڈ کرنے کے بعد ، سیریل مانیٹر کھولیں ، یہ کہیں گے کہ وقت مقرر ہے۔
ایک بار جب مندرجہ بالا مرحلہ کامیابی کے ساتھ مکمل ہوجاتا ہے تو آگے بڑھیں۔
اب ذیل کوڈ کو ارڈینو میں اپ لوڈ کریں۔

مین پروگرام کوڈ:

//------------Program developed by R.GIRISH------------//
#include
#include
#include
#include
#include
LiquidCrystal lcd(9, 8, 7, 6, 5, 4)
int i = 0
int H = 0
int M = 0
int S = 0
int setting_value
const int bell = 10
const int P = A3
const int N = A2
const int setting_address = 0
const int over_ride_off = 11
boolean bell_status = true
boolean Over_ride = true
//------------------- Set Bell Timings from hours 1 to 23 hrs -------------------//
//---- 1st bell ------//
const int h1 = 0 //hours
const int m1 = 0 //Minutes
//---- 2nd bell ------//
const int h2 = 0
const int m2 = 0
//---- 3rd bell ------//
const int h3 = 0
const int m3 = 0
//---- 4th bell ------//
const int h4 = 0
const int m4 = 0
//---- 5th bell ------//
const int h5 = 0
const int m5 = 0
//---- 6th bell ------//
const int h6 = 0
const int m6 = 0
//---- 7th bell ------//
const int h7 = 0
const int m7 = 0
//---- 8th bell ------//
const int h8 = 0
const int m8 = 0
//---- 9th bell ------//
const int h9 = 0
const int m9 = 0
//---- 10th bell ------//
const int h10 = 0
const int m10 = 0
//---- 11th bell ------//
const int h11 = 0
const int m11 = 0
//---- 12th bell ------//
const int h12 = 0
const int m12 = 0
//---- 13th bell ------//
const int h13 = 0
const int m13 = 0
//---- 14th bell ------//
const int h14 = 0
const int m14 = 0
//---- 15th bell ------//
const int h15 = 0
const int m15 = 0
//---- 16th bell ------//
const int h16 = 0
const int m16 = 0
//--------------- bell ring lenght in seconds -------//
const int Lenght = 3 //in seconds
//-------------------------- -------------------------//
void setup()
{
lcd.begin(16, 2)
pinMode(P, OUTPUT)
pinMode(N, OUTPUT)
pinMode(bell, OUTPUT)
pinMode(over_ride_off, INPUT)
digitalWrite(P, HIGH)
digitalWrite(N, LOW)
digitalWrite(over_ride_off, HIGH)
attachInterrupt(0, over_ride, RISING)
attachInterrupt(1, bell_setting, RISING)
if (EEPROM.read(setting_address) != 1)
{
bell_setting()
}
}
void loop()
{
tmElements_t tm
lcd.clear()
if (RTC.read(tm))
{
H = tm.Hour
M = tm.Minute
S = tm.Second
lcd.setCursor(0, 0)
lcd.print('TIME:')
lcd.print(tm.Hour)
lcd.print(':')
lcd.print(tm.Minute)
lcd.print(':')
lcd.print(tm.Second)
lcd.setCursor(0, 1)
lcd.print('DATE:')
lcd.print(tm.Day)
lcd.print('/')
lcd.print(tm.Month)
lcd.print('/')
lcd.print(tmYearToCalendar(tm.Year))
} else {
if (RTC.chipPresent())
{
lcd.setCursor(0, 0)
lcd.print('RTC stopped!!!')
lcd.setCursor(0, 1)
lcd.print('Run SetTime code')
} else {
lcd.clear()
lcd.setCursor(0, 0)
lcd.print('Read error!')
lcd.setCursor(0, 1)
lcd.print('Check circuitry!')
}
}
if (EEPROM.read(setting_address) == 1)
{
if (H == 0 && M == 0 && S == 0)
{
digitalWrite(bell, LOW)
}
if (H == h1 && M == m1 && S == 0)
{
for (i = 0 i {
digitalWrite(bell, HIGH)
delay(1000)
}
digitalWrite(bell, LOW)
i = 0
}
if (H == h2 && M == m2 && S == 0)
{
for (i = 0 i {
digitalWrite(bell, HIGH)
delay(1000)
}
digitalWrite(bell, LOW)
i = 0
}
if (H == h3 && M == m3 && S == 0)
{
for (i = 0 i {
digitalWrite(bell, HIGH)
delay(1000)
}
digitalWrite(bell, LOW)
i = 0
}
if (H == h4 && M == m4 && S == 0)
{
for (i = 0 i {
digitalWrite(bell, HIGH)
delay(1000)
}
digitalWrite(bell, LOW)
i = 0
}
if (H == h5 && M == m5 && S == 0)
{
for (i = 0 i {
digitalWrite(bell, HIGH)
delay(1000)
}
digitalWrite(bell, LOW)
i = 0
}
if (H == h6 && M == m6 && S == 0)
{
for (i = 0 i {
digitalWrite(bell, HIGH)
delay(1000)
}
digitalWrite(bell, LOW)
i = 0
}
if (H == h7 && M == m7 && S == 0)
{
for (i = 0 i {
digitalWrite(bell, HIGH)
delay(1000)
}
digitalWrite(bell, LOW)
i = 0
}
if (H == h8 && M == m8 && S == 0)
{
for (i = 0 i {
digitalWrite(bell, HIGH)
delay(1000)
}
digitalWrite(bell, LOW)
i = 0
}
if (H == h9 && M == m9 && S == 0)
{
for (i = 0 i {
digitalWrite(bell, HIGH)
delay(1000)
}
digitalWrite(bell, LOW)
i = 0
}
if (H == h10 && M == m10 && S == 0)
{
for (i = 0 i {
digitalWrite(bell, HIGH)
delay(1000)
}
digitalWrite(bell, LOW)
i = 0
}
if (H == h11 && M == m11 && S == 0)
{
for (i = 0 i {
digitalWrite(bell, HIGH)
delay(1000)
}
digitalWrite(bell, LOW)
i = 0
}
if (H == h12 && M == m12 && S == 0)
{
for (i = 0 i {
digitalWrite(bell, HIGH)
delay(1000)
}
digitalWrite(bell, LOW)
i = 0
}
if (H == h13 && M == m13 && S == 0)
{
for (i = 0 i {
digitalWrite(bell, HIGH)
delay(1000)
}
digitalWrite(bell, LOW)
i = 0
}
if (H == h14 && M == m14 && S == 0)
{
for (i = 0 i {
digitalWrite(bell, HIGH)
delay(1000)
}
digitalWrite(bell, LOW)
i = 0
}
if (H == h15 && M == m15 && S == 0)
{
for (i = 0 i {
digitalWrite(bell, HIGH)
delay(1000)
}
digitalWrite(bell, LOW)
i = 0
}
if (H == h16 && M == m16 && S == 0)
{
for (i = 0 i {
digitalWrite(bell, HIGH)
delay(1000)
}
digitalWrite(bell, LOW)
i = 0
}
}
delay(1000)
}
void over_ride()
{
lcd.clear()
while (Over_ride)
{
digitalWrite(bell, HIGH)
lcd.setCursor(0, 0)
lcd.print('Press Exit to')
lcd.setCursor(0, 1)
lcd.print('Stop the bell!!!')
if (digitalRead(over_ride_off) == LOW)
{
Over_ride = false
digitalWrite(bell, LOW)
}
}
Over_ride = true
}
void bell_setting()
{
setting_value = 0
EEPROM.write(setting_address, setting_value)
lcd.clear()
while (bell_status)
{
lcd.setCursor(0, 0)
lcd.print('Bell is Disabled')
lcd.setCursor(0, 1)
lcd.print('Press Exit.')
if (digitalRead(over_ride_off) == LOW)
{
bell_status = false
}
}
bell_status = true
setting_value = 1
EEPROM.write(setting_address, setting_value)
}
//------------Program developed by R.GIRISH------------//

مندرجہ بالا کوڈ اپ لوڈ کرنے کے بعد آپ کو ڈسپلے کے اوقات میں کچھ وقت دیکھنا چاہئے۔

یہ پروگرام کے کوڈ کو ختم کرتا ہے۔

اس خودکار گھنٹی کے نظام کا استعمال کیسے کریں:

مکمل ہارڈویئر سیٹ اپ کے ساتھ ایسا کریں۔

1. پہلے 'ٹائم سیٹنگ' کوڈ اپ لوڈ کریں اور سیریل مانیٹر کھولیں۔
2. مرکزی پروگرام میں وہ وقت طے کریں جس وقت یہاں ریلے کو متحرک کرنے کی ضرورت ہے۔

//---- 1st bell ------//
const int h1 = 0 //hours
const int m1 = 0 //Minutes
//---- 2nd bell ------//
const int h2 = 0
const int m2 = 0
//---- 3rd bell ------//
const int h3 = 0
const int m3 = 0
//---- 4th bell ------//
const int h4 = 0
const int m4 = 0

h 1 سے 23 گھنٹے اور ایم 1 کو 0 سے 59 تک منٹ میں H1 مرتب کریں۔
h ایک ہی H1 سے H16 اور m1 سے M16 تک۔
you اگر آپ بیل بیل کی قدر h = 0 اور m = 0 کو غیر فعال کرنا چاہتے ہیں مثال کے طور پر: h5 = 0 اور m5 = 0 ، صفر اس مخصوص گھنٹی کو غیر فعال کردے گا۔

here. گھنٹی کی گھنٹی چلنے اور بند ہونے کی مدت کے لئے یہاں مقرر کریں ،

// --------------- گھنٹوں کی گھنٹی لمبائی سیکنڈ میں ------- //
const لمبائی = 3 // سیکنڈ میں

پہلے سے طے شدہ قیمت 3 سیکنڈ کے لئے مقرر کی جاتی ہے۔ جب مقررہ وقت آ جاتا ہے ریلے 3 سیکنڈ کے لئے آن کیا جائے گا اور آف ہوجائے گا۔ اگر آپ کو ضرورت ہو تو اسے تبدیل کریں۔

4. ترمیم شدہ کوڈ کو ارڈینو میں اپ لوڈ کریں۔
5. گھنٹی کو دبانے کے لئے 'گھنٹی غیر فعال بٹن' کو دبائیں۔ دوبارہ چالو کرنے کے لئے 'باہر نکلیں' کے بٹن کو دبائیں۔
6. گھنٹی بجنے کے ل man ، دستی طور پر 'دستی بیل سوئچ' دبائیں اور گھنٹی کو دبانے کے لئے 'باہر نکلیں'۔

اس منصوبے کا اختتام ہوتا ہے ، اگر آپ کو اس پروجیکٹ کے بارے میں کوئی سوالات ہیں تو بلا جھجک تبصرہ سیکشن میں اظہار خیال کریں۔




پچھلا: اس مچھر بیٹ کو بیٹری کے بغیر بنائیں اگلا: آریفآئڈی پر مبنی حاضری کا نظام کیسے بنایا جائے