ዝርዝር ሁኔታ:

የአርዱዲኖ የማንቂያ ሰዓት ፕሮጀክት 14 ደረጃዎች
የአርዱዲኖ የማንቂያ ሰዓት ፕሮጀክት 14 ደረጃዎች

ቪዲዮ: የአርዱዲኖ የማንቂያ ሰዓት ፕሮጀክት 14 ደረጃዎች

ቪዲዮ: የአርዱዲኖ የማንቂያ ሰዓት ፕሮጀክት 14 ደረጃዎች
ቪዲዮ: Arduino በከፊል ሲብራራ https://t.me/arduinoshopping 2024, ህዳር
Anonim
የአርዲኖ የማንቂያ ሰዓት ፕሮጀክት
የአርዲኖ የማንቂያ ሰዓት ፕሮጀክት

በዚህ ፕሮጀክት ውስጥ የማንቂያ ደወል የተቀመጠበትን የአሁኑን ሰዓት እና ሰዓት ለማሳየት የኤልዲሲ ማያ ገጽን ለመቆጣጠር አርዱዲኖ ኡኖን እንጠቀማለን። እያንዳንዱን ጊዜ ለማዘጋጀት አዝራሮችን እንጠቀማለን።

ቁሳቁሶች

  • አርዱዲኖ ኡኖ -
  • የዳቦ ሰሌዳ -
  • የጁምፐር ሽቦዎች (x13+) -
  • 10 kohm resistors (x4) -
  • ኤልሲዲ ማያ ገጽ -
  • 7 አዝራሮች-https://vilros.com/collections/raspberry-pi-acces…
  • ፒዬዞ ተናጋሪ -

ደረጃ 1: የማቆሚያ መመሪያዎች

የ hookup መመሪያዎች
የ hookup መመሪያዎች

1. በአርዱዲኖ ላይ ካለው 5 ቮ ፒን የመዝለያ ሽቦን በዳቦ ሰሌዳው ላይ ካሉት + ሐዲዶች አንዱን ያገናኙ።

ደረጃ 2

ምስል
ምስል

2. በአርዱዲኖ ላይ ካለው የ GND ፒን የመዝለያ ሽቦን ወደ - በዳቦ ሰሌዳው ላይ ከመረጡት + የባቡር ሐዲድ ጋር ያገናኙ።

ደረጃ 3

ምስል
ምስል

3. ኤልሲዲ ማያውን ከኃይል ፣ ከመሬት እና ከ TX ፒን (ፒን 1) ጋር ያገናኙ።

ደረጃ 4

ምስል
ምስል

4. በዳቦ ሰሌዳው ላይ ባለው ክፍተት በኩል እግሮቹ ላይ 7 አዝራሮችን በዳቦ ሰሌዳው ላይ ያስቀምጡ።

ደረጃ 5

ምስል
ምስል

5. 10 kohm resistors ን ከ - የ GND ፒን ጋር በማገናኘት ከአዝራሮቹ ታችኛው ግራ ካስማዎች ያስቀምጡ።

ደረጃ 6

ምስል
ምስል

6. በአዝራሮቹ ታችኛው ቀኝ ጥግ እና በ 5 ቪ ባቡር መካከል የዳቦ ሰሌዳዎን ላይ የጃምፐር ሽቦዎችን ያስቀምጡ።

ደረጃ 7

ምስል
ምስል

7. የዝላይ ሽቦዎችን በፒን 6 ፣ ከዚያ 8-13 ፣ እና ተከላካዩ በተገናኘበት ቁልፍ ላይ ያለውን ፒን ያስቀምጡ።

ደረጃ 8

ምስል
ምስል

8. በመቀጠልም የፒዮዞ ድምጽ ማጉያዎን በዳቦ ሰሌዳው ላይ ያስቀምጡ እና ፒን 7 ን ከኃይል ፒን ጋር ያገናኙ ፣ ከዚያ 100 ohm resistor ን መሬት ላይ ያገናኙ።

ደረጃ 9 የፕሮግራም መመሪያዎች

1. አጠቃላይ እይታ - ይህ ፕሮጀክት ተጠቃሚው የአሁኑን ሰዓት በማሳያው ላይ በመነሻ ኃይል ላይ የአሁኑን ሰዓት እና ማንቂያው የሚዘጋጅበትን ሰዓት እንዲያዘጋጅ ይጠይቃል። ከላይ የተገናኙት አዝራሮች እያንዳንዱን ጊዜ ለማዘጋጀት ጥቅም ላይ ይውላሉ። ከግራ ወደ ቀኝ የአሁኑ ሰዓት ተዘጋጅተዋል ፣ የአሁኑን ሰዓት ያዘጋጁ ፣ የአሁኑን AM ወይም PM ያዘጋጁ ፣ የማንቂያ ሰዓት ያዘጋጁ ፣ የማንቂያ ደቂቃን ያዘጋጁ ፣ ማንቂያ AM ወይም PM ን ያዋቅሩ። የመጨረሻው አዝራር ማንቂያውን ሲጮህ ዝም ለማለት ያገለግላል።

ደረጃ 10

2. መጀመሪያ ማድረግ ያለብን የምንጠቀመውን የእኛን ተለዋዋጭ ማስጀመር ነው።

// ተለዋዋጮችን በአንድ ሰዓት = 0 እንዲጠቀሙ ያስጀምሩ። // ሰዓት ለአሁኑ ሰዓት int ደቂቃ = 0; //

ለአሁኑ ሰዓት int ሰከንድ = 0; // ለአሁኑ ጊዜ ሁለተኛ

int hour_a = 0; int // ለማንቂያ ጊዜ ሰዓት

ደቂቃ_አ = 0; // ለማንቂያ ጊዜ ደቂቃ

bool am_pm = ሐሰት; // AM/PM ሰንደቅ ዓላማ ይቀያይሩ። ውሸት AM ፣ እውነት ጠቅላይ ሚኒስትር ነው

bool am_pm_a = ሐሰት; // AM/PM ለማንቂያ ደውል ባንዲራ ይቀይሩ። ውሸት AM ፣ እውነት ጠቅላይ ሚኒስትር ነው

int set_hr = 13; // ሰዓት ለማዘጋጀት ፒን 13 ን ይጠቀሙ

int set_min = 12; // ደቂቃን ለማዘጋጀት ፒን 12 ን ይጠቀሙ

set_am_pm = 11; // ጥዋት/ሰዓት ለማዘጋጀት ፒን 11 ን ይጠቀሙ

int set_hr_a = 10; // ለማንቂያ ሰዓት ሰዓት ለማዘጋጀት ፒን 10 ን ይጠቀሙ set_min_a = 9; // ለደወል int set_am_pm_a = 8 ደቂቃን ለማዘጋጀት ፒን 9 ን ይጠቀሙ። // ለማንቂያ/ጥዋት ጥዋት ጥዋት/ፒን 8 ን ይጠቀሙ

int ተናጋሪ = 7; // ለንግግር ህትመት ጸጥታ = 6 ን ለመጠቀም ፒን; // ተናጋሪውን ለማቆም ይሰኩ

bool ማንቂያ = ሐሰት; / አስደንጋጭ ሆኖ ለመቀየር ለመቀየር ይጠቁሙ

bool ጸጥታ = ሐሰት; // ጸጥታን የሚያሳይ ሰንደቅ አልተጫነም

int cur_time = 0; // ለአሁኑ ጊዜ ተለዋዋጭ

int etime = 0; // ያለፈው ጊዜ ተለዋዋጭ

ደረጃ 11

3. በመቀጠል የኤልሲዲ ማያ ገጹን ማዘጋጀት እና ለተጠቃሚው የአሁኑን ሰዓት እንዲያዘጋጅ መንገር አለብን። ይህ አንድ ጊዜ ብቻ መደረግ ስላለበት ፣ በማዋቀሪያ አሠራሩ ውስጥ እናደርገዋለን።

ባዶነት ማዋቀር () {

// የ LCD ማያ ገጽ ያዘጋጁ

Serial.begin (9600); // ተከታታይን በ 9600 ባውድ ያስጀምሩ

Serial.write (17); // የጀርባውን ብርሃን ያብሩ

Serial.write (24); // ጠቋሚው እና ብልጭ ድርግም ባለበት ማሳያውን ያብሩ

Serial.write (12); // ማያ ገጹን ያፅዱ

Serial.write (128); // ጠቋሚውን ወደ ላይኛው ግራ ጥግ ያንቀሳቅሱ // የፒን ሞዶች ፒን ሞዶን ያዘጋጁ (set_hr ፣

ግብዓት); pinMode (set_min ፣ INPUT);

