Fórum témák
- • Gáz fogyasztás monitorozása
- • Hűtőgép probléma
- • Elfogadnám, ha ingyen elvihető
- • Analóg oszcilloszkóp javítása
- • A műhely (bemutató topik, ahol az alkotások készülnek)
- • Audiofil, High End Audio
- • Vicces - mókás történetek
- • Opel Astra elektromos hibák
- • Mosógép vezérlők és általános problémáik
- • Számítógép hiba, de mi a probléma?
- • Arduino
- • Felajánlás, azaz ingyen elvihető
- • Rádió áthangolása, OIRT - CCIR konverter
- • Vezetéknélküli termosztát
- • Kazettás magnó (deck) javítása
- • Hűtőgép kompresszor
- • Kombikazán működési hiba
- • Kapcsolóüzemű táp 230V-ról
- • Oszcilloszkóp, avagy hogyan kell használni?
- • Klíma szervizelés, javítás
- • Klíma beszerelése, fűtés-hűtés házilag
- • Tápegységgel kapcsolatos kérdések
- • Fejhallgató erősítő
- • Labortáp javítás
- • MOSFET-ek
- • Sprint-Layout NYÁK-tervező
- • Tápegység
- • Androidos okos telefonok
- • Tervezzünk nyákot EasyEDA-val
- • Hegesztő inverter javítás
- • Videomagnó problémák
- • Ellenállás
- • Rádióamatőrök topikja
- • Szobatermosztát bekötése
- • Villanyszerelés
- • HESTORE.hu
- • Multiméter - miért, milyet?
- • Érdekességek
- • Villanymotor bekötése
- • Dióda helyettesítés
- • Transzformátor készítés, méretezés
- • Menetszámolós tekercselőgép házilag
- • Leválasztó transzformátor
- • Szigetelésvizsgáló
- • USB 3.2 HUB modul
- • Kamerás megfigyelőrendszer
- • Tranzisztorok helyettesítése
- • Borhűtő vezérlő panel
- • CNC építése házi alkatrészekből az alapoktól
- • Sütő javítás
- • Kondenzátor
- • Eberspacher állófűtés javítása
- • Dobozolási technikák, műszerdobozok
- • Erősítő mindig és mindig
- • Magyarokamarson
» Több friss téma
|
A klónok CH340 Soros-USB illesztőjének drivere ( Letöltés)
Mindegy, kuka.
Lenne egy másik kérdésem:
Van egy kód, amit írtam.
#include <Wire.h>
#include "RTClib.h"
#include <LiquidCrystal.h>
const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
char daysOfTheWeek[7][12] = {"Vasárnap", "Hétfő", "Kedd", "Szerda", "Csütörtök", "Péntek", "Szombat"};
void setup () {
lcd.begin(16, 2);
Serial.begin(9600);
rtc.begin();
}
void loop () {
DateTime now = rtc.now();
lcd.setCursor(0, 0);
lcd.print(now.year(), DEC);
Serial.print(now.year(), DEC);
lcd.print('/');
Serial.print('/');
lcd.print(now.month(), DEC);
Serial.print(now.month(), DEC);
Serial.print('/');
lcd.print('/');
Serial.print(now.day(), DEC);
lcd.print(now.day(), DEC);
Serial.print(" (");
Serial.print(daysOfTheWeek[now.dayOfTheWeek()]);
Serial.print(") ");
lcd.setCursor(0, 1);
lcd.print(now.hour(), DEC);
lcd.print(':');
lcd.print(now.minute(), DEC);
lcd.print(':');
lcd.setCursor(5,1);
lcd.print(now.second(), DEC);
delay(1000);
}
Az LCD-n a másodperc kiírásakor a következőt produkálja:
Kiírja a számokat rendesen, de amikor az 59 utáni nullát írja ki, az jelenik meg, hogy 09 a nulla helyett. Az után meg 19 az 1 helyett, és így tovább egész 10-ig. Onnantól kezdve minden megy jól.
Mi lehet az oka? A hozzászólás módosítva: Jún 25, 2018
Biztosan sikerül. Szerintem ha teszel eléjük jó sok kondit, azzal rosszat nem teszel, de van ami etesse a csúcsokat is.
Kiiras előtt töröld le az lcd-t és jó lesz! Amúgy annyi az oka hogy felülírja az előző tartalmat ha van mivel. A te esetedben a nulla rövidebb mint a tíz, ezért ott marad szemétként az előző kiiras vége. A hozzászólás módosítva: Jún 25, 2018
Ha törlöd az LCD-t akkor jó lesz, de a 01 helyett 1-t fog írni. Szerintem jobb megoldás, ha a kiírandó szöveget összerakod, majd úgy iratod ki egy lépésben az LCD-re. Azonban vizsgálni kell a karakterek számát.
Ha pl 1 óra 1 perc 1 másodperc akkor szebb lenne:
01:01:01
Ha az óra <=10 akkor a kiirandó óra= '0' + now.hour.
ugyanígy a többire, majd a végén egy lépésben ki az LCD-re.
A jelenlegi kódod azért ilyen, mert ha csak 1 karakterből áll a másodperc, akkor az LCD setcurzor 5,1 nem jó. 6,1 kellene. Azonban, ha két karakter akkor 5,1. (persze törlés nélkül 51 lesz, ha csak 6,1-t használsz)
De átgondoltam.
Ha törölsz, akkor villogni fog az LCD. Első körben írd meg ahogy neked tetszik, majd próbáld meg úgy, hogy csak azokat a karaktereket változtatod meg amit kell. másodpercél maradva:
59 -ről 00-ra az utolsó két karakter változik, 01-nél már csak az utolsó. (Persze a percél is vizsgálni kell melyik karakterek változnak, attól függően kell pozícionálni.) Ha jól meg van írva, akkor csak akkor villan egyet és ott, ahol a karakterek változnak, a többi állandó marad.
Lehet tévedek, mert kb 2 éve csináltam ilyet, akkor mintha minden LCD törlés és kiíráskor villant egyet. Másodpercenként villog (vagy többször, ha a delay()-t kisebbre veszed) az nem szép.
Ha tévedtem, akkor bocs!
Idézet: „59 utáni nullát írja ki, az jelenik meg, hogy 09 a nulla”
Ottmarad az 59 utolsó számjegye. Ha kiírásnál ügyelsz arra, hogy ne írj kevesebb karaktert (pl. az 1-et 01 formátumban írod ki, vagy szóközzel kiegészíted a kiírást), akkor nem lesz ilyen probléma.
Látom nem használsz string osztályt.
Akkor én úgy oldanám meg, hogy két tömböt használnék. Előző, és aktuális időt tartalmazót.
Ha az időformátum ilyen:
01:01:01
Akkor a '':" karaktereket nem kell változtatni soha. A tömbökben 6 egészt kell tárolni. Ezt megoldhatod egy if szerkezettel, mert ha az RTC szerinti óra pl 1, (kisebb mint 10) akkor a tömb első eleme 0, a második 1.
Ha az óra 12 (azaz nagyobb mint 10) akkor a tömb első eleme 1 amit szintén egy if-szerkezettel megkapsz, mert 10-el osztod és csak az egész részét veszed. Maradékos osztással meg a másodikat. Így tovább a perc másodpercre.
Mindezt azért, mert indításkor a setup-ban feltöltöd az aktuális értékekkel a kezdet tömböt és kiíratod, majd a loop-ban az aktuális időt tartalmazó tömböt töltöd fel.
Itt jönne a csavar. Végigmész egy ciklussal a tömb elemein és vizsgálod, hogy mely karakterek (tömb elemek változtak meg) és ha azt tapasztalod, hogy változott, akkor LCD set cursor az épp aktuális ciklusváltozóhoz és print valamint a régi tömb adott indexű eleme vegye fel az újat.
Szerintem így csak azokat a karaktereket változtatod amit kell, így esetleg nem villog szembetűnően az LCD.
De simán tévedhetek is! Lehet nem is villog az LCD...
String tmp;
tmp=""; if (now.hour<=9) tmp= "0";
lcd.print(tmp);
lcd.print(now.hour);
lcd.print(":");
tmp=""; if (now.minute<=9) tmp= "0";
lcd.print(tmp);
lcd.print(now.minute);
lcd.print(":");
tmp=""; if (now.second<=9) tmp= "0";
lcd.print(tmp);
lcd.print(now.second); A hozzászólás módosítva: Jún 25, 2018
Lehet ezt sokféle képen túlbonyolítani, de az lcd.clear() utasítással tökéletesen működik. Nem villog, és csak a megfelelő karakter változik.
Azért köszönöm szépen a jó tanácsokat!
Kivéve, ha 5mS-ként hívod meg az lcd.clear() fv-t.
A legkorrektebb megoldás az, ha van egy 2x16 karakterű tömbünk, amibe dolgozunk, bármikor, bármit írhatunk bele, a főprogram pedig bizonyos időközönként meghívja az LCD kezelő fv-ünket, ami csak a megváltozott karakteret küldi ki az LCD-nek! Így lesz a leghatékonyabb az LCD kezelés, villogásmentes, leggyorsabb.
Ha jó szervot akarsz akkor digitálist használj de ezek nem olcsó ami olcsó az mind analog a vezérlése / visszacsatolás ezek már elavultak játékba jók ...
Az analóg teszi a dolgát még mindig. Mennyibe kerül egy általad ajánlott digitális szervó?
Sziasztok,
LoRa32u4 sender miért a serial sorok letiltása után kezd a packet küldésébe, letiltás nélkül csak a serial monitorozás után?
#include <SPI.h>
#include <LoRa.h>
//LoRa32u4 ports
#define SS 8
#define RST 4
#define DI0 7
#define BAND 433E6
unsigned int counter = 0;
void setup() {
//Serial.begin(115200);
//while (!Serial);
//Serial.println("LoRa Sender");
SPI.begin();
LoRa.setPins(SS,RST,DI0);
if (!LoRa.begin(BAND)) {
Serial.println("Starting LoRa failed!");
while (1);
}
// Change sync word (0xF3) to match the receiver
// The sync word assures you don't get LoRa messages from other LoRa transceivers
// ranges from 0-0xFF
LoRa.setSyncWord(0xF3);
// Serial.println("LoRa Initializing OK!");
}
void loop() {
//Serial.print("Sending packet: ");
//Serial.println(counter);
// send packet
LoRa.beginPacket();
LoRa.print("hello ");
LoRa.print(counter);
LoRa.endPacket();
counter++;
delay(5000);
}
RFM69 eszközben valaki jártas?
Nem igazán értem a kommunikácios kulcs definiálást hogy történik?
Két eszköz hogy szolitja egymást ha a kulcsuk azonos? A hozzászólás módosítva: Jún 30, 2018
GY-271 iránytűt szeretnék életre kelteni, de nem működik.
Bekötés jó, I2C szkenner látja, de a példa programokban nem változnak az adatok.
Van valami okosság, vagy csak egyerűen rossz lehet a modul?
(#) |
vyky hozzászólása |
Júl 6, 2018 |
|
/ |
|
|
Sziasztok. Hatalmas kérdéssel fordulok hozzátok,nem kis segítség kellene elindulni egy projektben. Igazából a feladat meglenne,csak nem tudom,hogy álljak neki.
Amit szeretnék megcsinálni az az volna hogy van egy arduino amin van 3 led és egy 2 digites kijelző vagy mi a neve. Meg 4 gomb.
2 gombbal szeretném állítani a számokat a kijelzőn fel és le,majd amennyit a kijelző mutat addig világítson a led. Minden lednek külön ,külön szeretném állítani az idejét. Nem tudom ez lehetséges egyáltalán? A másik két gombbal szeretném a bevitt értékeket jóváhagyni illetve tovább lépni a következő led állítására.
Ajánlom ezt a pdf-et: Bővebben: Link
Van benne minden szép és jó, tanulni való!
Szia. Köszönöm a linket tanulmányozom
Szeretnék egy sring több értéket bele venni hogy (multiline string)!
String btn1 = ("ff4ab5","e0e020df");
De csak e0e020df marad állandó érték nek ff4ab5 értéktelen marad miért? A hozzászólás módosítva: Júl 7, 2018
Próbáld így:
void setup() {
Serial.begin(9600);
// put your setup code here, to run once:
String s_btn[] = {"ff4ab5", "e0e020df"};
Serial.print(s_btn[0]);
Serial.print(", ");
Serial.println(s_btn[1]);
}
void loop() {
// put your main code here, to run repeatedly:
}
Hibba kód hivatkozik!
WARNING: Category 'Language' in library ArduinoStreaming is not valid. Setting to 'Uncategorized'
C:\55555555555555555555555555555\password_lock\password_lock.ino: In function 'void loop()':
password_lock:99: error: no match for 'operator==' (operand types are 'String' and 'String [2]')
if (String(results.value, HEX) == btn1) {
^
C:\55555555555555555555555555555\password_lock\password_lock.ino:99:38: note: candidates are:
In file included from C:\Program Files\Arduino\hardware\arduino\avr\cores\arduino/Arduino.h:231:0,
from sketch\password_lock.ino.cpp:1:
C:\Program Files\Arduino\hardware\arduino\avr\cores\arduino/WString.h:142:16: note: unsigned char String::operator==(const String&) const
unsigned char operator == (const String &rhs) const {return equals(rhs);}
^
C:\Program Files\Arduino\hardware\arduino\avr\cores\arduino/WString.h:142:16: note: no known conversion for argument 1 from 'String [2]' to 'const String&'
C:\Program Files\Arduino\hardware\arduino\avr\cores\arduino/WString.h:143:16: note: unsigned char String::operator==(const char*) const
unsigned char operator == (const char *cstr) const {return equals(cstr);}
^
C:\Program Files\Arduino\hardware\arduino\avr\cores\arduino/WString.h:143:16: note: no known conversion for argument 1 from 'String [2]' to 'const char*'
exit status 1
no match for 'operator==' (operand types are 'String' and 'String [2]')
#include <IRremote.h>
/*Edit these settings*/
//Password and security
String pass = "123456"; //Password to unlock. be sure to edit the '5' inside '[]' to password length +1.
int chances = 3; //Chances before buzzer will start to buzz continuously.
bool afterChances = true; /*Is possible to enter password after
running out of chances. true = yes. (not recommended to set
false, Arduino must be restarted to enter password if set
to false.).If set true, buzzer will stop when correct password is
entered after running out of chances.*/
//Pins
int RECV_PIN = 11; //IR Reciever pin (PWM).
int greenLed = 13; //Green LED pin.
int redLed = 12; //Red Led pin.
int buzzer = 4; //Buzzer pin.
//remote buttons
//String btn1 = ("ff4ab5","e0e020df");
String btn1[] = {"ff4ab5", "e0e020df"};
//String btn1 = "ff4ab5"; //Your button 1 IR HEX code (in lower case). eg.: ff63ad
String btn2 = "ff0af5"; //Your button 2 IR HEX code (in lower case).
String btn3 = "ff08f7";
String btn4 = "ff6a95";
String btn5 = "ff2ad5";
String btn6 = "ff28d7";
String btn7 = "ff728d";
String btn8 = "ff32cd";
String btn9 = "ff30cf";
String btn0 = "fff00f";
String btnReset = "ff58a7"; // "OK"Your Reset button IR hex code.
//Misc
bool shouldBeep = true;
bool unlockSound = true;
/*Don't edit anything below this if you don't what you are doing.
Somethimes, it can cause high load to your arduino.
*/
bool locked = true;
String cPass = "";
int chance = 0;
String cmp = "----Distro Studios-----\n";
IRrecv irrecv(RECV_PIN);
decode_results results;
String str2 = "os-----\n";
void setup() {
pinMode(redLed, OUTPUT);
pinMode(greenLed, OUTPUT);
pinMode(buzzer, OUTPUT);
irrecv.enableIRIn();
Serial.begin(9600);
digitalWrite(redLed, LOW);
digitalWrite(greenLed, LOW);
Serial.print(cmp);
}
void loop() {
if (cmp.endsWith(str2) == false)
Serial.print("Error!");
else {
if (irrecv.decode(&results)) {
if (String(results.value, HEX) == btn1) {
Serial.print("1");
updatePass("1");
}
else if (String(results.value, HEX) == btn2) {
Serial.print("2");
updatePass("2");
}
else if (String(results.value, HEX) == btn3) {
Serial.print("3");
updatePass("3");
}
else if (String(results.value, HEX) == btn4) {
Serial.print("4");
updatePass("4");
}
else if (String(results.value, HEX) == btn5) {
Serial.print("5");
updatePass("5");
}
else if (String(results.value, HEX) == btn6) {
Serial.print("6");
updatePass("6");
}
else if (String(results.value, HEX) == btn7) {
Serial.print("7");
updatePass("7");
}
else if (String(results.value, HEX) == btn8) {
Serial.print("8");
updatePass("8");
}
else if (String(results.value, HEX) == btn9) {
Serial.print("9");
updatePass("9");
}
else if (String(results.value, HEX) == btn0) {
Serial.print("0");
updatePass("0");
}
else if (String(results.value, HEX) == btnReset) {
resetPass();
Serial.println("\nRESET");
}
irrecv.resume(); // Receive the next value
}
if (chance > chances)
digitalWrite(buzzer, HIGH);//buzzer
if (locked == true) {
digitalWrite(redLed, HIGH);
digitalWrite(greenLed, LOW);
}
else {
digitalWrite(redLed, LOW);
digitalWrite(greenLed, HIGH);
}
}
}
bool updatePass(String ch) {
if (locked == false)
return false;
beep();
if (updatable() == true) {
cPass += ch;
if (cPass.length() < pass.length()) {
}
else {
if (pass == cPass) {
locked = false;
digitalWrite(greenLed, HIGH);
digitalWrite(redLed, LOW);
chance = 0;
Serial.println("\nUNLOCKED");
if (unlockSound == true) {
delay(60);
digitalWrite(buzzer, HIGH);
delay(150);
digitalWrite(buzzer, LOW);
delay(100);
digitalWrite(buzzer, HIGH);
delay(200);
digitalWrite(buzzer, LOW);
delay(2000);
resetPass();
}
}
else {
cPass = "";
chance += 1;
digitalWrite(buzzer, HIGH);
delay(1000);
digitalWrite(buzzer, LOW);
Serial.println("\nWRONG PASSWORD!");
}
}
}
}
bool updatable() {
if (chance <= chances)
return true;
return afterChances;
}
void resetPass() {
cPass = "";
locked = true;
}
void beep() {
if (shouldBeep == true) {
digitalWrite(buzzer, HIGH);
delay(60);
digitalWrite(buzzer, LOW);
}
}
Ez egy string tömb, amit 2 elemel hoztál létre, 0, 1 cimmel:
String btn1[] = {"ff4ab5", "e0e020df"};
Az elsőre így hivatkozol: btn1[0]
És a másodikra pedig: btn1[1]
Vagy csinálhatod így:
String btn1[11] = {"ff4ab5", // string tömb 11 elemmel, az a 0-ás btn1[0]
"e0e020df",
"ff0af5", //Your button 2 IR HEX code (in lower case).
"ff08f7",
"ff6a95",
"ff2ad5",
"ff28d7",
"ff728d",
"ff32cd",
"ff30cf",
"fff00f" }; // ez a 10-es btn1[10]
if (String(results.value, HEX) == btn1[0] ) {
A hozzászólás módosítva: Júl 7, 2018
Értem!
string egyik értékre ff4ab5", "e0e020df sem ugrik az If !
String btn1[2] = {"ff4ab5", "e0e020df"};
if (String(results.value, HEX) == btn1[2]) //egyik értéket sem veszi figyelembe!
if (String(results.value, HEX) == btn1[0]) // csak ff4ab5 veszi figyelembe!
if (String(results.value, HEX) == btn1[1]) // csak e0e020df veszi figyelembe!
A hozzászólás módosítva: Júl 7, 2018
De csak 2 elem van, 0 és 1, 2-es nincsen!
if (String(results.value, HEX) == btn1[2]) nemjó!
if (String(results.value, HEX) == btn1[1]) ez van
A hozzászólás módosítva: Júl 7, 2018
Párhuzamosan nem müködik a srting kettö értéke ("ff4ab5", "e0e020df") az if ez mért van?
String btn1[2] = {"ff4ab5", "e0e020df"};
......
if (String(results.value, HEX) == btn1[1]) // csak e0e020df veszi figyelembe ff4ab5 nem ugrik!
A hozzászólás módosítva: Júl 7, 2018
Nem értem a kérdést!
Bővebben: Link
Próbáld így:
char btn1[8][2] = {"ff4ab5", "e0e020df"};
if(btn1[0][0] == "ff4ab5"){}
if (String(results.value, HEX) == btn1[0]) {
...
} else if(String(results.value, HEX) == btn1[1]){
...
}
A hozzászólás módosítva: Júl 7, 2018
Probálnék rövid definiciokat össze hozni mert nagyon fogy a 328 memoria...
|
|