- Yettel topik
- MIUI / HyperOS topik
- iOS alkalmazások
- Milyen okostelefont vegyek?
- Garmin Forerunner 255 Music - nem csak futóknak
- Samsung Galaxy Z Fold5 - toldozás-foldozás
- Samsung Galaxy S24 Ultra - ha működik, ne változtass!
- Apple Watch Sport - ez is csak egy okosóra
- Samsung Galaxy A54 - türelemjáték
- Xiaomi 13T és 13T Pro - nincs tétlenkedés
Hirdetés
-
Free Play Days 2024 - 17. hét: Railway Empire, Prison Architect
gp Extraként a TramSim: Console Edition című játékot is kipróbálhatják az érdeklődők.
-
Rossz üzlet az EV-kölcsönzés
it Küszködik az EV-kölcsönzés miatt a Hertz Global, még több EV-t adnak el.
-
Lenovo Essential Wireless Combo
lo Lehet-e egy billentyűzet karcsú, elegáns és különleges? A Lenovo bebizonyította, hogy igen, de bosszantó is :)
-
Mobilarena
Arduino hardverrel és szoftverrel foglakozó téma. Minden mikrovezérlő ami arduinoval programozható, és minden arduino program, board, és hardverrel kapcsolatos kérdések helye.
Új hozzászólás Aktív témák
-
Daszkalosz19
aktív tag
Sziasztok!
Használ valaki arduino megán TFT 320QVT 9341 +shield-et?
Nekem nem akar semmilyen kódót elfogadni,vsak a fehér kijelző van. -
Daszkalosz19
aktív tag
válasz Gergosz2 #3115 üzenetére
Shieldel raktam össze,másféleképpen nem is lehet összedugni,persze azért még ott van a lábkiosztás.
Utft mappán belűl is rengeteg lehetőség van,arduino avr,chipkit stb.
Arduino avr-t választottam és azon is belűl még sok más van. Touch,button,demo stb
Mindegyiket betöltöttem de semmi.
Ha esetleg van valami ötleted az jól jönne. Holnap átnézem a lábkiosztást,ma már túl fáradt vagyok.
Köszi -
Daszkalosz19
aktív tag
válasz Daszkalosz19 #3122 üzenetére
Na felraktam,viszont a dokumentum mappába arduino mappa nem létezik
-
Daszkalosz19
aktív tag
válasz Daszkalosz19 #3125 üzenetére
Nos! Sikerült feltölteni hiba nélkül,de a képernyő még mindig fehér
Nem tudom mitévő legyek. Lehet rossz a kijelző? -
-
Daszkalosz19
aktív tag
Sziasztok!
most kezdem tanulgatni az aurdino programozást és találtam egy jó kis [oldalt],de az ott található arduino kódok ellenőrzés után mindegyik re hibát ír ki.
Mindre a void setup-ra!
Mi lehet a hiba?
Nézzétek el tudatlanságom,még kezdő vagyok/*
AnalogReadSerial
Analóg kiolvasás és soros port
Az analóg 0 pinből olvassa ki az értékeket, amiket utána serial monitoron kiír. A potméter középső lábát A0-ba kötjük, a két szélsőt az 5 V-ba és a földbe. -
*/
void setup() {
// inicializáljuk a soros kommunikációt 9600 bits/mp-en:
Serial.begin(9600);
}
void loop() {
// kiolvassuk a bemenetet analóg 0 pinen:
int sensorValue = analogRead(A0);
// kiprinteli a kiolvasott értéket:
Serial.println(sensorValue);
delay(1);
// a delay késlelteti a kiolvasást, a stabilitás érdekében
} -
Daszkalosz19
aktív tag
válasz Janos250 #3186 üzenetére
Szia!
Arduino megám van és az 1.6.5 verziót használom exe telepítős nem portable és a hivatalos oldalról töltöttem le.
Viszont a többi kódot betölti csak a Rékásat nem!Ez a hibakód!
Arduino: 1.6.5 (Windows 8.1), Board: "Arduino/Genuino Mega or Mega 2560, ATmega2560 (Mega 2560)"Build options changed, rebuilding all
_03AnalogPin.ino: In function 'void setup()':
_03AnalogPin:7: error: redefinition of 'void setup()'
sketch_jun14a:1: error: 'void setup()' previously defined here
_03AnalogPin.ino: In function 'void loop()':
_03AnalogPin:12: error: redefinition of 'void loop()'
sketch_jun14a:6: error: 'void loop()' previously defined here
redefinition of 'void setup()'This report would have more information with
"Show verbose output during compilation"
enabled in File > Preferences. -
Daszkalosz19
aktív tag
Újra telepítettem,de ugyanaz a hiba
Portable verziónál is
Közben meg lett a hiba
Gergosz2: Tényleg két db volt belőle!!![ Szerkesztve ]
-
Daszkalosz19
aktív tag
Sziasztok!
volna egy kis problémám. Van egy dht22 hőmérséklet és páratartalom érzékelőm,amit bekötöttem és egy programkódom hozzá. Tökéletesen működött tegnapig. Még el is volt mentve sketch-be
Arduino: 1.5.7 (Windows 8), Board: "Arduino Mega or Mega 2560, ATmega2560 (Mega 2560)"
sketch_jun29a.ino:1:17: fatal error: dht.h: No such file or directory
compilation terminated.This report would have more information with
"Show verbose output during compilation"
enabled in File > Preferences.Pedig a dht könyvtár benne van. Már újra telepítettem az arduino progit,de ugyan azt írja mindig
A programkód!
#include <dht.h>
#define dataPin 8
dht DHT;
void setup () {
Serial.begin(9600);
}
void loop() {
int readData = DHT.read22 (dataPin);
float t = DHT.temperature;
float h = DHT.humidity;
Serial.print ("Temperature = ");
Serial.print (t);
Serial.print (" *C ");
Serial.print ( " Humidity = ");
Serial.print (h);
Serial.println (" % ");
delay (1000);
}Valaki tud segíteni benne?
-
Daszkalosz19
aktív tag
Sziasztok!
egy relay állapotát hogyan tudom kiiratni lcd-re
kezdőként itt küszködök vele
ez lenne a kódom:köszönöm a segítséget!
#include "DHT.h"
#define DHTPIN 2
#define DHTTYPE DHT22 // DHT 22 (AM2302)
#define Relay 4
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 20, 4);
byte e1[8] = {B10,B100,B1110,B10001,B11111,B10000,B1110}; // Ez az é betű
byte o1[8] = {B100,B100,B0,B1110,B10001,B10001,B1110}; // Ez a hosszú ó betű
byte o2[8] = {B1010,B0,B1110,B10001,B10001,B10001,B1110}; // Ez a rövid ö betű
byte o3[8] = {B1010,B1010,B0,B1110,B10001,B10001,B1110}; // Ez a hosszú ő betű
byte a1[8] = {B10,B100,B1110,B1,B1111,B10001,B1111}; // Ez az á betű
byte u1[8] = {B10,B100,B10001,B10001,B10001,B10011,B1101}; // Ez a hosszú ú betű
byte u2[8] = {B1010,B0,B0,B10001,B10001,B10011,B1101}; // Ez a rövid ü betű
byte u3[8] = {B1010,B1010,B0,B10001,B10001,B10011,B1101}; // Ez a hosszú ű betű
byte i1[8] = {B10,B100,B0,B1110,B100,B100,B1110}; // Ez a hosszú í betű
int maxHum = 95;
int maxTemp = 29;
DHT dht(DHTPIN, DHTTYPE);
void setup() {
pinMode(Relay, OUTPUT);
Serial.begin(9600);
Wire.begin();
dht.begin();
lcd.begin(20, 4);
lcd.backlight();
lcd.createChar(1, e1); // Ez az é betű
lcd.createChar(2, a1); // Ez az á betű
lcd.createChar(3, o1); // Ez a hosszú ó betű
lcd.createChar(4, o3); // Ez a hosszú ő betű
lcd.createChar(5, u1); // Ez a hosszú ú betű
lcd.createChar(6, u2); // Ez a rövid ü betű
lcd.createChar(7, u3); // Ez a hosszú ű betű
lcd.createChar(0, i1); // Ez a hosszú í betű
}
void loop() {
delay(2000);
float h = dht.readHumidity();
// Read temperature as Celsius
float t = dht.readTemperature();
// Check if any reads failed and exit early (to try again).
if (isnan(h) || isnan(t)) {
lcd.println("Szenzor ERROR!");
return;
}
if(h > maxHum || t > maxTemp) {
digitalWrite(Relay, HIGH);
} else {
digitalWrite(Relay, LOW);
}
// Hőmérséklet.
lcd.setCursor(0, 0);
lcd.print("Homerseklet: ");
lcd.setCursor(1, 0); //Kurzor 3. sor 2. karakternél
lcd.write(4); //Átírjuk az o betüt ő-re
lcd.setCursor(3, 0); //Kurzor 3. sor 4-es karakternél
lcd.write(1); //Átírjuk az e betüt é-re
lcd.setCursor(6, 0); //Kurzor 3. sor 7-es karakternél
lcd.write(1); //Átírjuk az e betüt é-re
lcd.setCursor(13, 0); //Kurzor 3. sor 14-es karakternél
lcd.print(t); //Hőmérséklet érték kiírása
lcd.print((char)223); //Fokjel előhívása memoriából
lcd.print("C");
// Páratartalom.
lcd.setCursor(0, 1);
lcd.print("Paratartalom: ");
lcd.setCursor(1, 1);
lcd.write(2); //Átírjuk az a betüt á-re
lcd.setCursor(14, 1); // A páratartalom kijelzés a 14.sortól kezdődik
lcd.print(h);
lcd.print("%");
delay(200);
//Vízmelegítő.
lcd.setCursor(0, 2);
lcd.print("Vizmelegito:");
lcd.setCursor(1 ,2);
lcd.write(0);
lcd.setCursor(8 ,2);
lcd.write(0);
lcd.setCursor(10 ,2);
lcd.write(4);
} -
Daszkalosz19
aktív tag
válasz gyapo11 #3359 üzenetére
Szia!
Jelenleg így néz ki a dolog. kiírja,hogy off,de a relé állapotváltozásra nem reagál#include "DHT.h"
#define DHTPIN 2 // what pin we're connected to
#define DHTTYPE DHT22 // DHT 22 (AM2302)
#define Relay 4
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 20, 4);
byte e1[8] = {B10,B100,B1110,B10001,B11111,B10000,B1110}; // Ez az é betű
byte o1[8] = {B100,B100,B0,B1110,B10001,B10001,B1110}; // Ez a hosszú ó betű
byte o2[8] = {B1010,B0,B1110,B10001,B10001,B10001,B1110}; // Ez a rövid ö betű
byte o3[8] = {B1010,B1010,B0,B1110,B10001,B10001,B1110}; // Ez a hosszú ő betű
byte a1[8] = {B10,B100,B1110,B1,B1111,B10001,B1111}; // Ez az á betű
byte u2[8] = {B1010,B0,B0,B10001,B10001,B10011,B1101}; // Ez a rövid ü betű
byte u3[8] = {B1010,B1010,B0,B10001,B10001,B10011,B1101}; // Ez a hosszú ű betű
byte i1[8] = {B10,B100,B0,B1110,B100,B100,B1110}; // Ez a hosszú í betű
int maxHum = 80;
int maxTemp = 33;
DHT dht(DHTPIN, DHTTYPE);
void setup() {
pinMode(Relay, OUTPUT);
Serial.begin(9600);
Wire.begin();
dht.begin();
lcd.begin(20, 4);
lcd.backlight();
{
lcd.setCursor(2, 0);
lcd.print("Kelteto vezerles");
lcd.setCursor(8, 0);
lcd.write(4);
lcd.setCursor(13, 0);
lcd.write(1);
lcd.setCursor(16, 0);
lcd.write(1);
lcd.setCursor(3, 1);
lcd.print(" By:Daszkalosz ");
lcd.setCursor(4, 2);
lcd.println(" 2016.07.26 ");
delay(3000);
lcd.clear();
}
lcd.createChar(1, e1); // Ez az é betű
lcd.createChar(2, a1); // Ez az á betű
lcd.createChar(3, o1); // Ez a hosszú ó betű
lcd.createChar(4, o3); // Ez a hosszú ő betű
lcd.createChar(6, u2); // Ez a rövid ü betű
lcd.createChar(7, u3); // Ez a hosszú ű betű
lcd.createChar(0, i1); // Ez a hosszú í betű
}
void loop() {
// Wait a few seconds between measurements.
delay(2000);
// Reading temperature or humidity takes about 250 milliseconds!
// Sensor readings may also be up to 2 seconds 'old' (its a very slow sensor)
float h = dht.readHumidity();
// Read temperature as Celsius
float t = dht.readTemperature();
// Check if any reads failed and exit early (to try again).
if (isnan(h) || isnan(t)) {
lcd.println("Szenzor ERROR!");
return;
}
if(h > maxHum || t > maxTemp) {
digitalWrite(4, HIGH);
} else {
digitalWrite(4, LOW);
}
// Hőmérséklet.
lcd.setCursor(0, 0);
lcd.print("Homerseklet: ");
lcd.setCursor(1, 0); //Kurzor 3. sor 2. karakternél
lcd.write(4); //Átírjuk az o betüt ő-re
lcd.setCursor(3, 0); //Kurzor 3. sor 4-es karakternél
lcd.write(1); //Átírjuk az e betüt é-re
lcd.setCursor(6, 0); //Kurzor 3. sor 7-es karakternél
lcd.write(1); //Átírjuk az e betüt é-re
lcd.setCursor(13, 0); //Kurzor 3. sor 14-es karakternél
lcd.print(t); //Hőmérséklet érték kiírása
lcd.print((char)223); //Fokjel előhívása memoriából
lcd.print("C");
// Páratartalom.
lcd.setCursor(0, 1);
lcd.print("Paratartalom: ");
lcd.setCursor(1, 1);
lcd.write(2); //Átírjuk az a betüt á-re
lcd.setCursor(14, 1); // A páratartalom kijelzés a 14.sortól kezdődik
lcd.print(h);
lcd.print("%");
delay(200);
//Vízmelegítő.
lcd.setCursor(0, 2);
lcd.print("Vizmelegito :");
lcd.setCursor(1 ,2);
lcd.write(0);
lcd.setCursor(8 ,2);
lcd.write(0);
lcd.setCursor(10 ,2);
lcd.write(4);
if(Relay == HIGH)
{
lcd.setCursor(13,2);
lcd.print(" ON ");
}
else
{
lcd.setCursor(13,2);
lcd.print(" OFF ");
}
} -
Daszkalosz19
aktív tag
Sziasztok! Próbálok összehozni egy 4 csatornás időkapcsoló órát lcd kijelzővel és 1x4 keypaddal,de tudás hiánya miatt nem jön össze!
Esetleg ha valaki kar keresni egy kis pénzt a programkód megírásával az privátban jelezze!
Sajnos ez meghaladja a tudásom,de tanulgatom azért!
Köszönöm előre is! -
Daszkalosz19
aktív tag
Sziasztok!
Van egy időkapcsoló óra kódom,ami nincs befejezve,mert elakadtam! Ebben kérném a segítségeteket.
A menü rendszerhez nem értek!
Ezt a rutint kéne meghívni a menü rendszerhez az "1. Dugalj" "Be" almenühöz!// Kel 1 menü ahol kiválasztod a relé számát, és onan meghivod vele a rutinodat:
...
relaysecBe_settting(relayNum); // 0 ... 3
...
//............................................................sec_settting()................................................
void relaysecBe_settting(uint8_t relay)
{
char keypressed;
relaysT[relay].Rbe_sec = now_.minute();
lcd.setCursor(0,0);
lcd.print("Set second, relayBe: ");
lcd.print(relay);
lcd.setCursor(0,1);
lcd.print("mPerc = ");
if(relaysT[relay].Rbe_sec < 10) lcd.print(" ");
lcd.print(relaysT[relay].Rbe_sec);
do { //
lcd.setCursor(8,1);
if(relaysT[relay].Rbe_sec < 10) lcd.print(" ");
lcd.print(relaysT[relay].Rbe_sec);
keypressed =customKeypad.getKey(); //
delay(100);
if (keypressed=='1') //
{
if(relaysT[relay].Rbe_sec < 60){
relaysT[relay].Rbe_sec ++; //
}else{
relaysT[relay].Rbe_sec = 0;
}
}
if (keypressed=='2') //
{
if(relaysT[relay].Rbe_sec > 0){
relaysT[relay].Rbe_sec --; //
}else{
relaysT[relay0].Rbe_sec = 59;
} //
}
//delay(100);
} while(keypressed != '3'); //
}Ez is kell hozzá,de nem tudom hova illesszem!
uint8_t relayNum;
...
relayNum = 0; //0...3
..
relaysecBe_settting(relayNum); << ide kerül a relé száma 0 ... 3
Amit át adsz a hívott rutinakEz lenne a teljes kód!
//Idokapcsolo_Proba
#include <MenuBackend.h> //MenuBackend library - copyright by Alexander Brevig
#include <LiquidCrystal_I2C.h> //this library is included in the Arduino IDE
#include <Wire.h>
#include <Keypad.h>
#include "RTClib.h"
LiquidCrystal_I2C lcd(0x27, 20, 4);
RTC_DS1307 RTC;
const int REL1 = 7;
const int REL2 = 8;
const int REL3 = 9;
const int REL4 = 10;
int hour;
int minute;
int second;
const byte ROWS = 4; //four rows
const byte COLS = 1; //four columns
//define the cymbols on the buttons of the keypads
char hexaKeys[ROWS] = {'0','1','2','3'};
byte rowPins[ROWS] = {5, 4, 3, 2}; //connect to the row pinouts of the keypad
byte colPins[1] = {8}; //connect to the column pinouts of the keypad
//initialize an instance of class NewKeypad
Keypad customKeypad = Keypad( makeKeymap(hexaKeys), rowPins, colPins, ROWS, COLS);
DateTime now;
//relays adat structure
struct relays {
// bekapcsolás
uint16_t Rbe_year;
uint8_t Rbe_mon;
uint8_t Rbe_day;
uint8_t Rbe_hour;
uint8_t Rbe_min;
uint8_t Rbe_sec;
// kikapcsolás
uint16_t Rki_year;
uint8_t Rki_mon;
uint8_t Rki_day;
uint8_t Rki_hour;
uint8_t Rki_min;
uint8_t Rki_sec;
};
// Relay flags
#define Rbe1 0
#define Rbe2 1
#define Rbe3 2
#define Rbe4 3
relays relaysT[4]; // Tömböd 4 relének
uint8_t relayF = 0; // Relék állapotjelző bitek
uint8_t relayNum;
relayNum = 0; //0...3
relayhourBe_settting(relayNum); //ide kerül a relé száma 0 ... 3
relayhourKi_settting(relayNum);
relayminuteBe_settting(relayNum);
relayminuteKi_settting(relayNum);
relaysecBe_settting(relayNum);
relaysecKi_settting(relayNum); //Amit át adsz a hívott rutinak
//Menu variables
MenuBackend menu = MenuBackend(menuUsed,menuChanged);
//initialize menuitems
MenuItem menu1Item1 = MenuItem("1. Dugalj 1");
MenuItem menuItem1SubItem1 = MenuItem("1.1 BE");
MenuItem menuItem1SubItem2 = MenuItem("1.2 KI");
MenuItem menu1Item2 = MenuItem("2. Dugalj 2");
MenuItem menuItem2SubItem1 = MenuItem("2.1 BE");
MenuItem menuItem2SubItem2 = MenuItem("2.2 KI");
MenuItem menu1Item3 = MenuItem("3. Dugalj 3");
MenuItem menuItem3SubItem1 = MenuItem("3.1 BE");
MenuItem menuItem3SubItem2 = MenuItem("3.2 KI");
MenuItem menu1Item4 = MenuItem("4. Dugalj 4");
MenuItem menuItem4SubItem1 = MenuItem("4.1 BE");
MenuItem menuItem4SubItem2 = MenuItem("4.2 KI");
MenuItem menu1Item5 = MenuItem(" Vissza ");
void setup()
{
Serial.begin(9600);
lcd.begin(20, 4);
lcd.backlight();
Wire.begin();
lcd.clear();
RTC.begin();
digitalWrite(REL1, HIGH);
digitalWrite(REL2, HIGH);
digitalWrite(REL3, HIGH);
digitalWrite(REL4, HIGH);
pinMode(REL1, OUTPUT);
pinMode(REL2, OUTPUT);
pinMode(REL3, OUTPUT);
pinMode(REL4, OUTPUT);
if (! RTC.isrunning()) {
Serial.println("RTC is NOT running!");
// Beállítja az RTC dáum és idő vázlatát
RTC.adjust(DateTime(__DATE__, __TIME__));
}
// Valahol feltöltöd az relay tömböt
// bekapcsolás
relaysT[0].Rbe_hour = 10;
relaysT[0].Rbe_min = 30;
relaysT[0].Rbe_sec = 0;
// kikapcsolás
relaysT[0].Rki_hour = 10;
relaysT[0].Rki_min = 50;
relaysT[0].Rki_sec = 0;
// bekapcsolás
relaysT[1].Rbe_hour = 10;
relaysT[1].Rbe_min = 30;
relaysT[1].Rbe_sec = 0;
// kikapcsolás
relaysT[1].Rki_hour = 10;
relaysT[1].Rki_min = 50;
relaysT[1].Rki_sec = 0;
// bekapcsolás
relaysT[2].Rbe_hour = 10;
relaysT[2].Rbe_min = 30;
relaysT[2].Rbe_sec = 0;
// kikapcsolás
relaysT[2].Rki_hour = 10;
relaysT[2].Rki_min = 50;
relaysT[2].Rki_sec = 0;
// bekapcsolás
relaysT[3].Rbe_hour = 10;
relaysT[3].Rbe_min = 30;
relaysT[3].Rbe_sec = 0;
// kikapcsolás
relaysT[3].Rki_hour = 10;
relaysT[3].Rki_min = 50;
relaysT[3].Rki_sec = 0;
// Példa flag használatára
relayF |= (1 << Rbe1); // Jelző set
relayF &= ~(1 << Rbe1); // Jelző reset
if(relayF &(~(1 << Rbe1))){}; // flag vizsgálat bekapcsoltra
if(!(relayF &(~(1 << Rbe1)))){}; // flag vizsgálat kikapcsoltra
relayF |= (1 << Rbe2); // Jelző set
relayF &= ~(1 << Rbe2); // Jelző reset
if(relayF &(~(1 << Rbe2))){}; // flag vizsgálat bekapcsoltra
if(!(relayF &(~(1 << Rbe2)))){}; // flag vizsgálat kikapcsoltra
relayF |= (1 << Rbe3); // Jelző set
relayF &= ~(1 << Rbe3); // Jelző reset
if(relayF &(~(1 << Rbe3))){}; // flag vizsgálat bekapcsoltra
if(!(relayF &(~(1 << Rbe3)))){}; // flag vizsgálat kikapcsoltra
relayF |= (1 << Rbe4); // Jelző set
relayF &= ~(1 << Rbe4); // Jelző reset
if(relayF &(~(1 << Rbe4))){}; // flag vizsgálat bekapcsoltra
if(!(relayF &(~(1 << Rbe4)))){}; // flag vizsgálat kikapcsoltra
}
//Menü Konfig....
menu.getRoot().add(menu1Item1);
menu1Item1.addRight(menu1Item2).addRight(menu1Item3).addRight(menu1Item4).addRight(menu1Item5);
menu1Item1.add(menuItem1SubItem1).addRight(menuItem1SubItem2);
menu1Item2.add(menuItem2SubItem1).addRight(menuItem2SubItem2);
menu1Item3.add(menuItem3SubItem1).addRight(menuItem3SubItem2);
menu1Item4.add(menuItem4SubItem1).addRight(menuItem4SubItem2);
menu1Item5.add(menu1Item5);
menu.toRoot();
lcd.setCursor(0,0);
lcd.print("MenuControl v1.0");
}
void loop()
{
DateTime now = RTC.now();
lcd.setCursor(0, 0);
lcd.print(now.year(), DEC);
lcd.print('.');
lcd.print(now.month(), DEC);
lcd.print('.');
lcd.print(now.day(), DEC);
lcd.print(' ');
lcd.setCursor(10, 0);
if (now.hour()<10)
lcd.print('0');
lcd.print(now.hour(), DEC);
lcd.print(':');
if (now.minute()<10)
lcd.print('0');
lcd.print(now.minute(), DEC);
lcd.print(':');
if (now.second()<10)
lcd.print('0');
lcd.print(now.second(), DEC);
lcd.setCursor(6, 1);
for(uint8_t i = 0; i < 4; i++){
// relé bekapcsol
if(!(relayF &(~(1 << i)))){ // Ha flag = 0
if((relaysT[i].Rbe_hour == now.hour()) && (relaysT[i].Rbe_min == now.minute()) && (relaysT[i].Rbe_sec == now.second())){
digitalWrite(REL1 + i, HIGH);
relayF |= (1 << i); // Jelző set
}
}
// relé kikapcsol
if(relayF &(~(1 << i))){ // Ha flag = 1
if((relaysT[i].Rki_hour == now.hour()) && (relaysT[i].Rki_min == now.minute()) &&(relaysT[i].Rki_sec == now.second()) ){
digitalWrite(REL1 + i, LOW);
relayF &= ~(1 << i); // Jelző reset
}
}
}
// Figyeled az órát és össze hasinlítod a tömb éertékekkel! relé be
if((relaysT[0].Rbe_hour == now.hour()) && (relaysT[0].Rbe_min == now.minute()) && (relaysT[0].Rbe_sec == now.second())){
digitalWrite(REL1, HIGH);
}
// relé ki
if((relaysT[0].Rki_hour == now.hour()) && (relaysT[0].Rki_min == now.minute()) && (relaysT[0].Rki_sec == now.second())){
digitalWrite(REL1, LOW);
}
// Figyeled az órát és össze hasinlítod a tömb éertékekkel! relé be
if((relaysT[1].Rbe_hour == now.hour()) && (relaysT[1].Rbe_min == now.minute()) && (relaysT[1].Rbe_sec == now.second())){
digitalWrite(REL2, HIGH);
}
// relé ki
if((relaysT[1].Rki_hour == now.hour()) && (relaysT[1].Rki_min == now.minute()) && (relaysT[1].Rki_sec == now.second())){
digitalWrite(REL2, LOW);
}
// Figyeled az órát és össze hasinlítod a tömb éertékekkel! relé be
if((relaysT[2].Rbe_hour == now.hour()) && (relaysT[2].Rbe_min == now.minute()) && (relaysT[2].Rbe_sec == now.second())){
digitalWrite(REL3, HIGH);
}
// relé ki
if((relaysT[2].Rki_hour == now.hour()) && (relaysT[2].Rki_min == now.minute()) && (relaysT[2].Rki_sec == now.second())){
digitalWrite(REL3, LOW);
}
// Figyeled az órát és össze hasinlítod a tömb éertékekkel! relé be
if((relaysT[3].Rbe_hour == now.hour()) && (relaysT[3].Rbe_min == now.minute()) && (relaysT[3].Rbe_sec == now.second())){
digitalWrite(REL4, HIGH);
}
// relé ki
if((relaysT[3].Rki_hour == now.hour()) && (relaysT[3].Rki_min == now.minute()) && (relaysT[3].Rki_sec == now.second())){
digitalWrite(REL4, LOW);
}
char customKey = customKeypad.getKey();
if (customKey){
Serial.println(customKey);
}
if (customKey == '0'){
relayhour_setting();
} else if (customKey == '1'){
relayminute_setting();
} else if (customKey == '2'){
relaysec_setting();
}else{}
}
readButtons(); //I splitted button reading and navigation in two procedures because
navigateMenus(); //in some situations I want to use the button for other purpose (eg. to change some settings)
} //loop()...
void menuChanged(MenuChangeEvent changed){
MenuItem newMenuItem=changed.to; //get the destination menu
lcd.setCursor(0,1); //set the start position for lcd printing to the second row
if(newMenuItem.getName()==menu.getRoot()){
lcd.print(" Idokapcsolo menu ");
}else if(newMenuItem.getName()=="1. Dugalj 1"){
lcd.print("1. Dugalj 1 ");
}else if(newMenuItem.getName()=="1.1 BE"){
lcd.print("1.1 BE");
}else if(newMenuItem.getName()=="1.2 KI"){
lcd.print("1.2 KI");
}else if(newMenuItem.getName()=="2. Dugalj 2"){
lcd.print("2. Dugalj 2" );
}else if(newMenuItem.getName()=="2.1 BE"){
lcd.print("2.1 BE");
}else if(newMenuItem.getName()=="2.2 KI"){
lcd.print("2.2 KI");
}else if(newMenuItem.getName()=="3. Dugalj 3"){
lcd.print("3. Dugalj 3" );
}else if(newMenuItem.getName()=="3.1 BE"){
lcd.print("3.1 BE");
}else if(newMenuItem.getName()=="3.2 KI"){
lcd.print("3.2 KI");
}else if(newMenuItem.getName()=="4. Dugalj 4"){
lcd.print("4. Dugalj 4 ");
}else if(newMenuItem.getName()=="4.1 BE"){
lcd.print("4.1 BE");
}else if(newMenuItem.getName()=="4.2 KI"){
lcd.print("4.2 KI");
}else if(newMenuItem.getName()=="5.Vissza"){
lcd.print(" Vissza");
}
}
void menuUsed(MenuUseEvent used){
lcd.setCursor(0,0);
lcd.print("You used ");
if ((used.item.getName()) == "1.1 BE")
{
menu.toRoot(); //back to Main
}
if ((used.item.getName()) == "5. Vissza")
{
lcd.setCursor(0,2);
lcd.print("Vissza");
// lcd.print(used.item.getName());
delay(3000); //delay to allow message reading
lcd.setCursor(0,0);
lcd.print("MenuControl v1.0");
menu.toRoot(); //back to Main
}
}
//............................................................secBe_settting()................................................
void relaysecBe_settting(uint8_t relay)
{
char keypressed;
relaysT[relay].Rbe_sec = now.sec();
lcd.setCursor(0,1);
lcd.print("Set second: ");
lcd.print(relay);
lcd.setCursor(0,2);
lcd.print("mPerc = ");
if(relaysT[relay].Rbe_sec < 10) lcd.print(" ");
lcd.print(relaysT[relay].Rbe_sec);
do { // ez az�rt kell, hogy addig nyomkodjon, mig jo v�laszt nem ad
lcd.setCursor(8,1);
if(relaysT[relay].Rbe_sec < 10) lcd.print(" ");
lcd.print(relaysT[relay].Rbe_sec);
delay(100);
keypressed =customKeypad.getKey(); //keypressed v�ltoz� szint�n a setupban kell defini�lni
if (keypressed=='1') //Annyit tudni kell itt, hogy most 1-et �rtam be, de neked pl az 1-es gomb megnyom�s�ra lehet nem ezt adja vissza, hanem azt amit te adt�l meg, sz�val az kell majd neki itt megadni
{
if(relaysT[relay].Rbe_sec< 60){
relaysT[relay].Rbe_sec ++;
}else{
relaysT[relay].Rbe_sec = 0;
}
}
if (keypressed=='2') //Annyit tudni kell itt, hogy most 2-et �rtam be, de neked pl az 2-es gomb megnyom�s�ra lehet nem ezt adja vissza, hanem azt amit te adt�l meg, sz�val az kell majd neki itt megadni
{
if(relaysT[relay].Rbe_sec > 0){
relaysT[relay].Rbe_sec --;
}else{
relaysT[relay].Rbe_sec = 59;
}
}
//delay(100);
} while(keypressed != '3'); // Azaz m�g nem a h�rmas gombot nyomja
if (! RTC.isrunning()) {
Serial.println("RTC is NOT running!");
// Beállítja az RTC dáum és idő vázlatát
RTC.adjust(DateTime(__DATE__, __TIME__));
}
}
//............................................................secKi_settting()................................................
void relaysecKi_settting(uint8_t relay)
{
char keypressed;
relaysT[relay].Rki_sec = now.minute();
lcd.setCursor(0,1);
lcd.print("Set second: ");
lcd.print(relay);
lcd.setCursor(0,2);
lcd.print("mPerc = ");
if(relaysT[relay].Rki_sec < 10) lcd.print(" ");
lcd.print(relaysT[relay].Rki_sec);
do {
lcd.setCursor(8,1);
if(relaysT[relay].Rki_sec < 10) lcd.print(" ");
lcd.print(relaysT[relay].Rki_sec);
delay(100);
keypressed =customKeypad.getKey(); //keypressed v�ltoz� szint�n a setupban kell defini�lni
if (keypressed=='1') //Annyit tudni kell itt, hogy most 1-et �rtam be, de neked pl az 1-es gomb megnyom�s�ra lehet nem ezt adja vissza, hanem azt amit te adt�l meg, sz�val az kell majd neki itt megadni
{
if(relaysT[relay].Rki_sec< 60){
relaysT[relay].Rki_sec ++;
}else{
relaysT[relay].Rki_sec = 0;
}
}
if (keypressed=='2') //Annyit tudni kell itt, hogy most 2-et �rtam be, de neked pl az 2-es gomb megnyom�s�ra lehet nem ezt adja vissza, hanem azt amit te adt�l meg, sz�val az kell majd neki itt megadni
{
if(relaysT[relay].Rki_sec > 0){
relaysT[relay].Rki_sec --; //
}else{
relaysT[relay].Rki_sec = 59;
}
}
//delay(100);
} while(keypressed != '3'); // Azaz m�g nem a h�rmas gombot nyomja
if (! RTC.isrunning()) {
Serial.println("RTC is NOT running!");
// Beállítja az RTC dáum és idő vázlatát
RTC.adjust(DateTime(__DATE__, __TIME__));
}
}
//.....................................................hourBe_setting().......................................................
void relayhourBe_settting(uint8_t relay)
{
char keypressed;
relaysT[relay].Rbe_hour = now.hour();
lcd.setCursor(0,1);
lcd.print("Set hour: ");
lcd.setCursor(0,2);
lcd.print("Ora = ");
if(relaysT[relay].Rbe_hour< 10) lcd.print(" ");
lcd.print(relaysT[relay].Rbe_hour);
do { // ez az�rt kell, hogy addig nyomkodjon, mig jo v�laszt nem ad
lcd.setCursor(6,1);
if(relaysT[relay].Rbe_hour < 10) lcd.print(" ");
lcd.print(relaysT[relay].Rbe_hour);
delay(100);
keypressed =customKeypad.getKey(); //keypressed v�ltoz� szint�n a setupban kell defini�lni
if (keypressed=='1') //Annyit tudni kell itt, hogy most 1-et �rtam be, de neked pl az 1-es gomb megnyom�s�ra lehet nem ezt adja vissza, hanem azt amit te adt�l meg, sz�val az kell majd neki itt megadni
{
if(relaysT[relay].Rbe_hour < 24){
relaysT[relay].Rbe_hour ++;
}else{
relaysT[relay].Rbe_hour = 0;
}
}
if (keypressed=='2') //Annyit tudni kell itt, hogy most 2-et �rtam be, de neked pl az 2-es gomb megnyom�s�ra lehet nem ezt adja vissza, hanem azt amit te adt�l meg, sz�val az kell majd neki itt megadni
{
if(relaysT[relay].Rbe_hour> 0){
relaysT[relay].Rbe_hour --; //A sec v�ltoz�t a setupban int k�nt kell defini�lni
}else{
relaysT[relay].Rbe_hour = 23;
}
}
//delay(100);
} while(keypressed != '3'); // Azaz m�g nem a h�rmas gombot nyomja
if (! RTC.isrunning()) {
Serial.println("RTC is NOT running!");
// Beállítja az RTC dáum és idő vázlatát
RTC.adjust(DateTime(__DATE__, __TIME__));
}
}
//.....................................................hourKi_setting().......................................................
void relayhourKi_settting(uint8_t relay)
{
char keypressed;
relaysT[relay].Rki_hour = now.hour();
lcd.setCursor(0,1);
lcd.print("Set hour: ");
lcd.setCursor(0,2);
lcd.print("Ora = ");
if(relaysT[relay].Rki_hour< 10) lcd.print(" ");
lcd.print(relaysT[relay].Rki_hour);
do { // ez az�rt kell, hogy addig nyomkodjon, mig jo v�laszt nem ad
lcd.setCursor(6,1);
if(relaysT[relay].Rki_hour < 10) lcd.print(" ");
lcd.print(relaysT[relay].Rki_hour);
delay(100);
keypressed =customKeypad.getKey(); //keypressed v�ltoz� szint�n a setupban kell defini�lni
if (keypressed=='1') //Annyit tudni kell itt, hogy most 1-et �rtam be, de neked pl az 1-es gomb megnyom�s�ra lehet nem ezt adja vissza, hanem azt amit te adt�l meg, sz�val az kell majd neki itt megadni
{
if(relaysT[relay].Rki_hour < 24){
relaysT[relay].Rki_hour ++;
}else{
relaysT[relay].Rki_hour = 0;
}
}
if (keypressed=='2') //Annyit tudni kell itt, hogy most 2-et �rtam be, de neked pl az 2-es gomb megnyom�s�ra lehet nem ezt adja vissza, hanem azt amit te adt�l meg, sz�val az kell majd neki itt megadni
{
if(relaysT[relay].Rki_hour> 0){
relaysT[relay].Rki_hour --;
}else{
relaysT[relay].Rki_hour = 23;
}
}
//delay(100);
} while(keypressed != '3'); // Azaz m�g nem a h�rmas gombot nyomja
if (! RTC.isrunning()) {
Serial.println("RTC is NOT running!");
// Beállítja az RTC dáum és idő vázlatát
RTC.adjust(DateTime(__DATE__, __TIME__));
}
}
//...........................................................minuteBe_setting().................................................
void relayminuteKi_settting(uint8_t relay)
{
char keypressed;
relaysT[relay].Rbe_min = now.minute();
lcd.setCursor(0,1);
lcd.print("Set Minute: ");
lcd.setCursor(0,2);
lcd.print("Perc = ");
if(relaysT[relay].Rbe_min < 10) lcd.print(" ");
lcd.print(relaysT[relay].Rbe_min);
do { // ez az�rt kell, hogy addig nyomkodjon, mig jo v�laszt nem ad
lcd.setCursor(7,1);
if(relaysT[relay].Rbe_min< 10) lcd.print(" ");
lcd.print(relaysT[relay].Rbe_min);
delay(100);
keypressed =customKeypad.getKey(); //keypressed v�ltoz� szint�n a setupban kell defini�lni
if (keypressed=='1') //Annyit tudni kell itt, hogy most 1-et �rtam be, de neked pl az 1-es gomb megnyom�s�ra lehet nem ezt adja vissza, hanem azt amit te adt�l meg, sz�val az kell majd neki itt megadni
{
if(relaysT[relay].Rbe_min < 60){
relaysT[relay].Rbe_min ++; //A sec v�ltoz�t a setupban int k�nt kell defini�lni
}else{
relaysT[relay].Rbe_min = 0;
}
}
if (keypressed=='2') //Annyit tudni kell itt, hogy most 2-et �rtam be, de neked pl az 2-es gomb megnyom�s�ra lehet nem ezt adja vissza, hanem azt amit te adt�l meg, sz�val az kell majd neki itt megadni
{
if(relaysT[relay].Rbe_min > 0){
relaysT[relay].Rbe_min --; //A sec v�ltoz�t a setupban int k�nt kell defini�lni
}else{
relaysT[relay].Rbe_min = 59;
} //A sec v�ltoz�t a setupban int k�nt kell defini�lni
}
//delay(100);
} while(keypressed != '3'); // Azaz m�g nem a h�rmas gombot nyomja
if (! RTC.isrunning()) {
Serial.println("RTC is NOT running!");
// Beállítja az RTC dáum és idő vázlatát
RTC.adjust(DateTime(__DATE__, __TIME__));
}
}
//...........................................................minuteKi_setting().................................................
void relayminuteKi_settting(uint8_t relay)
{
char keypressed;
relaysT[relay].Rki_hour = now.minute();
lcd.setCursor(0,1);
lcd.print("Set Minute: ");
lcd.setCursor(0,2);
lcd.print("Perc = ");
if(relaysT[relay].Rki_hour< 10) lcd.print(" ");
lcd.print(relaysT[relay].Rki_hour);
do { // ez az�rt kell, hogy addig nyomkodjon, mig jo v�laszt nem ad
lcd.setCursor(6,1);
if(relaysT[relay].Rki_hour < 10) lcd.print(" ");
lcd.print(relaysT[relay].Rki_hour);
delay(100);
keypressed =customKeypad.getKey(); //keypressed v�ltoz� szint�n a setupban kell defini�lni
if (keypressed=='1') //Annyit tudni kell itt, hogy most 1-et �rtam be, de neked pl az 1-es gomb megnyom�s�ra lehet nem ezt adja vissza, hanem azt amit te adt�l meg, sz�val az kell majd neki itt megadni
{
if(relaysT[relay].Rki_hour < 60){
relaysT[relay].Rki_hour ++;
}else{
relaysT[relay].Rki_hour = 0;
}
}
if (keypressed=='2') //Annyit tudni kell itt, hogy most 2-et �rtam be, de neked pl az 2-es gomb megnyom�s�ra lehet nem ezt adja vissza, hanem azt amit te adt�l meg, sz�val az kell majd neki itt megadni
{
if(relaysT[relay].Rki_hour> 0){
relaysT[relay].Rki_hour --;
}else{
relaysT[relay].Rki_hour = 59;
}
}
//delay(100);
} while(keypressed != '3'); // Azaz m�g nem a h�rmas gombot nyomja
if (! RTC.isrunning()) {
Serial.println("RTC is NOT running!");
// Beállítja az RTC dáum és idő vázlatát
RTC.adjust(DateTime(__DATE__, __TIME__));
}
}Valaki segítsen! Köszönöm
-
Daszkalosz19
aktív tag
válasz Janos250 #3469 üzenetére
Szia! Változtattama a kódon,a menubackendet kiszedtem. Egy másik menüt hoztam létre,de nem tudom folytatni. Csak a másodpercet hívtam meg,az óra és a perc még hátra van,mert nem tudom hogy hol hívjam meg. További almenük kellenek? Ezt a részét nem értem. A fordító most lefordítja. Felteszem az LCD és az RTC könyvtáramat is,ha szükséges
időkapcsoló.ino
LCD lib
RTC libKöszi a segítségedet
[ Szerkesztve ]
-
Daszkalosz19
aktív tag