Spisu treści:

Projekt budzika Arduino: 14 kroków
Projekt budzika Arduino: 14 kroków

Wideo: Projekt budzika Arduino: 14 kroków

Wideo: Projekt budzika Arduino: 14 kroków
Wideo: Co można zbudować na Arduino? Sprawdź 5 ciekawych projektów DIY (robot-lodówka, WIELKI zegar... 2024, Lipiec
Anonim
Projekt budzika Arduino
Projekt budzika Arduino

W tym projekcie użyjemy Arduino Uno do sterowania ekranem LCD, aby pokazać aktualny czas i czas, na który ustawiony jest alarm. Za każdym razem użyjemy przycisków do ustawienia.

Materiały:

  • Arduino Uno -
  • Deska chlebowa -
  • Zworki (x13+) -
  • Rezystory 10 kΩ (x4) -
  • Ekran LCD -
  • 7 przycisków -
  • Głośnik piezoelektryczny -

Krok 1: Instrukcje dotyczące podłączania

Instrukcje podłączenia
Instrukcje podłączenia

1. Podłącz przewód połączeniowy z pinu 5V na Arduino do jednej z szyn + na płytce stykowej.

Krok 2:

Obraz
Obraz

2. Podłącz przewód połączeniowy z pinu GND na Arduino do szyny - obok szyny +, którą wybrałeś na płytce stykowej.

Krok 3:

Obraz
Obraz

3. Podłącz ekran LCD do zasilania, uziemienia i pinu TX (pin 1).

Krok 4:

Obraz
Obraz

4. Umieść 7 guzików na płytce stykowej nogami w poprzek szczeliny w płytce stykowej.

Krok 5:

Obraz
Obraz

5. Umieścić rezystory 10 kΩ z szyny z podłączonym do niej pinem GND do lewych dolnych pinów przycisków.

Krok 6:

Obraz
Obraz

6. Umieść przewody połączeniowe między prawym dolnym stykiem przycisków a szyną 5V na płytce stykowej.

Krok 7:

Obraz
Obraz

7. Umieścić zworki między pinami 6, następnie 8-13 i pinem przycisku, do którego podłączony jest rezystor.

Krok 8:

Obraz
Obraz

8. Następnie umieść głośnik Piezo na płytce stykowej i podłącz pin 7 do pinu zasilania, a następnie rezystor 100 omów do masy.

Krok 9: Instrukcje programowania

1. Przegląd: Ten projekt poprosi użytkownika o ustawienie aktualnego czasu przy początkowym włączeniu wyświetlacza, aktualnej godziny i czasu, na który ustawiony jest alarm. Podłączone powyżej przyciski będą używane do ustawiania za każdym razem. Od lewej do prawej można ustawić aktualną godzinę, ustawić aktualną minutę, ustawić aktualną AM lub PM, ustawić godzinę alarmu, ustawić minutę alarmu, ustawić alarm AM lub PM. Ostatni przycisk służy do wyciszenia alarmu, gdy zabrzmi.

Krok 10:

2. Pierwszą rzeczą, którą musimy zrobić, to zainicjować naszą zmienną, której będziemy używać.

// Zainicjuj zmienne do użyciaint godzina = 0; // Godzina dla bieżącego czasu int minuta = 0; //

Minuta aktualnego czasu int sekunda = 0; // Sekunda dla aktualnego czasu

int godzina_a = 0; int // Godzina czasu alarmu

minuta_a = 0; // Minuta czasu alarmu

bool am_pm = fałsz; // Przełącz flagę AM/PM. Fałsz to AM, prawda to PM

bool am_pm_a = fałsz; // AM/PM przełącz flagę alarmu. Fałsz to AM, prawda to PM

int zestaw_hr = 13; // Użyj pinu 13, aby ustawić godzinę

int set_min = 12; // Użyj pinu 12, aby ustawić minuty int

set_am_pm = 11; // Użyj pinu 11, aby ustawić am/pm

int set_hr_a = 10; // Użyj pinu 10, aby ustawić godzinę alarmu int set_min_a = 9; // Użyj pinu 9, aby ustawić minutę alarmu int set_am_pm_a = 8; // Użyj pinu 8, aby ustawić alarm przed południem/po południu

wewn mówca = 7; // Przypnij do użycia dla speakerint quiet = 6; // Przypnij, aby zatrzymać głośnik

alarm logiczny = fałszywy; // Flaga do przełączenia, aby zachować alarm

bool wyciszony = false; // Flaga pokazująca ciszę nie została naciśnięta

int cur_time = 0; // Zmienna dla aktualnego czasu

int czas = 0; // Zmienna dla upływającego czasu

Krok 11:

3. Następnie musimy ustawić ekran LCD i powiedzieć użytkownikowi, aby ustawić aktualny czas. Ponieważ wystarczy to zrobić tylko raz, zrobimy to w procedurze konfiguracji.

pusta konfiguracja () {

// Skonfiguruj ekran LCD

Serial.początek(9600); // Zainicjuj Serial z prędkością 9600 bodów

Zapis.seryjny(17); // Włącz podświetlenie

Serial.zapis(24); // Włącz wyświetlacz z kursorem i bez mrugnięcia

Serial.zapis(12); // Wyczyść ekran

Serial.zapis(128); // Przenieś kursor do lewego górnego rogu// Ustaw tryb pinMode pinMode(set_hr, WEJŚCIE); 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(głośnik, WYJŚCIE);

pinMode(cichy, INPUT);

// Przy początkowym zasilaniu, poproś użytkownika o ustawienie aktualnego czasu. Serial.print("Ustaw aktualny czas"); opóźnienie (2000);

Serial.zapis(12);

printTimes();

cur_time = mili(); // Zapisz aktualny czas}

Krok 12:

4. Następnie, w procedurze pętli, śledzimy czas i odczytujemy stan przycisku, aby sprawdzić, czy użytkownik ustawia któryś z czasów.

pusta pętla () {

// Utrzymuj czas

utrzymuj czas();

// Sprawdź, czy czas na alarm!

if((godzina == godzina_a && minuta == minuta_a && !cicho) || alarm){tone(głośnik, 2000, 500); // Wysyłaj do głośnika dźwięk 2000 Hz przez 500 ms

opóźnienie (500); // Opóźnij 500 ms if(!alarm){ // Jeśli alarm jest wyłączony, włącz go

}

}

// Jeśli użytkownik wyciszy alarm, naciskając przycisk cichy, przestań alarmować, jeśli(alarm && !quieted && digitalRead(quiet)){

alarm = fałszywy;

wyciszony = prawda; }

// Zresetuj alarm if(!alarm && quieted && minute != minute_a){ quieted = false;

}

// Sprawdź, czy ustawione piny są wysokie, a jeśli tak, zwiększ odpowiednią wartośćif(digitalRead(set_hr) && hour < 12){

godzina++;

printTimes();

Obalić();

}

else if (digitalRead(set_hr) && godzina == 12){ godzina = 1;

printTimes();

Obalić();

}

w przeciwnym razie{}

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

minuta++;printTimes();

Obalić();

}

else if (digitalRead(set_min) && minuta == 59){ minuta = 0;

printTimes();

Obalić();

}

else{}if(digitalRead(set_am_pm) && am_pm){

am_pm = fałsz;

printTimes();

Obalić();

}

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

Obalić();

}

else{}if(digitalRead(set_hr_a) && godzina_a < 12){

godzina_a++;

printTimes();

Obalić();

}

else if (digitalRead(set_hr_a) && hour_a == 12){hour_a = 1;

printTimes();

Obalić();

}

else{}if(digitalRead(set_min_a) && minuta_a < 59){

minuta_a++;

printTimes();

Obalić();

}

else if (digitalRead(set_min) && minute_a == 59){minute_a = 0;

printTimes();

Obalić();

}

else{}if(digitalRead(set_am_pm_a) && am_pm_a){

am_pm_a = fałsz;

printTimes();

Obalić();

}

else if (digitalRead(set_am_pm_a) && !am_pm_a){am_pm_a = true;

printTimes();

Obalić();

}

w przeciwnym razie{}

}

Krok 13:

5. Tutaj zauważysz kilka podprogramów, które stworzyłem - debounce() i printTimes(). Funkcja Debounce() służy do upewnienia się, że odczytujemy przyciski tylko raz. Ponieważ Arduino skanuje tysiące razy na sekundę, może pomyśleć, że przycisk został naciśnięty kilka razy, gdy zamierzano go odczytać tylko raz. Debounce() zamrozi program do momentu zwolnienia przycisku. printTimes() aktualizuje ekran LCD, ale ponieważ było to kilka poleceń, wpisałem je raz, a następnie mogę wywołać podprogram za każdym razem, gdy zmieni się wartość czasu.

// Gdy którykolwiek z przycisków jest wciśnięty, pozostań w tej funkcji, a następnie opóźnij 250 ms.

nieważne odbicie (){

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

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

digitalRead(set_min_a) || digitalRead (set_am_pm_a)) {} opóźnienie (250);

}

// Wyświetla zaktualizowane czasy, jeśli są jakieś zmiany

void printTimes(){

Serial.zapis(12);

Serial.print("Aktualny czas:");

Zapis.seryjny(148);

jeśli (godzina < 10){

Serial.print("0");

}

Serial.print(godzina);

Serial.print(":");

jeśli (minuta < 10){

Serial.print("0");

}

Serial.print(minuta);Serial.print(":");

jeśli (drugi < 10) {

Serial.print("0");

}

Serial.print(drugi);

jeśli (przed południem){

Serial.print("PM");

}

w przeciwnym razie{

Serial.print("AM");

}

Serial.zapis(168);

Serial.print("Zestaw alarmów dla:");

Serial.zapis(188);

if(godzina_a < 10){

Serial.print("0");

}

Serial.print(godzina_a);

Serial.print(":");

jeśli (minuta_a < 10){

Serial.print("0");

}

Serial.print(minuta_a);

jeśli (am_pm_a){

Serial.print("PM");

}

w przeciwnym razie{

Serial.print("AM");

}

}

// Zwiększ parametry czasu void

utrzymuj czas(){

etime = millis() - aktualny_czas;

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

drugi++;

cur_time = mili();

printTimes();

}

else if(etime >= 1000 && sekunda == 59 && minuta < 59){ sekunda = 0;

minuta++;

cur_time = mili();

printTimes();

}

else if(etime >= 1000 && sekunda == 59 && minuta == 59 && godzina < 12){

drugi = 0; minuta =

0; godzina++; cur_time =

mili(); printTimes();

}

inaczej if(etime >= 1000 && sekunda == 59 && minuta == 59 && godzina == 12){

drugi = 0; minuta =

0; godzina = 1; am_pm =

! przed południem;

cur_time = mili();

printTimes();

}

w przeciwnym razie{}

}

Krok 14:

6. To wszystko!

Skompiluj, prześlij i gotowe!

Zalecana: