Агуулгын хүснэгт:

Arduino сэрүүлэгтэй цаг төсөл: 14 алхам
Arduino сэрүүлэгтэй цаг төсөл: 14 алхам

Видео: Arduino сэрүүлэгтэй цаг төсөл: 14 алхам

Видео: Arduino сэрүүлэгтэй цаг төсөл: 14 алхам
Видео: FLPROG АНГЛИ ХУВИЛБАР ҮНЭГҮЙ 2024, Арваннэгдүгээр
Anonim
Arduino сэрүүлэгтэй цаг төсөл
Arduino сэрүүлэгтэй цаг төсөл

Энэхүү төсөлд бид Arduino Uno -г ашиглан LCD дэлгэцийг хянах бөгөөд дохиолол өгч буй цаг, цагийг харуулах болно. Бид товчлууруудыг ашиглан тохируулах болно.

Материал:

  • Arduino Uno -
  • Breadboard -
  • Холбогч утас (x13+) -
  • 10 кох эсэргүүцэл (x4) -
  • LCD дэлгэц -
  • 7 товчлуур-https://vilros.com/collections/raspberry-pi-acces…
  • Пьезо чанга яригч -

Алхам 1: Холболтын заавар

Холболтын заавар
Холболтын заавар

1. Arduino дээрх 5V зүү бүхий холбогч утсыг талхны самбар дээрх + төмөр замын аль нэгэнд холбоно уу.

Алхам 2:

Зураг
Зураг

2. Arduino дээрх GND зүүгээс холбогч утсыг талхны самбар дээр сонгосон + төмөр замын хажууд байгаа төмөр замд холбоно уу.

Алхам 3:

Зураг
Зураг

3. LCD дэлгэцийг тэжээл, газардуулга, TX зүү (зүү 1) руу холбоно уу.

Алхам 4:

Зураг
Зураг

4. Талхны тавцан дээрх 7 товчлуурыг талхны тавцангийн завсраар хөлөө байрлуул.

Алхам 5:

Зураг
Зураг

5. Төмөр замаас GND зүү холбосон 10 кох резисторыг товчлуурын зүүн доод тээглүүрт холбоно.

Алхам 6:

Зураг
Зураг

6. Талхны тавцан дээрх товчлууруудын баруун доод зүү ба 5В төмөр замын хооронд холбогч утас тавь.

Алхам 7:

Зураг
Зураг

7. Холбогч утсыг 6, дараа нь 8-13, резинийг холбосон товчлуур дээр байрлуулна.

Алхам 8:

Зураг
Зураг

8. Дараа нь Piezo чанга яригчаа талхны тавцан дээр тавиад 7 -р зүүг тэжээлийн зүү, дараа нь 100 ом эсэргүүцэлтэй холбоно.

Алхам 9: Програмчлалын заавар

1. Тойм: Энэхүү төсөл нь хэрэглэгчээс дэлгэц дээрх анхны тэжээл дээр одоогийн цаг болон сэрүүлгийг тохируулах хугацааг тохируулахыг хүсэх болно. Дээр холбосон товчлууруудыг тохируулах бүрт ашиглах болно. Зүүнээс баруун тийш тэд одоогийн цаг, одоогийн минут, одоогийн AM эсвэл PM, сэрүүлгийн цаг, сэрүүлгийн минут, AM эсвэл PM дохиоллыг тохируулна. Сүүлчийн товчлуурыг дохиолол дуугарах үед дуугүй болгоход ашигладаг.

Алхам 10:

2. Бидний хийх ёстой хамгийн эхний зүйл бол ашиглах гэж буй хувьсагчаа эхлүүлэх явдал юм.

// Хэрэглэх хувьсагчдыг эхлүүлэхintint = 0; // Одоогийн цагийн цаг int минут = 0; //

Одоогийн цагийн минут int second = 0; // Одоогийн цагийн хувьд хоёрдугаарт

int hour_a = 0; int // Сэрүүлгийн цаг

минут_а = 0; // Сэрүүлгийн минут

bool am_pm = худал; // AM/PM туг солих. Худал бол AM, үнэн бол PM юм

bool am_pm_a = худал; // AM/PM дохиоллыг асаах. Худал бол AM, үнэн бол PM юм

int set_hr = 13; // Цагийг тохируулахын тулд 13 -р зүү ашиглана уу

int set_min = 12; // 12 -р зүү ашиглан int int -ийг тохируулна уу

set_am_pm = 11; // Өглөө/орой тохируулахын тулд 11 -р зүү ашиглана уу

int set_hr_a = 10; // дохиолол int set_min_a = 9 -ийн цагийг тохируулахын тулд 10 -р зүү ашиглана уу; // дохио int set_am_pm_a = 8 -ийн минутыг тохируулахын тулд зүү 9 -ийг ашиглана уу; // 8 -р зүү ашиглан сэрүүлгийг өглөө/орой болгон тохируулна уу

int чанга яригч = 7; // Чанга яригч ашиглахад ашиглах чимээгүй = 6; // Чанга яригчийг зогсоохын тулд зүү

bool дохиолол = худал; // Санаа зовохын тулд сэлгэх туг

bool чимээгүй болсон = худал; // Чимээгүй харагдаж буй туг дарагдаагүй байна

int cur_time = 0; // Одоогийн цагийн хувьсагч

int etime = 0; // Өнгөрсөн хугацаанд хувьсагч

Алхам 11:

3. Дараа нь бид LCD дэлгэцийг тохируулж, хэрэглэгчид одоогийн цагийг тохируулахыг хэлэх хэрэгтэй. Үүнийг ганцхан удаа хийх шаардлагатай тул бид үүнийг тохиргооны журмаар хийх болно.

хүчингүй тохиргоо () {

// LCD дэлгэцийг тохируулах

Цуваа эхлэх (9600); // Цувралыг 9600 baud дээр эхлүүлнэ үү

Serial.write (17); // Арын гэрлийг асаана уу

Serial.write (24); // Дэлгэцийг курсор болон анивчихгүйгээр асаана уу

Serial.write (12); // Дэлгэцийг цэвэрлэ

Serial.write (128); // Курсорыг зүүн дээд буланд зөөх // pinModes pinMode (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 (чанга яригч, OUTPUT);

pinMode (чимээгүй, оролт);

// Анхны тэжээл дээр хэрэглэгчийн одоогийн цагийг тохируулна уу. Serial.print ("Одоогийн цагийг тохируулах"); саатал (2000);

Serial.write (12);

printTimes ();

cur_time = millis (); // Одоогийн цагийг хадгалах}

Алхам 12:

4. Дараа нь, давталтын горимд бид цагийг хянаж, товчлуурын статусыг уншиж хэрэглэгч тухайн цагын аль нэгийг тохируулж байгаа эсэхийг шалгадаг.

void loop () {

// Цаг барих

keepTime ();

// Санаа зовох цаг болсон эсэхийг шалгаарай!

if ((цаг == цаг_а && минут == минут_а &&! чимээгүй) || дохиолол) {ая (чанга яригч, 2000, 500); // 2000 Гц давтамжтай чанга яригч руу 500 мс гаргана

саатал (500); // 500 ms -ийг хойшлуул (хэрэв дохиолол) {// Хэрэв дохиолол унтарсан бол түүнийг асаана уу

}

}

// Хэрэв хэрэглэгч чимээгүй товчлуурыг дарж сэрүүлгийг дуугүй болгодог бол (дохиолол && чимээгүй && digitalRead (чимээгүй)) {

дохиолол = худал;

чимээгүй = үнэн; }

// (! Alarm && чимээгүй && минут! = Минут_а) {чимээгүй = худал;

}

// Тогтоосон тээглүүр өндөр байгаа эсэхийг шалгаж, хэрэв тийм бол харгалзах утгыг нэмэгдүүлээрэй (digitalRead (set_hr) && hour <12) {

цаг ++;

printTimes ();

хасах ();

}

өөр бол (digitalRead (set_hr) && hour == 12) {hour = 1;

printTimes ();

хасах ();

}

өөр {}

if (digitalRead (set_min) && minutes <59) {

минут ++; printTimes ();

хасах ();

}

өөр бол (digitalRead (set_min) && minutes == 59) {минут = 0;

printTimes ();

хасах ();

}

өөр {} if (digitalRead (set_am_pm) && am_pm) {

am_pm = худал;

printTimes ();

хасах ();

}

else if (digitalRead (set_am_pm) &&! am_pm) {am_pm = true; printTimes ();

хасах ();

}

өөр {} if (digitalRead (set_hr_a) && hour_a <12) {

hour_a ++;

printTimes ();

хасах ();

}

өөр бол (digitalRead (set_hr_a) && hour_a == 12) {hour_a = 1;

printTimes ();

хасах ();

}

өөр {} if (digitalRead (set_min_a) && minutes_a <59) {

минут_а ++;

printTimes ();

хасах ();

}

өөр бол (digitalRead (set_min) && minutes_a == 59) {minutes_a = 0;

printTimes ();

хасах ();

}

өөр {} if (digitalRead (set_am_pm_a) && am_pm_a) {

am_pm_a = худал;

printTimes ();

хасах ();

}

else if (digitalRead (set_am_pm_a) &&! am_pm_a) {am_pm_a = үнэн;

printTimes ();

хасах ();

}

өөр {}

}

Алхам 13:

5. Эндээс та миний үүсгэсэн хэд хэдэн дэд програмыг анзаарах болно - debounce () ба printTimes (). Debounce () нь товчлууруудыг зөвхөн нэг удаа уншихад ашигладаг. Arduino секундэд хэдэн мянган удаа скан хийдэг тул та үүнийг ганцхан удаа уншихыг хүссэн үедээ товчлуурыг хэд хэдэн удаа дарсан гэж бодож магадгүй юм. Debounce () товчлуурыг суллах хүртэл програмыг царцаах болно. printTimes () нь LCD дэлгэцийг шинэчилдэг боловч энэ нь хэд хэдэн команд байсан тул би тэдгээрийг нэг удаа бичээд цагийн утга өөрчлөгдөх бүрт дэд програм руу залгаж болно.

// Аль ч товчлуурыг дарж байхад энэ функцэд байсны дараа 250 ms -ийг хойшлуулна уу.

хүчингүй болгох () {

while (digitalRead (set_hr) || digitalRead (set_min) ||

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

digitalRead (set_min_a) || digitalRead (set_am_pm_a)) {} саатал (250);

}

// Өөрчлөлт орсон тохиолдолд шинэчлэгдсэн цагийг хэвлэнэ

хүчингүй printTimes () {

Serial.write (12);

Serial.print ("Одоогийн цаг:");

Serial.write (148);

хэрэв (цаг <10) {

Serial.print ("0");

}

Цуврал хэвлэх (цаг);

Serial.print (":");

хэрэв (минут <10) {

Serial.print ("0");

}

Serial.print (минут); Serial.print (":");

хэрэв (секунд <10) {

Serial.print ("0");

}

Цуваа.хэвлэх (хоёр дахь);

хэрэв (өглөөний_ орой) {

Serial.print ("PM");

}

өөр {

Serial.print ("AM");

}

Serial.write (168);

Serial.print ("Сэрүүлэг тохируулах:");

Serial.write (188);

хэрэв (hour_a <10) {

Serial.print ("0");

}

Цуваа.хэвлэх (hour_a);

Serial.print (":");

хэрэв (минут_а <10) {

Serial.print ("0");

}

Цуваа.хэвлэх (минут_а);

хэрэв (am_pm_a) {

Serial.print ("PM");

}

өөр {

Serial.print ("AM");

}

}

// Хугацааны параметрүүдийг хүчингүй болгох

keepTime () {

etime = millis () - cur_time;

if (etime> = 1000 && second <59) {

хоёр дахь ++;

cur_time = millis ();

printTimes ();

}

өөр бол (etime> = 1000 && second == 59 && minutes <59) {second = 0;

минут ++;

cur_time = millis ();

printTimes ();

}

өөр бол (etime> = 1000 && second == 59 && minutes == 59 && hour <12) {

секунд = 0; минут =

0; цаг ++; cur_time =

миллис (); printTimes ();

}

өөр бол (etime> = 1000 && second == 59 && minutes == 59 && hour == 12) {

секунд = 0; минут =

0; цаг = 1; am_pm =

!үдээс өмнө үдээс хойш;

cur_time = millis ();

printTimes ();

}

өөр {}

}

Алхам 14:

6. Ингээд л боллоо!

Хөрвүүлээд байршуулаарай, тэгвэл бүгд бэлэн боллоо!

Зөвлөмж болгож буй: