Neįprastas „Arduino“ derinys
Norėdami jį surinkti, turite naudoti specialų stačiakampių impulsų įtaisą, taip pat kelis skaitiklius ir krūvą. Bet gatavas prietaisas turėtų didelius matmenis ir jį naudoti būtų nepatogu. Paprastai tokios mintys persekioja. Pirmasis žingsnis įgyvendinant svajonę buvo programos „Arduino“ sukūrimas. Jis veiks kaip kombinuotas užraktas. Norėdami jį atidaryti, turėsite paspausti ne vieną, o kelis klavišus ir tai padaryti vienu metu. Paruošta schema atrodo taip:
Vaizdo kokybė nėra pati geriausia, tačiau ryšys užmegztas su žeme, D3, D5, D7, D9 ir D11.
Kodas pateiktas žemiau:
const int ina = 3;
const int inb = 5;
const int inc = 9;
const int ledPin = 13;
int i = 1000;
baitas a = 0;
baitas b = 0;
baitas c = 0;
baitas d = 0;
nepasirašytas ilgas laikas = 0; // nepamiršk visko, kas užima milis () reikšmę
nepasirašyta ilga temp = 0; // laikyti ilgai nepasirašytą
baitų keya [] = {0, 0, 0, 0, 0, 0, 0, 0}; // kodai iš tikrųjų
baitų keyb [] = {1, 1, 1, 1, 0, 1, 0, 0};
baitų klavišas [] = {1, 0, 1, 0, 1, 1, 1, 0};
baitas k = 0;
negaliojanti sąranka () {
pinMode (ina, INPUT_PULLUP); // 3 įėjimai, sujungti su mygtukais
pinMode (inb, INPUT_PULLUP);
pinMode (įsk., INPUT_PULLUP);
pinMode (ledPin, OUTPUT); // įmontuotas šviesos diodas 13-ajame kaištyje
„pinMode“ (7, IŠĖJIMAS);
pinMode (11, OUTPUT);
„digitalWrite“ (7, LOW); // pakeisti žemę
„digitalWrite“ (11, LOW);
laikas = milis (); // reikėjo suskaičiuoti laiką
}
void blinktwice () {// dvigubai mirksintis šviesos diodas
„digitalWrite“ (ledPin, HIGH);
vėlavimas (100);
„digitalWrite“ (ledPin, LOW);
vėlavimas (100);
„digitalWrite“ (ledPin, HIGH);
vėlavimas (100);
„digitalWrite“ (ledPin, LOW);
vėlavimas (200);
}
tuščia kilpa () {
if (k == 0) {
blinktwice (); // eilutės kodas
}
if (k == 8) {
„digitalWrite“ (ledPin, HIGH);
vėlavimas (3000);
k yra 0;
}
a = digitalRead (ina); // skaityti signalo lygius iš mygtukų - paspausti / nespausti
b = „digitalRead“ (įvestis);
c = „digitalRead“ (įsk.);
vėlavimas (100); // next if - apsauga nuo klaidingų teigiamų dalykų, jūs negalite naudoti
if ((digitalRead (ina) == a) && (digitalRead (inb) == b) && (digitalRead (inc) == c)) {
if (a == keya [k]) {
if (b == keyb [k]) {
if (c == keyc [k]) {
k ++;
}
}
}
}
if (k == 1) {
if (d == 0) {
laikas = milis ();
d ++;
}
}
temp = milis ();
temp = temp - laikas;
if (temp> 10000) {
k yra 0;
d yra 0;
laikas = milis ();
}
}
Norint išvengti nereikalingų klausimų apie kodą, reikėtų paaiškinti kai kuriuos dalykus. Sąrankos funkcija naudojama priskirti prievadus. Kita funkcija yra „Input_Pullup“, kuri yra būtina norint padidinti kaiščio įtampą 5 V. Tai atliekama naudojant rezistorių. Dėl šios priežasties įvairūs trumpi jungimai neįvyks. Didesniam patogumui rekomenduojama naudoti „blinktwice“ funkciją. Apskritai, kurdami įvairias programas, turite išbandyti kitas funkcijas.
Paskyrus funkcijas, signalas nuskaitomas iš prievadų. Jei paspausite mygtuką, tada jis bus pažymėtas skaičiumi 1, o jei ne - 2. Kitas, visų verčių analizė. Pavyzdžiui, buvo toks derinys kaip 0,1,1. Tai reiškia, kad paspaudžiamas pirmasis klavišas, o kiti du - ne. Jei visos vertės yra tikros, tada tinka ir 8 sąlyga. Tai liudija uždegus LED lemputę priekiniame skydelyje. Toliau turite įvesti tam tikrą kodą, kuris tarnaus durims atidaryti.
Paskutiniai kodo elementai naudojami skaitiklių reikšmėms atkurti. Tokia funkcija atliekama, jei nuo paskutinio mygtuko paspaudimo praėjo daugiau nei 10 sekundžių.Neturėdami šio kodo, galėtumėte pereiti visus įmanomus variantus, nors jų yra labai daug. Sukūrę šį įrenginį, turite jį išbandyti.