Inhoudsopgave:
Video: Arduino UNO (menu's en functies maken): 4 stappen
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:17
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:
Hoe u IOT-functies aan uw projecten kunt toevoegen: 5 stappen
Hoe IOT-functies aan uw projecten toe te voegen: Niets is beter dan een doe-het-zelf-project te maken dat een commercieel product vervangt dat u nuttig vindt. Nou, eigenlijk is er iets beters dan dat. IOT-mogelijkheden toevoegen aan uw project. Als het op automatisering aankomt, raken beginners meestal in paniek
Arduino minder bekende functies: 9 stappen
Arduino minder bekende functies: dit is meer een lijst van niet zo vaak genoemde functies van Arduino-platforms die doorgaans worden gebruikt (bijv. Uno, Nano). Deze vermelding moet als referentie dienen wanneer u die functies moet opzoeken en het woord moet verspreiden. Bekijk de code om te zien
Arduino-toongenerator zonder bibliotheek- of seriële functies (met onderbrekingen) - Ajarnpa
Arduino-toongenerator zonder bibliotheek- of seriële functies (met onderbrekingen): dit is niet iets waar ik normaal gesproken een instructie over zou maken, ik geef de voorkeur aan mijn metaalbewerking, maar aangezien ik een student elektrotechniek ben en een les over microcontrollers moet volgen ( Embedded Systems Design), dacht ik dat ik een instructable zou maken op een van mijn p
Een Instructable Robot Met Veel Functies: 8 Stappen (met Afbeeldingen)
Een Instructable Robot Met Veel Functies: Hallo vrienden, in deze instructable ga ik een fantastische robot introduceren die de volgende taken kan uitvoeren:- Het kan bewegen en de besturing van zijn bewegingen wordt gedaan door Bluetooth2- Het kan schoonmaken als een stofzuiger3- Het kan nummers van Bluetoot afspelen
"Wise Clock 2" (Arduino-gebaseerde wekker met veel extra functies) in elkaar zetten: 6 stappen
"Wise Clock 2" monteren (Arduino-gebaseerde wekker met veel extra functies): Deze tutorial laat zien hoe je de kit voor Wise Clock 2, een open source (hardware en software) project, in elkaar zet. Een complete Wise Clock 2-kit kan hier worden gekocht. Samenvattend, dit is wat Wise Clock 2 kan doen (met de huidige open source software