Inhaltsverzeichnis:

Arduino-Wecker-Projekt - Gunook
Arduino-Wecker-Projekt - Gunook

Video: Arduino-Wecker-Projekt - Gunook

Video: Arduino-Wecker-Projekt - Gunook
Video: NWES - Arduino "Wecker" Projekt 2024, November
Anonim
Arduino-Wecker-Projekt
Arduino-Wecker-Projekt

In diesem Projekt verwenden wir das Arduino Uno, um einen LCD-Bildschirm zu steuern, um die aktuelle Uhrzeit und die Uhrzeit anzuzeigen, für die ein Alarm eingestellt ist. Wir verwenden Tasten, um jedes Mal einzustellen.

Materialien:

  • Arduino Uno -
  • Steckbrett -
  • Steckbrücken (x13+) -
  • 10 kOhm Widerstände (x4) -
  • LCD-Bildschirm -
  • 7 Tasten -
  • Piezo-Lautsprecher -

Schritt 1: Anleitung zum Anschluss

Anschlussanleitung
Anschlussanleitung

1. Verbinden Sie ein Überbrückungskabel vom 5V-Pin des Arduino mit einer der + Schienen auf dem Steckbrett.

Schritt 2:

Bild
Bild

2. Verbinden Sie ein Überbrückungskabel vom GND-Pin des Arduino mit der - Schiene neben der + Schiene, die Sie auf dem Steckbrett gewählt haben.

Schritt 3:

Bild
Bild

3. Verbinden Sie den LCD-Bildschirm mit Strom, Masse und dem TX-Pin (Pin 1).

Schritt 4:

Bild
Bild

4. Platzieren Sie 7 Knöpfe auf dem Steckbrett mit den Beinen über die Lücke im Steckbrett.

Schritt 5:

Bild
Bild

5. Platzieren Sie 10 kOhm-Widerstände von der - Schiene mit dem damit verbundenen GND-Pin auf die unteren linken Pins der Tasten.

Schritt 6:

Bild
Bild

6. Platzieren Sie die Überbrückungsdrähte zwischen dem unteren rechten Stift der Tasten und der 5V-Schiene auf Ihrem Steckbrett.

Schritt 7:

Bild
Bild

7. Platzieren Sie die Überbrückungsdrähte zwischen den Pins 6, dann 8-13 und dem Pin auf dem Knopf, mit dem der Widerstand verbunden ist.

Schritt 8:

Bild
Bild

8. Als nächstes platzieren Sie Ihren Piezo-Lautsprecher auf dem Steckbrett und verbinden Pin 7 mit dem Power-Pin, dann einen 100-Ohm-Widerstand mit Masse.

Schritt 9: Programmieranweisungen

1. Übersicht: Dieses Projekt fordert den Benutzer auf, die aktuelle Uhrzeit beim ersten Einschalten auf dem Display einzustellen, die aktuelle Uhrzeit und die Uhrzeit, für die der Alarm eingestellt ist. Die oben angeschlossenen Tasten werden jedes Mal zur Einstellung verwendet. Von links nach rechts: aktuelle Stunde einstellen, aktuelle Minute einstellen, aktuelles AM oder PM einstellen, Alarmstunde einstellen, Alarmminute einstellen, Alarm AM oder PM einstellen. Die letzte Taste wird verwendet, um den Alarm stumm zu schalten, wenn er ertönt.

Schritt 10:

2. Als erstes müssen wir unsere Variable initialisieren, die wir verwenden werden.

// Zu verwendende Variablen initialisierenint hour = 0; // Stunde für aktuelle Zeit int minute = 0; //

Minute für aktuelle Zeit int Sekunde = 0; // Sekunde für aktuelle Uhrzeit

int Stunde_a = 0; int // Stunde für Weckzeit

minute_a = 0; // Minute für Weckzeit

bool am_pm = false; // AM/PM-Umschaltflag. Falsch ist AM, Wahr ist PM

bool am_pm_a = false; // AM/PM Toggle Flag für Alarm. Falsch ist AM, Wahr ist PM

int set_hr = 13; // Verwenden Sie Pin 13, um die Stunde einzustellen

int set_min = 12; // Verwenden Sie Pin 12, um die Minute int einzustellen

set_am_pm = 11; // Verwenden Sie Pin 11, um am/pm. einzustellen

int set_hr_a = 10; // Verwenden Sie Pin 10, um die Stunde für den Alarm einzustellen Int set_min_a = 9; // Verwenden Sie Pin 9, um die Minute für den Alarm einzustellen Int set_am_pm_a = 8; // Verwenden Sie Pin 8, um am / pm für den Alarm einzustellen

int-Lautsprecher = 7; // Pin für Speakerint quiet = 6; // Pin, um den Lautsprecher zu stoppen

bool alarm = falsch; // Flag zum Umschalten, um weiterhin alarmierend zu sein

bool quieted = false; // Flagge, die Ruhe anzeigt, wurde nicht gedrückt

int cur_time = 0; // Variable für aktuelle Uhrzeit

int zeit = 0; // Variable für verstrichene Zeit

Schritt 11:

3. Als nächstes müssen wir den LCD-Bildschirm einrichten und den Benutzer auffordern, die aktuelle Uhrzeit einzustellen. Da dies nur einmal gemacht werden muss, werden wir dies in der Setup-Routine tun.

