Super Simple Arduino toetsenblok (de harde manier) (7 / 8 stap)

Stap 7: Codering het tot - Setup en lus


/ / Hier setup wij hoe de pinnen zal functioneren (input/output), starten de LCD en aanwijzen die
PIN wij de servo gekoppeld hebben aan. We zullen ook beginnen met de servo op 0 graden.

VOID Setup {}
pinMode (button1, INPUT);
pinMode (button2, INPUT);
pinMode (button3, INPUT);
pinMode (button4, INPUT);
pinMode (button5, INPUT);
pinMode (rood, OUTPUT);
pinMode (groen, uitvoer);
LCD.begin(16,2);
lcd.setCursor(0,0);
LCD.Print (": Voer:");
Serial.begin(9600);     / / Voor debug. Zie visueel de knooppersen.
myservo.attach(9);
myservo.write(0);
}

Beginnen met het lezen van de staat van de pinnen.

void loop {}
gebracht1 = digitalRead(button1);
State2 = digitalRead(button2);
state3 = digitalRead(button3);
staat vallen4 = digitalRead(button4);
state5 = digitalRead(button5);

Als de status van de knop niet gelijk is aan zijn vorige staat (1 = hoog, 0 = laag), die in principe
betekent, werd het gewoon ingedrukt of losgelaten? Als de status van de knop hoog (1 is)
We verhogen de telling van die knop.

Als (gebracht1! = prev1) {}
delay(10);
Als (gebracht1 == HIGH) {}
count1 ++;
}
/ / Let op de delay(10). Dit is belangrijk. Het vergemakkelijkt een ontdendering. Knoppen hebben een intert
bounciness. Je kunt niet het voelen, maar wanneer u op een knop drukt, maakt het soms
meerdere malen contact, en de Arduino zal zien dat als meerdere persen. De vertraging
Hiermee onderbreekt u het programma voor 10 milliseconden, waardoor de knop om te "regelen", en vervolgens
wordt hervat. 10 milliseconden moeten lang genoeg zijn, maar meer aanpassen indien nodig.

else {}
}

Wij doen dat voor elke knop.

Als (state2! = prev2) {}
delay(10);
Als (state2 == HIGH) {}
count2 ++;
}
else {}
}

Als (state3! = prev3) {}
delay(10);
Als (state3 == HIGH) {}
count3 ++;
}
else {}
}

Als (staat vallen4! = prev4) {}
delay(10);
Als (staat vallen4 == HIGH) {}
count4 ++;
}
else {}
}

Als (state5! = prev5) {}
delay(10);
Als (state5 == HIGH) {}
count5 ++;
}
else {}
}

Dit zal helpen met het bijhouden van wat soort acties zijn gaande met
de knoppen. Wanneer de knop wordt ingedrukt, de staat komt niet overeen met
het is vorige staat, met vermelding van een verandering. Hier zetten we de vorige
staat voor de huidige toestand, zodat het moment je duwen of
release, de Arduino weet het, en dienovereenkomstig handelt.


prev1 = gebracht1;
prev2 = state2;
prev3 = state3;
prev4 = staat vallen4;
prev5 = state5;

Toen we de aantekening de omhoog hoe vaak elke knop werd ingedrukt.

totalCount = count1 + count2 + count3 + count4 + count5;

/ / Dit is waar we schrijven een sterretje ("*") op het LCD-telkens wanneer een knop is ingedrukt.

voor (rijen = 0; rijen < totalcount; rijen + 1) {}
lcd.setCursor(rows,1);
LCD.Print("*");
rijen ++;
}

"rijen" is waar de cursor is (van links naar rechts) op het LCD-scherm.
Telkens als een knop is ingedrukt, verhogen we "rijen" met één, en
ingesteld dat als de locatie van de cursor. Dit doen we tot op zekere hoogte (5)
want dat is hoeveel cijfers zijn in onze combinatie.


/ / Nu, als onze totalcount 5 bereikt, zullen we gaan kijken hoe vele malen
elke knop werd ingedrukt. Als het overeenkomt met wat onze vooraf bepaalde combo...

Als (totalcount == 5) {}
Als (count1 == 2 & & count2 == 0 & & count3 == 1 & & count4 == 2 & & count5 == 0) {}
LCD.Clear();
LCD.Print ("CODE GEACCEPTEERDE");  / / Code geaccepteerd!
myservo.write(90);            / / de servo verplaatst naar 90 graden, alsof het ontgrendelen van een deur.
digitalWrite (groen, hoog);   / / groene gelijk goed, dus de groene LED brandt

Zorg ervoor dat de rode die LED blijft uit, als je niet de code rechts de eerste keer krijgt
digitalWrite (rood, laag);
count1 = 0;   / / Alle onze conunters teruggesteld aan 0, begint het proces opnieuw.
count2 = 0;
count3 = 0;
count4 = 0;
count5 = 0;
totalCount = 0;
delay(10000);
LCD.Clear();
lcd.setCursor(0,0);
LCD.Print (": Voer:");   En we zijn terug aan het begin.
myservo.write(0);
digitalWrite (groen, lage);
}
else if (count1! = 2 & & count2! = 0 & & count3! = 1 & & count4! = 2 & & count5! = 0 & & totalcount == 5) {}
LCD.Clear();
lcd.setCursor(0,0);
LCD.Print ('CODE geweigerd');   / / Dit en het deel hieronder zijn waar als de telling van elke knop
digitalWrite (rood, hoge); / / niet gelijk is aan de vooraf vastgestelde tellen, of als het groter dan de graaf is,
digitalWrite (groen, lage); //and het aantal totale persen is gelijk aan 5 (waaruit blijkt dat een 5 cijfer
count1 = 0; / / combinatie is ingevoerd maar klopt) en vervolgens de code is verworpen. Verworpen!
count2 = 0;
count3 = 0;
count4 = 0;
count5 = 0;
totalCount = 0;
delay(5000);
LCD.Clear();
lcd.setCursor(0,0);
LCD.Print (": Voer:");
digitalWrite (rood, laag);
}
anders als (count1 > 2 & & count2 > 0 & & count3 > 1 & & count4 > 2 & & count5 > 0 || totalcount == 5) {}
LCD.Clear();
lcd.setCursor(0,0);
LCD.Print ('CODE geweigerd');
digitalWrite (rood, hoge);
digitalWrite (groen, lage);
count1 = 0;
count2 = 0;
count3 = 0;
count4 = 0;
count5 = 0;
totalCount = 0;
delay(5000);
LCD.Clear();
lcd.setCursor(0,0);
LCD.Print (": Voer:");
digitalWrite (rood, laag);
}
}
}

Gerelateerde Artikelen

Super Simple Arduino Powered Roomba Scheduler

Super Simple Arduino Powered Roomba Scheduler

zoals de meeste mensen die ik sceptisch was over het krijgen van een robot stofzuiger, dus als een proefrit ik dacht dat ik zou kopen de nu verouderde iRobot Roomba 530 die was zwaar voorzien (ze zijn nog steeds beschikbaar in Australië, waaruit blij
Sleutels toe te voegen aan een Arduino Synth de harde manier-het Blacklord: het Organ Donor Project deel 2

Sleutels toe te voegen aan een Arduino Synth de harde manier-het Blacklord: het Organ Donor Project deel 2

(Opmerking-Dit is mijn 20e instructable! Dank aan iedereen volgende en commenting.on mijn projecten en aan de medewerkers die dit mogelijk maken. Deze site heeft zeker maakte me brengen mijn A game aan de workbench.)De Auduino granulaire synth door P
De Super Simple Arduino Weather webserver

De Super Simple Arduino Weather webserver

Uit de gedachten bij http://arduinotronics.blogspot.com/Updates:Warmte-Index toegevoegd & dauwpunt berekeningenLuchtdruk Sensor toegevoegdWind toerentalbewakingZie de nieuwe BME280 combinatie temperatuur, vochtigheid en barometrische druksensor alles
Een eenvoudige knop Tweet de harde manier maken

Een eenvoudige knop Tweet de harde manier maken

er zijn verschillende manieren om een microcontroller tweet. De gemakkelijke methoden komen ruimschoots aan bod in andere instructables.Aansluiten op een computer met een python script of vergelijkbaar.Het verbinden met een gehackte router (nice - je
Laptop koeler staan (de harde manier)

Laptop koeler staan (de harde manier)

Dit is wat ik deed, maar dan gisteren, ter bescherming van mijn laptop...Wees voorzichtig met de instructies en volg die ze stap voor stap voor slagen...Dit is een stand voor gewassen gerechten!Een metalen staan voor mijn laptop de harde manier :)Har
Toegangscontrole met Arduino toetsenblok 4 x 4 + Servo (UPDATE)

Toegangscontrole met Arduino toetsenblok 4 x 4 + Servo (UPDATE)

Hi guys, ik breng een nieuwe instructable voor arduino, toegang beheren met wachtwoord, 4 x 4 toetsenbord en een servo.Zullen we het wachtwoord en toetsenbord librarie gebruiken voor arduino, naast het gebruik van de servo-bibliotheek, maar dit proje
De gekke Wrapper is elliptisch - Gift Wrapping van de harde manier

De gekke Wrapper is elliptisch - Gift Wrapping van de harde manier

Elke kerst bij ons thuis zet de "anonieme" Mad Wrapper giften onder onze boom. De giften in de pakketten zijn over het algemeen onopvallend en heel gewone. Wat is opmerkelijk is de methode waarin de geschenken zijn verpakt. Onder de boom vindt m
Super Simple & Delicious Acorn Squash

Super Simple & Delicious Acorn Squash

dit is mijn favoriete manier om te eten squash. Dit is een super lekker en super eenvoudig recept om te maken. Mensen die niet graag squash meestal eigenlijk graag dit recept. Geniet van!Stap 1: Benodigdheden Ingrediënten:1 Acorn Squash (gehalveerd e
SIMPLE ARDUINO ultrasone SENSOR deur ALARM / bewegings detector NO PIR!!!

SIMPLE ARDUINO ultrasone SENSOR deur ALARM / bewegings detector NO PIR!!!

HALLO IEDEREEN.voordat ik begin, moet u controleren of mijn video als u liever een video tutorialKlik hier om naar mijn kanaal voor meer geweldige projectenVandaag die heb ik besloten dat ik wilde bouwen een alarm voor mijn kamer, toen ik online alle
Carduino - A simple Arduino robotica platform met een eigen bibliotheek

Carduino - A simple Arduino robotica platform met een eigen bibliotheek

dit is, zoals de titel al zegt, een Arduino gebaseerde robotica-platform, met een eigen bibliotheek. De "standaard" model wordt geleverd met twee terug motoren, omni-tweewielers aan de voorkant, en een afstandssensor gemonteerd op de voorzijde.
Arduino toetsenblok + servo control

Arduino toetsenblok + servo control

ik een servo die met behulp van de arduino (ter mijn ziektegeval, freeduino) gecontroleerd met behulp van een toetsenbord. typt u een getal in het toetsenblok. Als er minder dan 180, vervolgens arduino gewijzigd in de hoek van de servomotor die ingan
Hoe om een vinylplaat de harde manier piraat

Hoe om een vinylplaat de harde manier piraat

Een van mijn meest leuke projecten tot nu toe! Ik neem een Johnny Cash heruitgave 7" vinyl record en dupliceren met een siliconen rubber schimmel en vloeibare kunststof. Om heel eerlijk te zijn was ik verbaasd over hoe gedetailleerd de mal aankan als
Twin bed frame - de harde manier

Twin bed frame - de harde manier

heb ik besloten om een bed frame zonder enige eerdere ervaring van timmerwerk.Wat volgde was een 4 weken-project die meer kosten dan het zou moeten hebben, en was veel meer ingewikkeld dan nodig. Het project was vol met fouten die ik bracht ontelbare
Een Simple Arduino gebaseerd lijn volgeling

Een Simple Arduino gebaseerd lijn volgeling

De bescheiden lijn volgeling is een groot voorgerecht project voor degenen krijgen in robotica. In dit instructable gaan we over de stappen die nodig zijn om één te bouwen.Stap 1: Onderdelen & gereedschapOnderdelenlijstAantal 2140 RPM rechte hoek Gea