pinMode (set_am_pm ፣ INPUT);

pinMode (set_hr_a ፣ INPUT);

pinMode (set_min_a ፣ INPUT);

pinMode (set_am_pm_a ፣ INPUT);

pinMode (ድምጽ ማጉያ ፣ መውጫ);

pinMode (ጸጥ ያለ ፣ ግቤት);

// በመነሻ ኃይል ላይ ተጠቃሚው የአሁኑን ሰዓት እንዲያዘጋጅ ያድርጉ። Serial.print ("የአሁኑን ሰዓት ያዘጋጁ"); መዘግየት (2000);

Serial.write (12);

printTimes ();

cur_time = ሚሊስ (); // የአሁኑን ጊዜ ያከማቹ}

ደረጃ 12

4. ከዚያ ፣ በሉፕ አሠራሩ ውስጥ ፣ እኛ ጊዜውን እንከታተላለን እና ተጠቃሚው የትኛውንም ጊዜ እያዋቀረ መሆኑን ለማየት የአዝራሩን ሁኔታ እናነባለን።

ባዶነት loop () {

// ጊዜን ይቆጥቡ

keepTime ();

// የማንቂያ ደወል ጊዜው ከሆነ ለማየት ይፈትሹ!

ከሆነ ((ሰዓት == hour_a && ደቂቃ == ደቂቃ_አ &&!! ጸጥ ያለ) || ማንቂያ) {ቶን (ተናጋሪ ፣ 2000 ፣ 500); // የ 2000 Hz ድምጽ ለድምጽ ማጉያው ለ 500 ሚ.ሜ ያውጡ

መዘግየት (500); // (! ማንቂያ) ከሆነ {/ 500 ማንቂያ/ መዘግየት {// ማንቂያ ከጠፋ ያብሩት

}

}

// ተጠቃሚው ጸጥ ያለ ቁልፍን በመጫን ማንቂያውን ዝም ካሰኘ ((ማንቂያ &&! ጸጥ & ዲጂታል አንብብ (ጸጥ)) {

ማንቂያ = ሐሰት;

ጸጥ ብሏል = እውነት; }

// ማንቂያውን ዳግም ያስጀምሩ (!

}

// የተቀመጡት ፒኖች ወደ ላይ ከፍ ካሉ ለማየት ይፈትሹ ፣ እና እንደዚያ ከሆነ ተጓዳኙን እሴት (ዲጂታል አንብብ (set_hr) && ሰዓት <12) {)

ሰዓት ++;

printTimes ();

ማረም ();

}

ሌላ ከሆነ (digitalRead (set_hr) && hour == 12) {ሰዓት = 1;

printTimes ();

ማረም ();

}

ሌላ {}

ከሆነ (digitalRead (set_min) && minute <59) {

ደቂቃ ++ ፤ printTimes ();

ማረም ();

}

ሌላ ከሆነ (digitalRead (set_min) && minute == 59) {ደቂቃ = 0;

printTimes ();

ማረም ();

}

ሌላ {} ከሆነ (digitalRead (set_am_pm) && am_pm) {

am_pm = ሐሰት;

printTimes ();

ማረም ();

}

ሌላ ከሆነ (digitalRead (set_am_pm) &&! am_pm) {am_pm = true; printTimes ();

ማረም ();

}

ሌላ {} ከሆነ (digitalRead (set_hr_a) && hour_a <12) {

ሰዓት_አ ++;

printTimes ();

ማረም ();

}

ሌላ ከሆነ (digitalRead (set_hr_a) && hour_a == 12) {hour_a = 1;

printTimes ();

ማረም ();

}

ሌላ {} ከሆነ (digitalRead (set_min_a) && minute_a <59) {

ደቂቃ_አ ++;

printTimes ();

ማረም ();

}

ሌላ ከሆነ (digitalRead (set_min) && minute_a == 59) {minute_a = 0;

printTimes ();

ማረም ();

}

ሌላ {} ከሆነ (digitalRead (set_am_pm_a) && am_pm_a) {

am_pm_a = ሐሰት;

printTimes ();

ማረም ();

}

ሌላ ከሆነ (digitalRead (set_am_pm_a) &&! am_pm_a) {am_pm_a = true;

printTimes ();

ማረም ();

}

ሌላ {}

}

ደረጃ 13

5. እዚህ ፣ እኔ የፈጠርኳቸውን ሁለት ንዑስ መስመሮችን ታስተውላለህ - debounce () እና printTimes ()። Debounce () አዝራሮቹን አንድ ጊዜ ብቻ እንዳነበብን ለማረጋገጥ ጥቅም ላይ ይውላል። አርዱዲኖ በሺዎች የሚቆጠሩ ጊዜዎችን በሰከንድ ስለሚቃኝ ፣ አንድ ጊዜ ብቻ እንዲያነቡት ባሰቡበት ጊዜ አዝራሩ ብዙ ጊዜ ተጭኖ ነበር ብሎ ሊያስብ ይችላል። Debounce () አዝራሩ እስኪወጣ ድረስ ፕሮግራሙን ያቀዘቅዛል። printTimes () የ LCD ማያ ገጹን ያዘምናል ፣ ግን ያ ብዙ ትዕዛዞች ስለነበሩ ፣ አንድ ጊዜ ተየብኳቸው እና ከዚያ የጊዜ እሴት ሲቀየር በማንኛውም ጊዜ ንዑስ ፕሮግራሙን መደወል እችላለሁ።

// ማንኛቸውም አዝራሮች ተጭነው በሚቆዩበት ጊዜ በዚህ ተግባር ውስጥ ይቆዩ እና ከዚያ 250 ms ያዘግዩ።

ባዶነት መቀልበስ () {

ሳለ (digitalRead (set_hr) || digitalRead (set_min) ||

digitalRead (set_am_pm) || digitalRead (set_hr_a) ||

digitalRead (set_min_a) || digitalRead (set_am_pm_a)) {} መዘግየት (250);

}

// ለውጦች ካሉ የዘመኑትን ጊዜያት ያትማል

ባዶ ህትመት ጊዜያት () {

Serial.write (12);

Serial.print ("የአሁኑ ሰዓት:");

Serial.write (148);

ከሆነ (ሰዓት <10) {

Serial.print ("0");

}

Serial.print (ሰዓት);

Serial.print (":");

ከሆነ (ደቂቃ <10) {

Serial.print ("0");

}

Serial.print (ደቂቃ); Serial.print (":");

ከሆነ (ሁለተኛ <10) {

Serial.print ("0");

}

Serial.print (ሁለተኛ);

ከሆነ (am_pm) {

Serial.print ("PM");

}

ሌላ {

Serial.print ("AM");

}

Serial.write (168);

Serial.print ("ማንቂያ ተዘጋጅቷል ለ");

Serial.write (188);

ከሆነ (ሰዓት_አ <10) {

Serial.print ("0");

}

Serial.print (hour_a);

Serial.print (":");

ከሆነ (ደቂቃ_አ <10) {

Serial.print ("0");

}

Serial.print (minute_a);

ከሆነ (am_pm_a) {

Serial.print ("PM");

}

ሌላ {

Serial.print ("AM");

}

}

// የጊዜ መለኪያዎች ባዶነት ይጨምሩ

KeepTime () {

etime = millis () - cur_time;

ከሆነ (etime> = 1000 && second <59) {

ሁለተኛ ++;

cur_time = ሚሊስ ();

printTimes ();

}

ሌላ ከሆነ (etime> = 1000 && second == 59 && minute <59) {second = 0;

ደቂቃ ++;

cur_time = ሚሊስ ();

printTimes ();

}

ሌላ ከሆነ (etime> = 1000 && second == 59 && minute == 59 && hour <12) {

ሁለተኛ = 0; ደቂቃ =

0; ሰዓት ++; cur_time =

ሚሊ (); printTimes ();

}

ሌላ ከሆነ (ጊዜ> = 1000 && ሰከንድ == 59 && ደቂቃ == 59 && ሰዓት == 12) {

ሁለተኛ = 0; ደቂቃ =

0; ሰዓት = 1; am_pm =

! am_pm;

cur_time = ሚሊስ ();

printTimes ();

}

ሌላ {}

}

ደረጃ 14

6. ያ ነው!

ያጠናቅሩ እና ይስቀሉ እና ሁሉም ጨርሰዋል!

የሚመከር: