Arduino Countdown tidtagare (15 / 22 steg)

Steg 15: Program



Programmera Arduino med följande kod:

/*

Arduino nedräkningstimer
av Randy Sarafan - 2013

Använder två 7-segment visar Countdown från 99 till 0. När timern når noll, Piper displayen blinkar och en piezo.

-Om du vill starta timern knappen.

-För att pausa tiduret, tryck på knappen igen.

-Om du vill återställa innan den når 0, tryck på knappen 3 gånger snabbt i under 1 sekund. När timern når 0, tryck en gång till Återställ.

För mer information besök:

Denna kod innehåller Arduino statliga förändring upptäckt och Debouncing exempelkod av David A. Mellis, Limor Fried och Tom Igoe.

Denna kod är i Public Domain.

*/

Numrera av tryckknapp PIN-koden
CONST int buttonPin = 12;

7-segment identifierare variabler
int leftnumber;
int rightnumber;

Variabler för nuvarande och den föregående behandlingen från tryckknapp PIN-koden
int buttonState;
int lastButtonState = 0;

Ytterligare variabel att hålla reda på tidigare knapp tryck på staten.
Den här bara håller reda på statligt av knappen när det finns en
Debounce dröjsmål händelse.
int previousState;

Spår sista gången utgångsstiftet var växlas
lång lastDebounceTime = 0;

Debounce tiden; öka om knappen registreras en enkel pressa mer än en gång
lång debounceDelay = 20;

Variabel för att räkna antalet gånger på knappen har tryckts.
int buttonPushCounter;

Denna variabel får växlas antingen hög eller låg varje gång knappen trycks.
Med andra ord, ändras denna variabel stater med varje knapptryckning.
bool tryckte = sant;

int buttonpress;

void setup() {

Ställ in 7-segement utgångar
pinMode (2, utgång);
pinMode (3, OUTPUT);
pinMode (4, OUTPUT);
pinMode (5, OUTPUT);
pinMode (6, OUTPUT);
pinMode (7, OUTPUT);
pinMode (8, OUTPUT);
pinMode (9, OUTPUT);
pinMode (10, OUTPUT);

Ställ in Summer utgång
pinMode (11, OUTPUT);

Ange tryckknapp input
pinMode (buttonPin, ingång);

}

void loop() {

för (int jag = 0; jag < 10; i ++) {
Räknar ner den vänstra siffran med 10
leftnumber = 9 - i.

för (int x = 0; x < 10; x ++) {
Räknar ned den högra siffran.
Eftersom detta är inuti andra loop,
det räknar ned med 10 tio gånger
rightnumber = 9 - x;

Denna loop visar siffrorna och kontrollerar knappen
Minska detta nummer för att göra det gå snabbare
för (int y = 0; y < 50; y) {

Ta en knapp läsning
int läsa = digitalRead(buttonPin);

Kontrollera om du bara tryckt på knappen
(dvs. indata gick från låg till hög), och du har väntat
tillräckligt länge sedan den senaste pressen att ignorera något buller:

Om tillståndet i den switchen har förändrats, på grund av att
pressade eller en falsk kontakt, sedan återställa debounce timern
om (läsa! = lastButtonState) {
lastDebounceTime = millis();
}

Om den aktuella behandlingen är bortom debounce förseningen
ställa in knappen till den aktuella behandlingen
om ((millis()-lastDebounceTime) > debounceDelay) {
buttonState = behandlingen.
}

Om den nuvarande och den tidigare staten inte matchar
och det aktuella läget anger att knappen trycks.
Vänd sedan tillståndet för variabeln "pressade" (till sant eller falskt)
och öka räknaren knappen push
om (buttonState! = previousState) {
IF(buttonState == 1) {
tryckte =! pressade,
buttonPushCounter ++;
}
}

Om du trycker på knappen är sant
då displayen är pausad och slutar räknar
om (tryckte == true) {

Visar den vänstra siffran
digitalWrite (9, 1);
digitalWrite (10, 0);
lightUpDigit(leftnumber);
Delay(10);

Visar den rätt siffran
digitalWrite (9, 0);
digitalWrite (10, 1);
lightUpDigit(rightnumber);
Delay(10);
}

Annars, om staten inte är sant
displayen återupptar visar nedräkningen
annat {
digitalWrite (9, 1);
digitalWrite (10, 0);
lightUpDigit(leftnumber);
Delay(10);

digitalWrite (9, 0);
digitalWrite (10, 1);
lightUpDigit(rightnumber);
Delay(10);
y = y + 1.
}

Uppdatera previousState variabeln för nästa loopen
previousState = buttonState;

Uppdatera lastButtonState variabeln för nästa loopen
lastButtonState = behandlingen.

Om båda siffror lika med noll, stoppa räknaren, flash-00 och pip
medan (leftnumber == 0 & & rightnumber == 0) {

Anropar timesup rutin och kör tills knappen trycks och timer återställa
timesUp();
}

Om knappen är intryckt 3 gånger under en sekund
återställa programmet
om (buttonPushCounter > 2) {
buttonPushCounter = 0;
hemkomst.
}
}

Återställer knapp tryck på räkningen efter 1 sekund
buttonPushCounter = 0;
}
}
}

Den här funktionen körs över och över när tiden går ut
Bara att trycka på den röda knappen gör detta stopp
void timesUp() {

Ett pip på
analogWrite (11, 20);

Display "00" 1/2 sekund
för (int z = 0, z < 25, z ++) {
digitalWrite (9, 1);
digitalWrite (10, 0);
lightUpDigit(0);
Delay(10);

digitalWrite (9, 0);
digitalWrite (10, 1);
lightUpDigit(0);
Delay(10);

Nollställa räknaren om du trycker på knappen
och inaktivera display och ljudsignal
IF(digitalRead(buttonPin) == 1) {
tryckte = sant;
leftnumber = 9;
rightnumber = 9;
analogWrite (11, 0);
digitalWrite (9, 1);
digitalWrite (10, 1);
Delay(2000);
hemkomst.
}
}

Beep off
analogWrite (11, 0);

Visa off 1/2 sekund
för (int z = 0, z < 25, z ++) {

digitalWrite (9, 1);
digitalWrite (10, 0);
lightUpDigit(10);
Delay(10);

digitalWrite (9, 0);
digitalWrite (10, 1);
lightUpDigit(10);
Delay(10);

Nollställa räknaren om du trycker på knappen
IF(digitalRead(buttonPin) == 1) {
tryckte = sant;
leftnumber = 9;
rightnumber = 9;
Delay(2000);
hemkomst.
}
}
}

Denna funktion har ett case-uttryck
som fastställer stiften högt eller lågt,
och skärmar varje av siffrorna.

void lightUpDigit (int DisplayNumber) {

växel (DisplayNumber) {
fall 0:
digitalWrite (2, 1);
digitalWrite (3, 1);
digitalWrite (4, 1);
digitalWrite (5, 1);
digitalWrite (6, 0);
digitalWrite (7, 1);
digitalWrite (8, 1);
bryta;

fall 1:
digitalWrite (2, 1);
digitalWrite (3, 0);
digitalWrite (4, 1);
digitalWrite (5, 0);
digitalWrite (6, 0);
digitalWrite (7, 0);
digitalWrite (8, 0);
bryta;

fall 2:
digitalWrite (2, 1);
digitalWrite (3, 1);
digitalWrite (4, 0);
digitalWrite (5, 0);
digitalWrite (6, 1);
digitalWrite (7, 1);
digitalWrite (8, 1);
bryta;

fall 3:
digitalWrite (2, 1);
digitalWrite (3, 1);
digitalWrite (4, 1);
digitalWrite (5, 0);
digitalWrite (6, 1);
digitalWrite (7, 1);
digitalWrite (8, 0);
bryta;

fall 4:
digitalWrite (2, 1);
digitalWrite (3, 0);
digitalWrite (4, 1);
digitalWrite (5, 1);
digitalWrite (6, 1);
digitalWrite (7, 0);
digitalWrite (8, 0);
bryta;

fall 5:
digitalWrite (2, 0);
digitalWrite (3, 1);
digitalWrite (4, 1);
digitalWrite (5, 1);
digitalWrite (6, 1);
digitalWrite (7, 1);
digitalWrite (8, 0);
bryta;

fall 6:
digitalWrite (2, 0);
digitalWrite (3, 1);
digitalWrite (4, 1);
digitalWrite (5, 1);
digitalWrite (6, 1);
digitalWrite (7, 1);
digitalWrite (8, 1);
bryta;

fall 7:
digitalWrite (2, 1);
digitalWrite (3, 1);
digitalWrite (4, 1);
digitalWrite (5, 0);
digitalWrite (6, 0);
digitalWrite (7, 0);
digitalWrite (8, 0);
bryta;

mål 8:
digitalWrite (2, 1);
digitalWrite (3, 1);
digitalWrite (4, 1);
digitalWrite (5, 1);
digitalWrite (6, 1);
digitalWrite (7, 1);
digitalWrite (8, 1);
bryta;

mål 9:
digitalWrite (2, 1);
digitalWrite (3, 1);
digitalWrite (4, 1);
digitalWrite (5, 1);
digitalWrite (6, 1);
digitalWrite (7, 1);
digitalWrite (8, 0);
bryta;

mål 10:
digitalWrite (2, 0);
digitalWrite (3, 0);
digitalWrite (4, 0);
digitalWrite (5, 0);
digitalWrite (6, 0);
digitalWrite (7, 0);
digitalWrite (8, 0);
bryta;
}
}

Se Steg
Relaterade Ämnen

Arduino countdown tidtagare med setup knappar

I handboken Instructables kommer jag visa dig hur man gör ditt eget Arduino två siffriga countdown tidtagare. Jag gjorde min egen krets med hjälp av ATmega328 micro controller men detta är ett valfritt steg. I den här guiden hjälper jag dig att göra...

Arduino enkel 7 segment countdown tidtagare

I handboken Instructables kommer jag visa dig hur man gör en enkel - siffra två - timer med hjälp av Arduino uno ombord och 7 segmenterar skärmar.Vi kommer att kunna ställa in timern i våra program skiss genom att ändra värdet för en variabel. Vi kom...

Crazy Countdown tidtagare

detta är min tolkning av den stereotypa bomb som du ser i så många cheesy actionfilmer. Hjälten har till räkna ut vilken linje som ska klippa för att stoppa timern och hålla bomben att explodera.I det här fallet har vi 3 trådar. En tråd stoppar timer...

Arduino 7 segment countdown tidtagare

detta projekt bygger på en Kingbright dual 7 segment display och en Arduino Diecimila.det räknar ner från 20 och tänds stift 13 ledde när timern är klar.Den använder ingen extra hårdvara som är nyttigt för billiga projekt.Det finns också multiplexing...

Tvättmaskin countdown tidtagare - Arduino

Hej och Välkommen till min instructable för en tvättmaskin nedräkningstimer. Timern drivs med mycket populära Arduino micro controller. Se här för mer information. Arduino hemsidaSyftetSyftet med detta projekt är att kunna fördröja starten av tvättma...

Arduino LED 3,2,1 Countdown tidtagare

även om jag har använt en arduino för ett och ett halvt år eller så, jag har aldrig gjort ett försök att lära sig språket förrän nu. Detta är mitt första projekt med en arduino som jag byggt och kodad allt av mig själv. Om någon är intresserad, är hä...

Countdown tidtagare

Tråd upp Arduino som kan ses ovan.Steg 1: Ladda upp kodenLadda upp följande kod med hjälp av Arduino app....

Countdown tidtagare ur en gammal klocka

göra en nedräkningstimer ur en gammal klocka...Titta på videon för ett exempel:Steg 1: Få vad du behöver Du behöver för detta instructable:1. papper2. gamla klockan (arbets)3. fungerande batteri4. svart markering (rekommenderas att använda Crayola tv...

Mynta-stora framgång mätaren (sluta röka!) med Arduino

det kommer en tid i livet att sätta barnsliga saker bakom och ge upp otäcka vanor. Vissa, som rökning, kan vara jävligt svårt utan ständig uppmuntran. Det var dags för mig att kombinera mitt favorit hobby med mitt drivande mål och göra denna: The slu...

Arduino följetong Monitor utmanar

vill du testa din Arduino kunskaper i programmering?Här är sex utmaningar som är hårdare än den tidigare och kräver att du använder mer och mer av funktionen Serial Monitor. Allt i allt detta är ett roligt sätt att öva din arduino programmering med i...

Stängningen tidtagare: Idealisk för batterier sladdlösa verktyg

jag har vuxit mycket frustrerad över åren med en besvikelse "rechargability" på batterier sladdlösa verktyg. Det är alltför lätt att bli upptagen med andra uppgifter och överladda batterierna.Jag ser för laddning av batterier för trolling motore...

RGB LED Pixel Touch reaktiva Gaming tabell

Tabeller är användbara saker att ha och som vi behövde ett nytt soffbord för vardagsrummet det är meningsfullt att bygga min egen med några extra elektroniska funktioner.Min tabelldesign består av följande funktioner.10 x 16 RGB lysdioder10 x 16 IR t...

DaveWare ledde styrelsen

Målet med detta projekt är att bygga en anpassad storlek RGB Led skärm baserat på 32 x 32 RGB Led paneler. Detta projekt skärm/upplösning är 96 x 64 (dvs, med sex -6-32 x 32 RGB Led paneler). Denna skärm används Visa information om tyngdlyftning idro...

Space Shuttle Control Center (barnens leksak)

Detta är en leksak som jag gjorde för min sons 3: e födelsedag. Det är en "Space Shuttle Command Center" i huvudsak en glorifierad ljus switchbox :)Inspirationen kom från en 99-volts ljus-och-switch box min steg-brors pappa gjorde vägen tillbaka...

Färgglada nedräkningsklockan för snäva tidslinjen ledning

detta är en rolig snygg klocka som har som visar tiden på relativt stora 32 x 16 Bi-Color LED Matrix.Den innehåller också en nedräkning räknare som jag tycker är mycket användbar i många situationer.Funktioner:Datum och tid visasTemperatur displayCou...

Spel timern

Hej och Välkommen till detta i nya instructable. I detta i instructible kommer jag lära dig hur man gör en timer som kan användas för 2 spelare spel. Denna countdown tidtagare ger varje spelare 2 minuter för att göra ett drag. Jag gjorde detta efters...

Hoppa från en power bank förrätt och en motorcykel

Med införandet av bärbara hoppa skulle förrätter baserad på litium batteriteknik det fick mig att tänka att en av dessa vara den perfekta följeslagaren när på en motorcykel, speciellt om du går bort för ett par dagar. Jag har haft en platt batteri hä...

Dokumentation Photo Booth

Här är ett projekt som jag satte ihop medan han arbetade på Center för teknisk utbildning och uppsökande verksamhet vid Tufts University. Efter att ha tillbringat tid fundera på hur bättre dokumentera studentarbeten, jag syftade till att skapa ett ve...

Arduino defusable bomb tutorial (Countdown timer)

Varför jag gjorde detta.Det finns andra tutorials för att göra väckarklockor och andra defusable bomber, de är riktigt bra. men de är till komplicerade för mina behov. Detta är en enkel nedräkningen och booom bomb.Så om du letar efter är en enkel att...