Leere Einrichtung () {

// LCD-Bildschirm einrichten

Serial.begin (9600); // Seriell mit 9600 Baud initialisieren

Serial.write(17); // Schalten Sie die Hintergrundbeleuchtung ein

Serial.write(24); // Schalten Sie das Display ein, mit Cursor und ohne Blinken

Serial.write (12); // Löschen Sie den Bildschirm

Serial.write(128); // Cursor in die linke obere Ecke bewegen // PinModes setzen pinMode(set_hr, EINGANG); 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 (Lautsprecher, AUSGANG);

pinMode (leise, EINGANG);

// Beim ersten Einschalten muss der Benutzer die aktuelle Uhrzeit einstellen. Serial.print ("Stellen Sie die aktuelle Uhrzeit ein"); Verzögerung (2000);

Serial.write (12);

printTimes();

cur_time = millis(); // Aktuelle Uhrzeit speichern}

Schritt 12:

4. Dann verfolgen wir in der Schleifenroutine die Zeit und lesen den Status der Schaltflächen, um zu sehen, ob der Benutzer eine der Zeiten einstellt.

Leere Schleife () {

// Achte auf die Zeit

achte auf die Zeit();

// Überprüfe, ob es Zeit für einen Alarm ist!

if((Stunde == Stunde_a && Minute == Minute_a && !still) || Alarm){Ton (Lautsprecher, 2000, 500); // Ausgabe eines 2000-Hz-Tons an den Lautsprecher für 500 ms

Verzögerung (500); // Verzögerung 500 ms if(!alarm){ // Wenn der Alarm ausgeschaltet ist, schalten Sie ihn ein

}

}

// Wenn der Benutzer den Alarm durch Drücken der Ruhetaste stummschaltet, hören Sie auf zu alarmieren if(alarm && !quieted && digitalRead(quiet)){

Alarm = falsch;

ruhig = wahr; }

// Alarm zurücksetzen if(!alarm && quieted && minute != minute_a){ quieted = false;

}

// Überprüfen Sie, ob die gesetzten Pins hoch gehen, und erhöhen Sie in diesem Fall den entsprechenden Wertif (digitalRead (set_hr) && Stunde < 12) {

Stunde++;

printTimes();

entprellen();

}

sonst if (digitalRead (set_hr) && Stunde == 12) { Stunde = 1;

printTimes();

entprellen();

}

anders{}

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

minute++;printTimes();

entprellen();

}

Sonst wenn (digitalRead (set_min) && Minute == 59) { Minute = 0;

printTimes();

entprellen();

}

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

am_pm = falsch;

printTimes();

entprellen();

}

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

entprellen();

}

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

Stunde_a++;

printTimes();

entprellen();

}

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

printTimes();

entprellen();

}

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

minute_a++;

printTimes();

entprellen();

}

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

printTimes();

entprellen();

}

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

am_pm_a = falsch;

printTimes();

entprellen();

}

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

printTimes();

entprellen();

}

anders{}

}

Schritt 13:

5. Hier werden Sie einige Subroutinen bemerken, die ich erstellt habe - debounce() und printTimes(). Debounce() wird verwendet, um sicherzustellen, dass die Schaltflächen nur einmal gelesen werden. Da der Arduino Tausende von Malen pro Sekunde scannt, kann es sein, dass die Taste mehrmals gedrückt wurde, wenn Sie sie nur einmal lesen wollten. Debounce() friert das Programm ein, bis die Taste losgelassen wird. printTimes() aktualisiert den LCD-Bildschirm, aber da dies mehrere Befehle waren, habe ich sie einmal eingegeben und kann dann die Unterroutine jederzeit aufrufen, wenn sich ein Zeitwert ändert.

// Während eine der Tasten gedrückt wird, bleiben Sie in dieser Funktion und verzögern Sie dann 250 ms.

Leere Entprellung () {

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

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

digitalRead(set_min_a) || digitalRead (set_am_pm_a)) {} Verzögerung (250);

}

// Gibt die aktualisierten Zeiten aus, wenn es Änderungen gibt

void printTimes(){

Serial.write (12);

Serial.print ("Aktuelle Zeit:");

Serial.write(148);

wenn (Stunde < 10){

Serial.print("0");

}

Serial.print (Stunde);

Serial.print (":");

wenn (Minute < 10){

Serial.print("0");

}

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

wenn (zweite < 10) {

Serial.print("0");

}

Serial.print (zweite);

wenn (am_pm){

Serial.print ("PM");

}

anders{

Serial.print ("AM");

}

Serial.write(168);

Serial.print ("Alarm eingestellt für:");

Serial.write(188);

if(Stunde_a < 10){

Serial.print("0");

}

Serial.print (hour_a);

Serial.print (":");

if(minute_a < 10){

Serial.print("0");

}

Serial.print (minute_a);

wenn (am_pm_a){

Serial.print ("PM");

}

anders{

Serial.print ("AM");

}

}

// Erhöhen Sie die Zeitparameter void

achte auf die Zeit(){

etime = millis() - cur_time;

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

zweite++;

cur_time = millis();

printTimes();

}

sonst if (etime >= 1000 && sekunde == 59 && minute <59) { sekunde = 0;

Minute++;

cur_time = millis();

printTimes();

}

else if(etime >= 1000 && Sekunde == 59 && Minute == 59 && Stunde <12){

Sekunde = 0; Minute =

0; Stunde++; cur_time =

Millis(); printTimes();

}

else if(etime >= 1000 && Sekunde == 59 && Minute == 59 && Stunde == 12){

Sekunde = 0; Minute =

0; Stunde = 1; am_pm =

!am_pm;

cur_time = millis();

printTimes();

}

anders{}

}

Schritt 14:

6. Das ist es!

Kompilieren und hochladen und fertig!

Empfohlen: