Inhoudsopgave:

Arduino UNO (menu's en functies maken): 4 stappen
Arduino UNO (menu's en functies maken): 4 stappen

Video: Arduino UNO (menu's en functies maken): 4 stappen

Video: Arduino UNO (menu's en functies maken): 4 stappen
Video: Как использовать SSD1306 128x32 OLED-дисплей I2C с кодом Arduino 2024, December
Anonim
Arduino UNO (menu's en functies maken)
Arduino UNO (menu's en functies maken)
Arduino UNO (menu's en functies maken)
Arduino UNO (menu's en functies maken)

In deze instructable zullen we onderzoeken hoe we menu's kunnen maken, de temperatuur van een TC74A0-sensor kunnen lezen en "waarden" (in dit geval mobiele telefoonnummers) kunnen weergeven op een manier die oneindig is, maar beperkt tot het ingebouwde geheugen van de Arduino.

We zullen gebruiken

-Arrays

-LCD-scherm

-Toetsenblok

Gebruikershandleiding opgenomen in de laatste stap.

Stap 1: Componenten

Arduino Uno

· 4x4 toetsenbord

· TC74A0 digitale temperatuursensor

· I2c 16x2 LCD-module

· 16x2 liquid crystal display

· Overbruggingsdraden

· Broodplank

· Persoonlijke computer

· Arduino IDE

· Overdrachtskabel

Stap 2: Componentbedrading

TEMP SENSOR EN LCD AANGESLOTEN OP DEZELFDE LIJN MET SDA EN SCL (A4, A5)

LCD (I2c-module)

o SDA naar A5 op Arduino

o SCL naar A4 op Arduino

o VCC naar 5V op Arduino

o GND naar GND op Arduino

· 4 x 4 toetsenbord

o Pin 1 – 8 op toetsenbord aangesloten op respectievelijk pin 9 – 2 op Arduino

TC74A0 temperatuursensor

o TC74A0 pin 2 naar SDA op Arduino

o TC74A0 pin 3 naar GND op Arduino

o TC74A0 pin 4 naar SCL op Arduino

o TC74A0 pin 5 tot 5V op Arduino

Stap 3: Coderen

#include //Includes bibliotheken bij het compileren

#erbij betrekken

#erbij betrekken

#define Password_Length 5

#define Command_Length 3

#define CellNumber 10

int gebruikers = 0;

int-weergave = 0;

int adres = 72; //tc74a0 ADRES

int I = 0;

int GEBRUIKER;

intX = 0;

int XY = 0;

int-temp;

int tempPre = 0;

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

char Gegevens [Wachtwoord_Lengte];

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

char ExitData [Command_Lenght]; //

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

char MenuItem;

char CELLArrayA[10];

char CELLArrayB[10];

char CELLArrayC[10];

const byte RIJEN = 4; //vier rijen

constbyte COLS = 4; //vier kolommen

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 [ROWS] [COLS] = //INITIATING TOETSENBORD

{

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

};

Toetsenbord customKeypad = Toetsenbord (makeKeymap (hexaKeys), rowPins, colPins, RIJEN, COLS);

ongeldige setup()

{

Serieel.begin(9600); //dit maakt de seriële monitor

Draad.begin(); //dit maakt een Wire-object

lcd.begin (16, 2);

lcd.achtergrondverlichting();

lcd.wissen();

lcd.setCursor(0, 0);

lcd.print("Even geduld a.u.b. 3"); //LADEN SCHERM

vertraging (1000);

lcd.wissen();

lcd.setCursor(0, 0);

lcd.print("Even geduld a.u.b. 2");

vertraging (1000);

lcd.wissen();

lcd.setCursor(0, 0);

lcd.print("Even geduld a.u.b. 1");

vertraging (300);

lcd.wissen();

String myString = "ARDUINO INSTRUCTABLE";

lcd.setCursor(2, 2);

lcd.print(mijnString);

vertraging (2500);

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

{

lcd.scrollDisplayLeft();

vertraging (300);

}

lcd.wissen();

lcd.print("Voer wachtwoord in");

}

lege lus()

{

schakelaar (Display) // WAAR IN HET HOOFDMENU ZIJN WE

{ // HEEFT DE GEBRUIKER OP A, B, C, D GEDRUKT

geval 0:

{

Wachtwoord();

}

pauze;

zaak 1:

{

lcd.wissen();

lcd.setCursor(0, 1);

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

lcd.setCursor(0, 0);

lcd.print("Hoofdmenu");

Weergave = 2;

vertraging (100);

pauze;

}

geval 2:

{

char customKey = customKeypad.getKey();

schakelaar (customKey)

{

geval 'A':

{

Serial.println ("A werd ingedrukt");

WinkelGebruiker();

pauze;

}

geval 'B':

{

Serial.println ("B werd ingedrukt");

if (gebruikers == 0) {

lcd.wissen();

lcd.print("GEEN OPGESLAGEN GEBRUIKERS");

vertraging (3000);

lcd.wissen();

Weergave = 1;

pauze;

}

Gebruikers weergeven(); pauze;

}

geval 'C':

{

Serial.println ("C werd ingedrukt"); //GEBRUIKT TIJDENS HET TESTEN

int ext = 0;

terwijl (!ext) {

char ch;

temp = TempMenu();

if (temp != tempPre) {

lcd.wissen();

lcd.print("Temparatuur");

lcd.setCursor(0, 1);

lcd.afdruk(temp);

lcd.print(" C");

tempPre = temp;

vertraging (500);

}

ch = customKeypad.getKey();

if (ch == '*') // VERLAAT TEMPERATUURMENU (indien * INGEDRUKT)

{

ext = 1;

lcd.wissen();

Weergave = 1;

}

}

pauze;

TempMenu();

pauze;

}

geval 'D':

{

lcd.wissen();

lcd.setCursor(0, 0);

lcd.print("NUA PRAC");

lcd.setCursor(0, 1);

lcd.print("JB SCHOEMAN");

vertraging (3000);

lcd.wissen();

lcd.setCursor(0, 0);

lcd.print("MEI 2019");

lcd.setCursor(0, 1);

lcd.print("CC OOSTHUIZEN");

vertraging (3000);

lcd.wissen();

Weergave = 1;

}

}

}

}

}

// AANGEPASTE FUNCTIES OM WAARDEN OF PROCEDURES TE BELLEN

ongeldig wachtwoord()

{

char customKey = customKeypad.getKey();

if (customKey) // zorgt ervoor dat een toets daadwerkelijk wordt ingedrukt, gelijk aan (customKey != NO_KEY)

{

Data[data_count] = customKey; // sla char op in gegevensarray

lcd.setCursor(data_count, 1); // verplaats de cursor om elk nieuw teken weer te geven

lcd.print("*"); // print char bij genoemde cursor

data_count++; // verhoog de gegevensarray met 1 om nieuwe tekens op te slaan, houd ook het aantal ingevoerde tekens bij

}

if (data_count == Password_Lenght-1) // als de array-index gelijk is aan het aantal verwachte tekens, vergelijk dan gegevens met master

{

lcd.wissen();

lcd.setCursor(0, 0);

lcd.print("Wachtwoord is ");

if(!strcmp(Data, Master)) // gelijk aan (strcmp(Data, Master) == 0)

{

lcd.print("Goed");

lcd.wissen();

Weergave = 1;

}

anders

lcd.print("Slecht");

delay(1000);// 1 seconde vertraging toegevoegd om ervoor te zorgen dat het wachtwoord volledig op het scherm wordt weergegeven voordat het wordt gewist.

lcd.wissen();

Verwijder gegevens();

lcd.wissen();

lcd.setCursor(0, 0);

lcd.print("Voer wachtwoord in");

}

}

int TempMenu()

{

Wire.beginTransmission (adres);

Draad.schrijven(0);

Wire.endTransmission();

Wire.requestFrom(adres, 1);

while (Draad.beschikbaar() == 0);

int c = Draad.lezen();

terug c;

}

ongeldig clearData()

{

while(data_count !=0)

{ // Dit kan voor elke arraygrootte worden gebruikt, Gegevens[data_count--] = 0; // wis array voor nieuwe gegevens

}

}

void StoreUser()

{

int ext = 0;

int gebruiker;

char ch;

terwijl (!ext) {

lcd.wissen();

lcd.print("Voer Gebruiker in");

gebruiker = gebruikers + 1;

lcd.print(gebruiker);

int x = 0;

terwijl (!x) {

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

ch = customKeypad.waitForKey();

lcd.setCursor(i, 1);

lcd.print(ch);

userNum[gebruiker - 1] = ch;

}

vertraging (500);

lcd.wissen();

lcd.print("Doorgaan");

lcd.setCursor(0, 1);

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

ch = customKeypad.waitForKey();

als (ch == '*') {

x = 1;

}

if (ch == '#') {

x = 1;

ext = 1;

lcd.wissen();

Weergave = 1;

}

}

gebruikers++;

}

}

void DisplayUsers()

{

lcd.wissen();

voor (int i = 0; i < gebruikers; i++) {

lcd.print("Opgeslagen gebruiker");

lcd.print(i + 1);

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

lcd.setCursor(u, 1);

lcd.print(userNum[u]);

}

vertraging (2000);

lcd.wissen();

Weergave = 1;

}

}

Stap 4: GEBRUIKERSHANDLEIDING

1. Bij het inschakelen van het project verschijnt een laad- of welkomstscherm.

2. Een “Enter Password” scherm verschijnt, in dit scherm kunt u 4 karakters, letters of cijfers invoeren, het juiste wachtwoord is: 5466, hiermee krijgt u toegang tot het hoofdmenu.

3. Na het invoeren van het juiste wachtwoord, verschijnt het hoofdmenu met 4 mogelijke opties om door de verschillende beschikbare functies te navigeren.

· A – Voer mobiele telefoonnummers van gebruikers in.

o Voer 10 cijfers in om een gebruiker op te slaan in het systeem

o Nadat 10 cijfers zijn ingevoerd, drukt u op " * " om meer gebruikers toe te voegen of drukt u op "#" om terug te gaan naar het hoofdmenu

· B – Toon opgeslagen gebruikers

o De gebruikers scrollen langs het scherm, ze worden elk 3 seconden weergegeven, zodra alle gebruikers worden weergegeven, wordt de pagina gesloten en keert u terug naar het hoofdmenu.

o Als er geen gebruikers zijn toegevoegd in menu-optie A, wordt " GEEN OPGESLAGEN GEBRUIKERS" weergegeven.

· C – Geeft live temperatuur weer

o Druk op “* “om terug te gaan naar het hoofdmenu

· D – Korte tekst weergeven

o Toont de naam van de maker en het onderwerp waarvoor het is samengesteld met een datum.

Aanbevolen: