Obsah:

Arduino UNO (vytváření nabídek a funkcí): 4 kroky
Arduino UNO (vytváření nabídek a funkcí): 4 kroky

Video: Arduino UNO (vytváření nabídek a funkcí): 4 kroky

Video: Arduino UNO (vytváření nabídek a funkcí): 4 kroky
Video: PROGRAMOVÁNÍ ARDUINA #1 2024, Červenec
Anonim
Arduino UNO (vytváření nabídek a funkcí)
Arduino UNO (vytváření nabídek a funkcí)
Arduino UNO (vytváření nabídek a funkcí)
Arduino UNO (vytváření nabídek a funkcí)

V tomto instruktážním programu budeme zkoumat, jak vytvářet nabídky, číst teplotu ze snímače TC74A0 a zobrazovat „hodnoty“(v tomto případě čísla mobilních telefonů) způsobem, který je nekonečný, ale omezený na palubní paměť arduino.

Budeme používat

-Pole

-Displej z tekutých krystalů

-Klávesnice

Uživatelská příručka je součástí posledního kroku.

Krok 1: Součásti

Arduino Uno

· Klávesnice 4x4

· Digitální teplotní senzor TC74A0

· Modul LCD I2c 16x2

· Displej z tekutých krystalů 16x2

· Propojovací vodiče

· Breadboard

· Osobní počítač

· Arduino IDE

· Přenosový kabel

Krok 2: Zapojení komponent

SNÍMAČ TEPLOTY A LCD PŘIPOJEN NA STEJNOU LINE K SDA A SCL (A4, A5)

LCD (modul I2c)

o SDA až A5 na Arduinu

o SCL na A4 na Arduinu

o VCC až 5V na Arduinu

o GND až GND na Arduinu

· Klávesnice 4 x 4

o Pin 1 - 8 na klávesnici připojený ke kolíku 9 - 2 na Arduinu

Teplotní čidlo TC74A0

o TC74A0 pin 2 na SDA na Arduinu

o TC74A0 pin 3 na GND na Arduinu

o TC74A0 pin 4 do SCL na Arduinu

o TC74A0 pin 5 až 5V na Arduinu

Krok 3: Kód

#include // Zahrnuje knihovny při kompilaci

#zahrnout

#zahrnout

#define Password_Lenght 5

#define Command_Lenght 3

#define CellNumber 10

int uživatelé = 0;

int Zobrazení = 0;

int adresa = 72; // adresa tc74a0

int I = 0;

int UŽIVATEL;

int X = 0;

int XY = 0;

int temp;

int tempPre = 0;

char userNum [10] [10] = {{}, {}, {}};

char Data [Heslo_Délka];

char Master [Password_Lenght] = "5466"; //HESLO

char ExitData [Command_Lenght]; //

char Master1 [Command_Lenght] = "**"; //

char MenuItem;

char CELLArrayA [10];

char CELLArrayB [10];

char CELLArrayC [10];

konstantní bajty Řádky = 4; // čtyři řádky

konstantní bajt COLS = 4; // čtyři sloupce

byte rowPins [ROWS] = {5, 4, 3, 2};

byte colPins [COLS] = {9, 8, 7, 6};

byte data_count = 0, master_count = 0;

bool Pass_is_good;

LiquidCrystal_I2C lcd (0x26, 16, 2);

char hexaKeys [ŘÁDKY] [COLS] = // INICIATING KEYPAD

{

{'1', '2', '3', 'A'}, {'4', '5', '6', 'B'}, {'7', '8', '9', 'C'}, {'*', '0', '#', 'D'}

};

Keypad customKeypad = Klávesnice (makeKeymap (hexaKeys), rowPins, colPins, ROWS, COLS);

neplatné nastavení ()

{

Serial.begin (9600); // tím se vytvoří Serial Monitor

Wire.begin (); // tím se vytvoří objekt Wire

lcd.begin (16, 2);

lcd.backlight ();

lcd.clear ();

lcd.setCursor (0, 0);

lcd.print („Počkejte prosím 3“); // LOADING SCREEN

zpoždění (1000);

lcd.clear ();

lcd.setCursor (0, 0);

lcd.print („Počkejte prosím 2“);

zpoždění (1000);

lcd.clear ();

lcd.setCursor (0, 0);

lcd.print ("Počkejte prosím 1");

zpoždění (300);

lcd.clear ();

Řetězec myString = "ARDUINO INSTRUCTABLE";

lcd.setCursor (2, 2);

lcd.print (myString);

zpoždění (2500);

for (int scrollCounter = 0; scrollCounter <24; scrollCounter ++)

{

lcd.scrollDisplayLeft ();

zpoždění (300);

}

lcd.clear ();

lcd.print ("Zadejte heslo");

}

prázdná smyčka ()

{

přepínač (Displej) // KDE V HLAVNÍ NABÍDCE JSME MY

{// UŽIVATEL STLAČIL A, B, C, D

případ 0:

{

Heslo();

}

přestávka;

případ 1:

{

lcd.clear ();

lcd.setCursor (0, 1);

lcd.print ("A B C D");

lcd.setCursor (0, 0);

lcd.print („Hlavní nabídka“);

Zobrazení = 2;

zpoždění (100);

přestávka;

}

případ 2:

{

char customKey = customKeypad.getKey ();

přepínač (customKey)

{

případ 'A':

{

Serial.println ("bylo stisknuto A");

StoreUser ();

přestávka;

}

případ 'B':

{

Serial.println ("B bylo stisknuto");

pokud (uživatelé == 0) {

lcd.clear ();

lcd.print („BEZ ULOŽENÝCH UŽIVATELŮ“);

zpoždění (3000);

lcd.clear ();

Zobrazení = 1;

přestávka;

}

Uživatelé displeje (); přestávka;

}

případ 'C':

{

Serial.println ("C bylo stisknuto"); // POUŽITO BĚHEM TESTOVÁNÍ

int ext = 0;

while (! ext) {

char ch;

temp = TempMenu ();

if (temp! = tempPre) {

lcd.clear ();

lcd.print ("Temparature");

lcd.setCursor (0, 1);

lcd.print (temp);

lcd.print ("C");

tempPre = temp;

zpoždění (500);

}

ch = customKeypad.getKey ();

if (ch == ' *') // EXIT TEMPERATURE MENU (if * PRESSED)

{

ext = 1;

lcd.clear ();

Zobrazení = 1;

}

}

přestávka;

TempMenu ();

přestávka;

}

případ 'D':

{

lcd.clear ();

lcd.setCursor (0, 0);

lcd.print („NUA PRAC“);

lcd.setCursor (0, 1);

lcd.print ("JB SCHOEMAN");

zpoždění (3000);

lcd.clear ();

lcd.setCursor (0, 0);

lcd.print („KVĚTEN 2019“);

lcd.setCursor (0, 1);

lcd.print ("CC OOSTHUIZEN");

zpoždění (3000);

lcd.clear ();

Zobrazení = 1;

}

}

}

}

}

// VLASTNÍ FUNKCE K VOLÁNÍ HODNOT NEBO POSTUPŮ

zrušit heslo ()

{

char customKey = customKeypad.getKey ();

if (customKey) // zajistí, že je klávesa skutečně stisknuta, rovná se (customKey! = NO_KEY)

{

Data [data_count] = customKey; // uložení char do datového pole

lcd.setCursor (data_count, 1); // pohybem kurzoru zobrazíte každý nový znak

lcd.print ("*"); // tisk znaku na uvedeném kurzoru

data_count ++; // přírůstek datového pole o 1 pro uložení nových znaků, sledujte také počet zadaných znaků

}

if (data_count == Password_Lenght-1) // if the array index is equal to the number of expect chars, compare data to master

{

lcd.clear ();

lcd.setCursor (0, 0);

lcd.print („Heslo je“);

if (! strcmp (Data, Master)) // rovná se (strcmp (Data, Master) == 0)

{

lcd.print („dobrý“);

lcd.clear ();

Zobrazení = 1;

}

jiný

lcd.print („špatný“);

delay (1000); // přidáno 1sekundové zpoždění, aby bylo zajištěno úplné zobrazení hesla na obrazovce, než bude vymazáno.

lcd.clear ();

vyčistit data();

lcd.clear ();

lcd.setCursor (0, 0);

lcd.print ("Zadejte heslo");

}

}

int TempMenu ()

{

Wire.beginTransmission (adresa);

Wire.write (0);

Wire.endTransmission ();

Wire.requestFrom (adresa, 1);

while (Wire.available () == 0);

int c = Wire.read ();

návrat c;

}

neplatné clearData ()

{

while (data_count! = 0)

{// To lze použít pro libovolnou velikost pole, Data [data_count--] = 0; // vymazání pole pro nová data

}

}

zrušit StoreUser ()

{

int ext = 0;

int uživatel;

char ch;

while (! ext) {

lcd.clear ();

lcd.print („Zadejte uživatele“);

uživatel = uživatelé + 1;

lcd.print (uživatel);

int x = 0;

while (! x) {

pro (int i = 0; i <10; i ++) {

ch = customKeypad.waitForKey ();

lcd.setCursor (i, 1);

lcd.print (ch);

userNum [uživatel - 1] = ch;

}

zpoždění (500);

lcd.clear ();

lcd.print („Pokračovat“);

lcd.setCursor (0, 1);

lcd.print ("* ano # ne");

ch = customKeypad.waitForKey ();

if (ch == '*') {

x = 1;

}

if (ch == '#') {

x = 1;

ext = 1;

lcd.clear ();

Zobrazení = 1;

}

}

uživatelé ++;

}

}

zrušit DisplayUsers ()

{

lcd.clear ();

pro (int i = 0; i <uživatelé; i ++) {

lcd.print („uložený uživatel“);

lcd.print (i + 1);

pro (int u = 0; u <10; u ++) {

lcd.setCursor (u, 1);

lcd.print (userNum [u]);

}

zpoždění (2000);

lcd.clear ();

Zobrazení = 1;

}

}

Krok 4: UŽIVATELSKÁ PŘÍRUČKA

1. Po zapnutí projektu se zobrazí načítací nebo uvítací obrazovka.

2. Zobrazí se obrazovka „Enter Password“, která vám umožní zadat 4 znaky, písmena nebo čísla, správné heslo je: 5466, což vám umožní přístup do hlavní nabídky.

3. Po zadání správného hesla se zobrazí hlavní nabídka se 4 možnými možnostmi procházení různých dostupných funkcí.

· A - Zadejte telefonní čísla uživatelů.

o Zadejte 10 číslic pro uložení uživatele do systému

o Po zadání 10 číslic stiskněte „ *“pro přidání dalších uživatelů, nebo stiskněte „#“pro návrat zpět do hlavní nabídky

· B - Zobrazení uložených uživatelů

o Uživatelé se budou posouvat po obrazovce, zobrazí se každý na 3 sekundy, jakmile se zobrazí všichni uživatelé, stránka se zavře a vrátí se do hlavní nabídky.

o Pokud v nabídce A nebyli přidáni žádní uživatelé, zobrazí se „NO SAVED USERS“.

· C - Zobrazuje živou teplotu

o Stisknutím „ *“se vrátíte zpět do hlavní nabídky

· D - Zobrazení krátkého textu

o Zobrazuje jméno tvůrce a předmět, pro který byl sestaven, s datem.

Doporučuje: