Arduino UNO (skapa menyer och funktioner): 4 steg
Arduino UNO (skapa menyer och funktioner): 4 steg
Anonim
Arduino UNO (skapa menyer och funktioner)
Arduino UNO (skapa menyer och funktioner)
Arduino UNO (skapa menyer och funktioner)
Arduino UNO (skapa menyer och funktioner)

I den här instruktionsboken kommer vi att utforska hur man skapar menyer, läsa temperatur från en TC74A0 -sensor och visa "värden" (i detta fall mobiltelefonnummer) på ett sätt som är oändligt, men begränsat till arduinoerna ombord.

Vi kommer att använda

-Arrays

-LCD-skärm

-Knappsats

Användarhandbok ingår i det sista steget.

Steg 1: Komponenter

Arduino Uno

· 4x4 knappsats

· TC74A0 digital temperaturgivare

· I2c 16x2 LCD -modul

· 16x2 flytande kristallskärm

· Bygelkablar

· Brödbräda

· Personlig dator

· Arduino IDE

· Överföringskabel

Steg 2: Komponentledningar

TEMP SENSOR OCH LCD ANSLUTAD PÅ SAMMA LINJE TILL SDA OCH SCL (A4, A5)

LCD (I2c -modul)

o SDA till A5 på Arduino

o SCL till A4 på Arduino

o VCC till 5V på Arduino

o GND till GND på Arduino

· 4 x 4 knappsatser

o Pin 1 - 8 på knappsatsen ansluten till pin 9 - 2 på Arduino respektive

TC74A0 temp sensor

o TC74A0 stift 2 till SDA på Arduino

o TC74A0 stift 3 till GND på Arduino

o TC74A0 stift 4 till SCL på Arduino

o TC74A0 stift 5 till 5V på Arduino

Steg 3: Kod

#include // Inkluderar bibliotek vid kompilering

#omfatta

#omfatta

#define Password_Lenght 5

#define Command_Lenght 3

#define CellNumber 10

int användare = 0;

int Display = 0;

int -adress = 72; // tc74a0 ADRESS

int I = 0;

int ANVÄNDARE;

int X = 0;

int XY = 0;

int temp;

int tempPre = 0;

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

char Data [Password_Lenght];

char Master [Password_Lenght] = "5466"; //LÖSENORD

char ExitData [Command_Lenght]; //

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

char MenuItem;

röding CELLArrayA [10];

röding CELLArrayB [10];

röding CELLArrayC [10];

const byte RADER = 4; // fyra rader

const byte COLS = 4; // fyra kolumner

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 [RADER] [COLS] = // INITIERANDE KNAPP

{

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

};

Tangentbord customKeypad = Tangentbord (makeKeymap (hexaKeys), rowPins, colPins, ROWS, COLS);

void setup ()

{

Serial.begin (9600); // detta skapar Serial Monitor

Wire.begin (); // detta skapar ett Wire -objekt

lcd.begin (16, 2);

lcd.backlight ();

lcd.clear ();

lcd.setCursor (0, 0);

lcd.print ("Vänta 3"); // LADDNINGSSKÄRM

fördröjning (1000);

lcd.clear ();

lcd.setCursor (0, 0);

lcd.print ("Vänta 2");

fördröjning (1000);

lcd.clear ();

lcd.setCursor (0, 0);

lcd.print ("Vänta 1");

fördröjning (300);

lcd.clear ();

String myString = "ARDUINO INSTRUCTABLE";

lcd.setCursor (2, 2);

lcd.print (myString);

fördröjning (2500);

för (int scrollCounter = 0; scrollCounter <24; scrollCounter ++)

{

lcd.scrollDisplayLeft ();

fördröjning (300);

}

lcd.clear ();

lcd.print ("Ange lösenord");

}

void loop ()

{

switch (Display) // VAR I HUVUDMENYEN ÄR VI

{// GJORDE ANVÄNDAREN TRYCK A, B, C, D

fall 0:

{

Lösenord();

}

ha sönder;

fall 1:

{

lcd.clear ();

lcd.setCursor (0, 1);

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

lcd.setCursor (0, 0);

lcd.print ("Huvudmeny");

Display = 2;

fördröjning (100);

ha sönder;

}

fall 2:

{

char customKey = customKeypad.getKey ();

switch (customKey)

{

fall 'A':

{

Serial.println ("A trycktes");

StoreUser ();

ha sönder;

}

fall 'B':

{

Serial.println ("B trycktes");

om (användare == 0) {

lcd.clear ();

lcd.print ("INGA SPARADE ANVÄNDARE");

fördröjning (3000);

lcd.clear ();

Display = 1;

ha sönder;

}

DisplayUsers (); ha sönder;

}

fall 'C':

{

Serial.println ("C trycktes"); // ANVÄNDAS UNDER TESTNING

int ext = 0;

medan (! 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;

fördröjning (500);

}

ch = customKeypad.getKey ();

if (ch == ' *') // EXIT TEMPERATURE MENU (om * TRYCKT)

{

ext = 1;

lcd.clear ();

Display = 1;

}

}

ha sönder;

TempMenu ();

ha sönder;

}

fall 'D':

{

lcd.clear ();

lcd.setCursor (0, 0);

lcd.print ("NUA PRAC");

lcd.setCursor (0, 1);

lcd.print ("JB SCHOEMAN");

fördröjning (3000);

lcd.clear ();

lcd.setCursor (0, 0);

lcd.print ("MAJ 2019");

lcd.setCursor (0, 1);

lcd.print ("CC OOSTHUIZEN");

fördröjning (3000);

lcd.clear ();

Display = 1;

}

}

}

}

}

// ANPASSADE FUNKTIONER FÖR ATT RINGA VÄRDEN ELLER FÖRFARANDEN

ogiltigt lösenord ()

{

char customKey = customKeypad.getKey ();

om (customKey) // ser till att en tangent faktiskt trycks in, lika med (customKey! = NO_KEY)

{

Data [data_count] = customKey; // lagra röding i data array

lcd.setCursor (data_count, 1); // flytta markören för att visa varje ny tecken

lcd.print ("*"); // skriv ut char vid nämnda markör

data_count ++; // öka datamatrisen med 1 för att lagra ny röding, håll även koll på antalet inmatade tecken

}

om (data_count == Password_Lenght-1) // om arrayindex är lika med antalet förväntade tecken, jämför data med master

{

lcd.clear ();

lcd.setCursor (0, 0);

lcd.print ("Lösenord är");

if (! strcmp (Data, Master)) // lika med (strcmp (Data, Master) == 0)

{

lcd.print ("Bra");

lcd.clear ();

Display = 1;

}

annan

lcd.print ("Dåligt");

delay (1000); // lagt till 1 sekund fördröjning för att se till att lösenordet visas helt på skärmen innan det rensas.

lcd.clear ();

radera data();

lcd.clear ();

lcd.setCursor (0, 0);

lcd.print ("Ange lösenord");

}

}

int TempMeny ()

{

Wire.beginTransmission (adress);

Wire.write (0);

Wire.endTransmission ();

Wire.requestFrom (adress, 1);

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

int c = Wire.read ();

retur c;

}

void clearData ()

{

medan (data_count! = 0)

{// Detta kan användas för valfri matrisstorlek, Data [data_count--] = 0; // rensa array för nya data

}

}

void StoreUser ()

{

int ext = 0;

int användare;

char ch;

medan (! ext) {

lcd.clear ();

lcd.print ("Ange användare");

användare = användare + 1;

lcd.print (användare);

int x = 0;

medan (! x) {

för (int i = 0; i <10; i ++) {

ch = customKeypad.waitForKey ();

lcd.setCursor (i, 1);

lcd.print (ch);

userNum [användare - 1] = ch;

}

fördröjning (500);

lcd.clear ();

lcd.print ("Fortsätt");

lcd.setCursor (0, 1);

lcd.print ("* ja # nej");

ch = customKeypad.waitForKey ();

om (ch == '*') {

x = 1;

}

om (ch == '#') {

x = 1;

ext = 1;

lcd.clear ();

Display = 1;

}

}

användare ++;

}

}

void DisplayUsers ()

{

lcd.clear ();

för (int i = 0; i <användare; i ++) {

lcd.print ("Sparad användare");

lcd.print (i + 1);

för (int u = 0; u <10; u ++) {

lcd.setCursor (u, 1);

lcd.print (userNum [u]);

}

fördröjning (2000);

lcd.clear ();

Display = 1;

}

}

Steg 4: ANVÄNDARGUIDE

1. När du slår på projektet visas en laddnings- eller välkomstskärm.

2. En "Ange lösenord" -skärm visas, denna skärm låter dig skriva in 4 tecken, bokstäver eller siffror, rätt lösenord är: 5466, detta ger dig tillgång till huvudmenyn.

3. När du anger rätt lösenord visas huvudmenyn med fyra möjliga alternativ för att navigera mellan de olika tillgängliga funktionerna.

· A - Ange användarens mobiltelefonnummer.

o Ange 10 siffror för att spara en användare i systemet

o När 10 siffror har skrivits in trycker du på " *" för att lägga till fler användare, eller tryck på "#" för att gå tillbaka till huvudmenyn

· B - Visa sparade användare

o Användarna kommer att rulla förbi skärmen, de visas i 3 sekunder vardera, så snart alla användare visas stängs sidan och återgår till huvudmenyn.

o Om inga användare har lagts till i menyalternativ A, visas "INGA SPARADE ANVÄNDARE".

· C - Visar levande temperatur

o Tryck på “*” för att gå tillbaka till huvudmenyn

· D - Visa kort text

o Visar skaparens namn och ämnet det sammanställdes för med ett datum.