Obsah:
Video: Arduino UNO (vytváření nabídek a funkcí): 4 kroky
2024 Autor: John Day | [email protected]. Naposledy změněno: 2024-01-30 08:22
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:
Joystickem ovládaný invalidní vozík s funkcí sledování překážek: 3 kroky (s obrázky)
Joystickem ovládaný invalidní vozík s funkcí sledování překážek: Aby se lidem s tělesným postižením usnadnila bezpečná jízda, ke sledování překážek přítomných na cestě se používá ultrazvukový senzor. Na základě pohybu joysticku budou motory pohánět invalidní vozík v jakýchkoli čtyřech směrech a rychlosti v každém
Dálkově ovládaná domácí aplikace s funkcí paměti: 4 kroky
Aplikace Remote Contrlolled Home s funkcí paměti: pomocí tohoto obvodu můžeme ovládat 4 relé pomocí dálkového ovladače ir a pomocí funkce eeprom si bude pamatovat poslední stav relé i při ztrátě napájení
Dálkové ovládání s povolenou funkcí Alexa (pomocí WEMO D1 Mini): 3 kroky
Alexa Enabled Remote Control (using WEMO D1 Mini): Toto je aktualizovaná verze předchozího příspěvku: https: //www.instructables.com/id/Voice-Activated-R..V předchozí verzi jsem použil Geetech hlasový modul pro ovládání běžného dálkového ovladače typu garážového vrat. V tomto pokynu jsem nahradil vo
6 let stará tvorba základního semaforu s funkcí Scratch pro Arduino: 3 kroky
6 let staré Vytvoření základního semaforu s funkcí Scratch pro Arduino: Můj syn už byl zvědavý na mé projekty Arduino. Chvíli hrál se Snap Circuits a LEGOHe také začal stavět nějaké Scratch projekty. Bylo jen otázkou času, kdy si zahrajeme se Scratch pro Arduino. Toto je náš první projekt. Ob
Generátor funkcí: 4 kroky
Generátor funkcí: Ahoj všichni, potřebujete levný generátor funkcí? Nechcete si ho koupit ….? …. můžete si jej vyrobit z tohoto tutoriálu ….. Generátor funkcí je něčí potřeba …. Ve většině projektu … jsem ho použil k výrobě modulu bezdrátového přenosu energie