Arduino binära väckarklocka (10 / 16 steg)

Steg 10: Knappen och sensor kod

Koden hantering knapparna, är växeln och touch sensor uppdelad i två funktioner, en för att kontrollera om knapparna trycks och en för att göra vad knapparna bör om de trycks dvs tidsinställning, ställa in larm, snooze och aktivera eller inaktivera alarmet.

Jag skrev först koden med debouncing för knapparna, men senare när jag testade min knappar jag märkte att jag inte verkade behöver det, så jag tog bort den debouncing att få mindre och lättare att läsa koden, men jag med funktionen med debouncing i fliken f_comments_etc i skissen.

Kolla för knapptryckningar:
Den kod som kontrollerar om knapparna trycks är egentligen enkel. Den läser bara staten knappar stift. Arduinos inre pullup motstånd används så de knappar staterna är hög när de inte trycks och låg när de trycks.

Touch sensor läses med hjälp av CapSense biblioteket: touch_sensor.capSense(10) detta kommer att mäta kapacitansen 10 gånger och returnera ett genomsnitt. Beroende på värdet som returneras av snooze_button_state sätts variabel till antingen hög eller låg. Jag har funnit att när jag vila min hand på locket till klockan jag får ett värde runt 150 och med ingen hand ca 30 (om jag minns rätt). så jag använde 100 som gräns för att ändra tillståndet för snooze-"knappen". Ändra värdet som behövs.
______________________________________________________________________

Den funktion som kontrollerar om knapptryckningar:

void update_buttons_state()
{
hour_button_state = digitalRead(hour_button_pin);
minute_button_state = digitalRead(minute_button_pin);
setting_switch_state = digitalRead(setting_switch_pin);

/ * Läs snooze touch sensor: * /
IF(touch_sensor.capSense(10) > 100) / / justera det här värdet om det behövs
snooze_button_state = låg;
annat
snooze_button_state = hög;
den if-else ovan jag tror kunde skrivas kortare som:
snooze_button_state = (touch_sensor.capSense(10) > 100)? LÅG: HÖG;
}
______________________________________________________________________

Göra saker om knapparna trycks:
Växeln inställningar kommer att ändra två pekare hours_p och minutes_p att peka på antingen variabler timmar och minuter, eller alarm_hours och alarm_minutes. Koden för timme och minut knapparna kommer använda dessa tips, så när växeln ändras de automatiskt ställa in rätt; larm eller tid. Funktionen display använder också hours_p och minutes_p pekare så när växeln inställningar är på larm, alarmtiden visas.

Timme och minut knappar ökningen i timmar och minuter med en av varje tid de trycks.

På snooze-knappen kommer att stänga av larmsignalen och ange en snooze off tid (aktuell tid + 10 minuter) när signalen ska börja igen. inställningen anger också den variabeln snooze_on till true, detta kommer att orsaka alarmfunktionen att börja leta efter när snooze tid är.

Om snooze-knappen nedtryckt i 3 sekunder kommer det växla larm av eller på. En gällt ton spelas när larmet aktiveras och en låg pitched ton spelas när alarmet är avaktiverat.

______________________________________________________________________

Funktionen knappar:

"INRE" VARIABLER FÖR KNAPPAR FUNKTION:
booleska first_time_hour = sant; dessa används för att se till att timmarna
booleska first_time_minute = sant; och några minuter bara ökas en gång varje tangenttryckning.
osignerade långa snooze_button_timer; används för att hålla reda på hur länge på snooze-knappen har
hållits. När knappen hålls
en viss tid, larmet slås
av helt.
void buttons()
{
LÅG ==-knappen intryckt
HÖG == knappen släppt
(detta är eftersom pullup motstånd används)

Besluta om vi ska ställa in tid eller alarm:
(detta gör också displayen Visa larmtiden)
IF(setting_switch_state==low) / låg = inställd tid
{
hours_p = & timmar;
minutes_p = & minuter;
}
annat / / hög = Set alarm
{
hours_p = & alarm_hours;
minutes_p = & alarm_minutes;
}

Om timme knappen trycks, öka timmar:
om (hour_button_state == låg & & first_time_hour) / / endast öka timmar en gång
{/ / varje knapp tryck.
om (* hours_p < 23)
(* hours_p) ++;
annat
* hours_p = 0;

first_time_hour = false;

IF(debug)
{
Serial.println ("timme ökning").
Serial.println(hour_button_state);
}
}
annat if(hour_button_state==HIGH)
{
first_time_hour = sant; Återställ när knappen släpps,
} / / så att de nästa tryck registren.

Om minut knappen trycks, öka minuter:
om (minute_button_state == låg & & first_time_minute) / / endast öka protokollet
{/ / en gång varje knapp pressa.
om (* minutes_p < 59)
(* minutes_p) ++;
annat
* minutes_p = 0;

first_time_minute = false;
}
annat if(minute_button_state==HIGH)
{
first_time_minute = sant; Återställ när knappen släpps,
} / / så att de nästa tryck registren.

IF(snooze_button_state==low)
{
IF(signal_on)
{
ställa in tiden när larmsignalen ska börja igen,
Detta ger 10 minuters snooze:
IF(Minutes<50)
{
snooze_off_minutes = minuter + 10.
snooze_off_hours = timmar;
}
annat
{
snooze_off_minutes = minuter - 50;
snooze_off_hours = timmar + 1.
}
snooze_on = sant;
signal_on = false;
}
om snooze-knappen hålls för mer än 3 sekunder slå av/på larmet
IF((Millis() - snooze_button_timer) > 3000)
{
IF(alarm_on) / / om på, Stäng av
{
signal_on = false;
alarm_on = false;
spela tonen så att användaren vet larmet avstängd:
tone_maker.Play (NOTE_A3, 100);
}
annat if(alarm_on==false) / / om av, slå på
{
alarm_on = sant;
spela tonen så att användaren vet larmet avstängd:
tone_maker.Play (NOTE_A7, 100);
}
återställa snooze knappen timer
snooze_button_timer=Millis();
}

}
annat
{
återställa snooze knappen timer
snooze_button_timer=Millis();
}
}
___________________________________________________________________

Se Steg
Relaterade Ämnen

LilyPad Arduino binär klocka

LilyPad Arduino binär klocka instruktioner!Förteckning över material:LilyPad Arduino 328 moderkortet - $21,95https://www.Sparkfun.com/products/9266LilyPad FTDI grundläggande Breakout - $14.95https://www.Sparkfun.com/products/10275Mini USB-sladd - $3,...

Cwik klocka v1.0 - An Arduino binär klocka

ÖversiktDetta är en guide till att bygga en Arduino-driv klocka som använder lysdioder för att Visa 24-timmarsformat (timmar och minuter) som binära siffror, en analog mätare att Visa sekunderna, en switch för att växla mellan tidsvisning och tidsins...

Arduino binär klocka med LED-matris

Denna webbplats har många fina inlägg som beskriver byggandet av armbandsur. Jag är oerhört skakig, emellertid, och har svårt med någon lödning. Jag ville därför göra mig från en 8 x 8 MAX7219-kontrollerade ledde matrisen.Steg 1: Läsa BCD binär klock...

Arduino binär klocka

har en "arduino hjärnan" att visa oss vad är klockan i binär sätt. Den första raden av lysdioder är timmarna och det andra anger protokollet. Måste du lägga till upp till vara på tiden. Det kan fungera med ett 9v batteri eller med en nätadapter....

Min Arduino binär klocka

Hej från ItalienÄven om många klockor skapas binära, var mitt projekt inspirerad främst till detta:http:// mycket smart och rolig.Jag försökte att förbättra utformningen och för att lägga till något personligt.Jag tycker det är ett bra resultat i slu...

Arduino Real tid väckarklocka med temperatur och LED belysning. Fjärrstyrda

Arduino klocka, med batteribackup (realtidsklocka), tid, datum, Alarm, temperatur, LCD utgång, IR-fjärr ingång, viloläge, LED-belysning (10 X) röd och blå multi-mode.Steg 1: Steg 1: delar listaArduino klocka, med batteribackup (realtidsklocka), tid,...

Arduino Powered binär klocka

detta instructable kommer att hjälpa dig att bygga en Arduino binär klocka. Orignial idén för detta instructable är designad av Daniel Andrade. Min instructable använder ytmontering komponenter, men kan enkelt anpassas för att genomgående hål kompone...

Misslyckande & framgångssaga av Arduino klocka

Jag beslutade att bygga en Arduino binära armbandsur. Jag vet ett armbandsur bör vara små i storlek som det är en bärbar projekt. För att valt jag utanpåliggande montering enhet (SMD) som SMD LED, TQFP Atmega IC och SMD motstånd. Som controller vald...

OFFscope - offline oscilloskop (Arduino + SD kort snabb avverkning)

Detta är inte realtid oscilloskop!Först skaffa du signal genom att spara/logga det till SD-kort. Sedan granska du förvärvade signalen på din PC.Denna oFFline oscilloskop är avsedd för fordonsindustrin sensor diagnostik. 99% av automotive sensorer fun...

Quiz Game Controller med hjälp av "Ljus och ljud Buzzers" och Arduino

fara stil frågesport spel är favoriter för att skapa spänning och pedagogiska instruktioner samtidigt. Lärare, summer camp rådgivare och även industrin pedagoger hitta denna typ av spel för att skapa intresse och engagemang från deltagarna.Tanken bak...

Smart alarm: med Arduino och velostat

Syfte:Vakna upp är den svåraste delen av dagen, och för de flesta, det är att komma ur sängen del. Syftet med Smart Alarm projektet är att skapa en interaktiv väckarklocka som kräver att användaren att fysiskt göra en åtgärd/pose som stänger av larme...

Enkel elektronik organisation

som många andra elektroniska entusiaster som jag måste ha en konstant tillförsel av material för oss att hålla byggnad, hacking, eller bara leker med elektronik. Men som förmodligen någon av oss har kommit att inse behöver vi en hel del utrymme och l...

Driver Circuts

Låt oss göraUtforska publiceraDudela vad du makeFeatured:Intellekten IoTLaserskärningHacks LifeSmyckenMed Instructables kan du dela vad du gör med världen och utnyttja en växande gemenskap av kreativa experter. Fungerar det» nya Instructable»Prototyp...

HackerBoxes 0008: Clockwork

[cue temamusik]Urverk: Denna månad, utforskar HackerBox hackare tid, klockor och tidtagning. Det finns ingen tid som nuvarande. Detta Instructable innehåller information för att arbeta med HackerBoxes #0008.HackerBoxes är den månatliga box prenumerat...

Väckarklocka med ledningar (eller Arduino)

Detta är en väckarklocka byggd på ledningar microcontroller och anpassade för Colombia (den tar in i konto semester och visar alla texter på spanska). Väckarklockan visar timme, datum, månfas, anpassade meddelanden av dagen, samt ikoner att ange akti...

12 tim binär klocka, timmar och minuter bara, DS1307 RTC, i2C, Arduino-Nano

Ett tag nu har jag velat göra en binär klocka, men efter att ha tittat jag bestämde mig något bara lite annorlunda. Så jag beslöt att endast visar timmar och minuter och endast visa en 12 timmars klocka, innebär detta du bara behöver 3 kolumner och m...

Bygga IllyClock - baserade Arduino väckarklocka i en kaffe kan

uppdaterad augusti 4, 2011En strömlinjeformad version är nu beskrivs här.Syftet med detta projekt är att bygga en väckarklocka som liknar den som presenteras i videon nedan.Bredvid inhägnad, den ursprungliga inslaget i IllyClock visar tiden i färger:...

LED Dawn / Sunrise väckarklocka, nattlampa & säkerhet ljus - Arduino kompatibel

som nätterna förlängs successivt under hösten 2011, jag upptäckt glädjen med Arduino och trodde att det skulle vara ett bra sätt att genomföra något som jag har velat ha en lång stund - ett skonsamt sätt att vakna upp på en vintermorgon. Tyvärr, det...

Arduino-Powered binära termometer

jag nyligen förvärvat en Arduino Uno och letade efter en cool "komma igång" projekt. Jag beslöt att göra en termometer, som satsen har jag haft alla nödvändiga delar (termistor, sladdar, motstånd, lysdioder). Genom ett par iterationer, jag äntli...