Fórum témák
- • Felajánlás, azaz ingyen elvihető
- • Akkumulátor töltő
- • Elektronikai témájú könyvek újságok
- • Internetes rádióvevő
- • Rádióamatőrök topikja
- • LED szalag
- • Klíma szervizelés, javítás
- • TDA7294 végerősítő
- • Háromfázisú aggregátor
- • Elfogadnám, ha ingyen elvihető
- • Nagyfeszültségű tápegység
- • Szintetizátor javítás
- • Alternativ HE találkozó(k)
- • Kondenzátor
- • Dobozolási technikák, műszerdobozok
- • Boombox javítás
- • Sütő javítás
- • 3D nyomtatás
- • Erősítő mindig és mindig
- • Arduino
- • Mosógép vezérlők és általános problémáik
- • Számítógép hiba, de mi a probléma?
- • Hangszórójavítás (otthon)
- • Laptop javítás, tuning
- • Elektromos távirányítós kapunyitó
- • Autós erősítős kérdések, problémák
- • Mikrohullámú sütő javítás, magnetron csere, stb.
- • Villanymotor
- • Vegyes barkácsfogások
- • Digitális óra
- • Hűtőgép probléma
- • TV hiba, mi a megoldás?
- • Szünetmentes táp javítása, élesztése
- • Erősítő építése elejétől a végéig
- • Műhelyünk felszerelése, szerszámai
- • Kombikazán működési hiba
- • Függvénygenerátor építése
- • SMD, mi a típusa?
- • Hibrid erősítő
- • Suzuki Swift elektronika
- • Videomagnó problémák
- • Általános antennás kérdések, válaszok
- • Érdekességek
- • STK erősítők javítások
- • DC-DC konverter max. kapacitív terhelése
- • Audiofil, High End Audio
- • Központi fűtés (vezérlés)
- • IMI villanymotor
- • Borhűtő vezérlő panel
- • Androidos okos telefonok
- • Klíma beszerelése, fűtés-hűtés házilag
- • Súlymérés
- • Varrógép elektronika
- • Analóg oszcilloszkóp javítása
- • Videoton EA-7386-s erösítő
» Több friss téma
|
A klónok CH340 Soros-USB illesztőjének drivere ( Letöltés)
Köszi a gyors válaszokat.
Andyka. Működik, de nem tökéletes, ha a 10889298 kódos távirányítót használva jó, de a 2819073 kódost használva megzavaródik a „technika”. Tehát a VAGYban az első feltétel nem jó.
Tasznka. A „raindit” az egy változó (van belőle 1-2-3 de még lehet lesz több is) nem igaz és hamis állítás, ha jól értelmezem amit írtál.
Még elég kezdő vagyok ebben a programírásban.
Csatolom az egész kódot, hátha így jobban látható mit akarok csinálni.
Tehát a kérdés maradt, hogy használjam a VAGY utasítást, vagy más utasítást ami jó lehet? Válaszokat köszönöm.
// Proba 1.2v (vegleges???)
// Arduino 1.6.6
// Udvari vilagitas. 433Mhz taviranyitoval. (autos)
// Itthon, a hazon van.
#include <RCSwitch.h>
RCSwitch mySwitch = RCSwitch();
// const int nygomb1 = 5; //nyomogomb ledmodul
// const int nygomb2 = 7; //nyomogomb fenyveto
// const int rele = 10; //fenyveto rele-je
const int ledlampa = 9; //Vezerelt 9-es kimenet
int led=0; //Ledmodul fenyerejenek allapota
int feny=0; //Fel vagy le fenyeroallitas valtozoja
int ido=0; //Keslettetett kikapcsolashoz az ido
int raindit=0; //Be-Ki kapcsolas es a rainditas valtozoja
void setup() {
pinMode(ledlampa, OUTPUT);
// pinMode(rele, OUTPUT);
// pinMode(nygomb1, INPUT); //nyomogomb ledmodul
// pinMode(nygomb2, INPUT); //nyomogomb fenyveto
mySwitch.enableReceive(0); //Receiver on inerrupt 0 => pin #2
Serial.begin(9600); //a 2-es pin a bemenet (RF-is modultol)
}
void loop() {
analogWrite(9, led); //ledlampa fenyenek frissitese
Serial.print(" raindit: ");
Serial.print(raindit, DEC);
Serial.print(" ido: ");
Serial.print(ido, DEC);
Serial.print(" led: ");
Serial.print(led, DEC);
Serial.print(" feny: ");
Serial.println(feny, DEC);
//RF taviranyito kod = 10889298 autos
//RF taviranyito kod = 2819073 ledes
if (mySwitch.available()) {
int value = mySwitch.getReceivedValue();
//if (mySwitch.getReceivedValue() == 2819073 && raindit == 0 ) { // BE-kapcsolas
if ((mySwitch.getReceivedValue() == 2819073) || (mySwitch.getReceivedValue() == 10889298) && (raindit == 0)) { // BE-kapcsolas
led=5; //4% fenyero
analogWrite(9, led);
feny=1; //aktiv a fenyero felfele
raindit=1; //nincs KI-kapcsolas es rainditas
delay(100);
}
if ((mySwitch.getReceivedValue() == 2819073) || (mySwitch.getReceivedValue() == 10889298) && (raindit == 2)) { // KI-kapcsolas
led=250;
analogWrite(9, led);
feny=2;
ido=0; //idozito nullazasa
raindit=1; //nincs KI-kapcsolas es rainditas
delay(100);
}
if ((mySwitch.getReceivedValue() == 2819073) || (mySwitch.getReceivedValue() == 10889298) && (raindit == 3)) { //rainditas
ido=1; //idozito ujrainditasa
led=255; //100% fenyero
analogWrite(9, led);
delay(1000);
}
mySwitch.resetAvailable();
delay(50);
}
if (feny==1 && led<255){
led=led+5; //fenyeroszabajozasa FEL-fele
delay(50); //fenyerovaltozas sebessege
}
if (led==255){ //ha teljes a fenyero
feny=0; //leall a fenyeroseg allitas (100%-on van)
ido++; //kesleltettet kikapcsolas inditasa
raindit=2; //aktiv a KI-kapcsolas
delay(50); //50ms x 1000(ido) = 50mp a kesleltetett idozites
}
if (ido==600){ //kesleltettet kikapcsolas 1000=50 masodperccel
led=170; //ledlampa vilogtatasa 2-szer
analogWrite(9, led);
delay(100);
led=255;
analogWrite(9, led);
delay(100);
led=170;
analogWrite(9, led);
delay(100);
led=255;
analogWrite(9, led);
delay(200);
ido=0; //idozito nullazasa
feny=3; //aktiv a fenyero lefele
raindit=3; //aktiv a rainditas
}
if (feny==2 && led>0){ //nyomogombra
led= led-5; //fenyeroszabajozas LE-fele (alap 5)
delay(50); //fenyerovaltozas sebessege
if (led==0){ //teljes elhalvanyulaskor
feny=0;
raindit=0;
}
}
if (feny==3 && led>0){ //idozitore
led= led-1; //fenyeroszabajozas LE-fele (alap 1)
delay(50); //fenyerovaltozas sebessege
if (led==0){ //teljes elhalvanyulaskor
feny=0;
raindit=0;
}
}
}
Szerintem így kellene:
if ( ( (mySwitch.getReceivedValue() == 2819073) || (mySwitch.getReceivedValue() == 10889298) ) && (raindit == 0))
Vagy így:
if (
((mySwitch.getReceivedValue() == 2819073) && (raindit == 0))
||
((mySwitch.getReceivedValue() == 10889298) && (raindit == 0))
){
//whatever
}
Ugyanis az kell neked, hogy igaz legyen a feltétel ha a raindit értéke 0 és a kapott kód 2819073 vagy 10889298
Szerintem igy:
if (mySwitch.available()) {
int value = mySwitch.getReceivedValue();
if ((value == 2819073) || (value == 10889298)) { // BE-kapcsolas
if(raindit == 0){
led=5; //4% fenyero
analogWrite(9, led);
feny=1; //aktiv a fenyero felfele
raindit=1; //nincs KI-kapcsolas es rainditas
delay(100);
}
else if (raindit == 1) {
}
else if (raindit == 2) { // KI-kapcsolas
led=250;
analogWrite(9, led);
feny=2;
ido=0; //idozito nullazasa
raindit=1; //nincs KI-kapcsolas es rainditas
delay(100);
}
else if (raindit == 3) { //rainditas
ido=1; //idozito ujrainditasa
led=255; //100% fenyero
analogWrite(9, led);
delay(1000);
}
mySwitch.resetAvailable();
delay(50);
}
}
Sziasztok!
Vettem két attiny85-öt. UNO-val programoztam volna fel, de véletlenül az egyiknél external 16MHz-et választottam ki.
Most meg bootloadernél ezt írja ki: avrdude: Yikes! Invalid device signature.
Double check connections and try again, or use -F to override
this check.
Meg lehet valahogy még menteni ezt?
A másiknál már internalt választottam az működik is tökéletesen.
Ha kötsz rá külső órajelet már látni fogja.(szerintem)
Kristály nélkül is lehetséges lenne? Az arduino adna ki valamelyik kimenetén 16MHz-et.
if (mySwitch.getReceivedValue() == 2819073 && raindit == 0 )
raindit == 0 -nál ami nálam (!raindit) ami ua. feltételből indultam ki,hogy az csak 0 -ként jó
Talán ez jó lesz:
// Proba 1.2v (vegleges???)
// Arduino 1.6.6
// Udvari vilagitas. 433Mhz taviranyitoval. (autos)
// Itthon, a hazon van.
#include <RCSwitch.h>
RCSwitch mySwitch = RCSwitch();
// const int nygomb1 = 5; //nyomogomb ledmodul
// const int nygomb2 = 7; //nyomogomb fenyveto
// const int rele = 10; //fenyveto rele-je
const int ledlampa = 9; //Vezerelt 9-es kimenet
int led=0; //Ledmodul fenyerejenek allapota
int feny=0; //Fel vagy le fenyeroallitas valtozoja
int ido=0; //Keslettetett kikapcsolashoz az ido
int raindit=0; //Be-Ki kapcsolas es a rainditas valtozoja
void setup() {
pinMode(ledlampa, OUTPUT);
// pinMode(rele, OUTPUT);
// pinMode(nygomb1, INPUT); //nyomogomb ledmodul
// pinMode(nygomb2, INPUT); //nyomogomb fenyveto
mySwitch.enableReceive(0); //Receiver on inerrupt 0 => pin #2
Serial.begin(9600); //a 2-es pin a bemenet (RF-is modultol)
}
void loop() {
analogWrite(9, led); //ledlampa fenyenek frissitese
Serial.print(" raindit: ");
Serial.print(raindit, DEC);
Serial.print(" ido: ");
Serial.print(ido, DEC);
Serial.print(" led: ");
Serial.print(led, DEC);
Serial.print(" feny: ");
Serial.println(feny, DEC);
//RF taviranyito kod = 10889298 autos
//RF taviranyito kod = 2819073 ledes
if (mySwitch.available()) {
long value = mySwitch.getReceivedValue();
// int value = mySwitch.getReceivedValue();
// innen a value-t használd,mert minden mySwitch.getReceivedValue() újraolvas,így bejöhet másik érték,mielőtt lefutna
// Az int value stimmel??? mert az int általában 2 byte de itt mintha nagyobb értékek lennének
if (((value == 2819073) || (value == 10889298)) && (raindit == 0)) { // BE-kapcsolas
led=5; //4% fenyero
analogWrite(9, led);
feny=1; //aktiv a fenyero felfele
raindit=1; //nincs KI-kapcsolas es rainditas
delay(100);
}
if (((value == 2819073) || (value == 10889298)) && (raindit == 2)) { // KI-kapcsolas
led=250;
analogWrite(9, led);
feny=2;
ido=0; //idozito nullazasa
raindit=1; //nincs KI-kapcsolas es rainditas
delay(100);
}
if (((value == 2819073) || (value == 10889298)) && (raindit == 3)) { //rainditas
ido=1; //idozito ujrainditasa
led=255; //100% fenyero
analogWrite(9, led);
delay(1000);
}
mySwitch.resetAvailable();
delay(50);
}
if (feny==1 && led<255){
led=led+5; //fenyeroszabajozasa FEL-fele
delay(50); //fenyerovaltozas sebessege
}
if (led==255){ //ha teljes a fenyero
feny=0; //leall a fenyeroseg allitas (100%-on van)
ido++; //kesleltettet kikapcsolas inditasa
raindit=2; //aktiv a KI-kapcsolas
delay(50); //50ms x 1000(ido) = 50mp a kesleltetett idozites
}
if (ido==600){ //kesleltettet kikapcsolas 1000=50 masodperccel
led=170; //ledlampa vilogtatasa 2-szer
analogWrite(9, led);
delay(100);
led=255;
analogWrite(9, led);
delay(100);
led=170;
analogWrite(9, led);
delay(100);
led=255;
analogWrite(9, led);
delay(200);
ido=0; //idozito nullazasa
feny=3; //aktiv a fenyero lefele
raindit=3; //aktiv a rainditas
}
if (feny==2 && led>0){ //nyomogombra
led= led-5; //fenyeroszabajozas LE-fele (alap 5)
delay(50); //fenyerovaltozas sebessege
if (led==0){ //teljes elhalvanyulaskor
feny=0;
raindit=0;
}
}
if (feny==3 && led>0){ //idozitore
led= led-1; //fenyeroszabajozas LE-fele (alap 1)
delay(50); //fenyerovaltozas sebessege
if (led==0){ //teljes elhalvanyulaskor
feny=0;
raindit=0;
}
}
}
- Tbarath. Az első válaszod nem jó, error-t ír rá. A második válaszod ugyanúgy működik mint Andyka válasza.
- Kapu48. A te verziód lett a nyerő. Köszönöm szépen. Igaz a VALUE azonosítást nem fogadta el. Maradt az eredeti: if ((mySwitch.getReceivedValue() == 2819073) || (mySwitch.getReceivedValue() == 10889298))
Köszönöm a hozzászólásokat minden.
Tansznka vette észre, hogy az int kicsi oda!
Használd a long definiciót:
unsigned long value = mySwitch.getReceivedValue();
vagy csak:
long value = mySwitch.getReceivedValue();
Amelyiket elfogadja?
és maradj a if(value...) vizsgálatánál! A hozzászólás módosítva: Nov 13, 2017
Köszönöm, ez a megoldás is tökéletesen működik.
És még 3db-al is működik.
if (((value == 2819073) || (value == 2819076) || (value == 10889298)) && (raindit == 0))
Amúgy ezt nézd át,és ami a legfontosabb,hogy ne sajnáld a zárójeleket feltételvizsgálatoknál,mert pl. itt ha value = 2819073,és a raindit = 2 ,akkor a
if ((value == 2819073) || (value == 10889298) && (raindit == 2))
hamis lesz,mert a predencia szabály miatt a (value == 10889298)) && (raindit == 2) hamis lesz.
Ha berakod a zárójelet,akkor jó lesz
if (((value == 2819073) || (value == 10889298)) && (raindit == 2))
Ami ugye az szinte az én válaszom, csak az adott lib működésétől függ
mert ha a mySwitch.getReceivedValue() mindig a legutolsó kapott értéket adja vissza, akkor működik. Ha nem, akkor előbb el kell pakolni változóba.
De maga az if struktúra ugyanaz.
Ja, csak épp a függvényhívás drága. Eszi a vermet ezerrel, sok CPU idő kell neki, ráadásul ha nem változóban van a végeredmény hanem származtatott akkor még számolni is kell vele (még több CPU). Ha később vmiért megváltozik a működése és változhat menet közben az értéke, akkor pedig borul a programlogika.
Azaz, ne hívogass feleslegesen, tárold inkább az értéket.
Bocsika,de ezt a hozzászólásomat ne vegyétek figyelembe,mert mást írtam,mint amit szerettem volna...de a link az jó .Picit el voltam varázsolva
Mint Csatti2 és én Idézet: „// innen a value-t használd,mert minden mySwitch.getReceivedValue() újraolvas,így bejöhet másik érték,mielőtt lefutna” javasoltuk,hogy átmeneti,fix változókba kell kiolvasni az értéket,mert ha az if -ek között jön be az,ami a kövinél is jó,akkor mind a kettő lefut,és azt fogja csinálni,amit nem szeretnél
Egy CNC projektbe lehet, hogy csak egy L293D-t használok?
Ha nem, akkor lehet egy másodikat egy ULN2003AGP-vel helyettesíteni?
DVD meghajtó léptető motorát kellene vezérelnie.
Előre is köszönöm!
Amelyien kicsi az a motor, bármi meghajtja.
Bekötni hogyan kell a másodikat?
Vagy az arduino kódon mit kell változtatni?
Itt a kód meg a video.
Ha esetleg valamit kell rajta változtatni, legyen szíves valaki írja meg nekem!
Én csak az elöbbiekben leírt IC-ket tudom használni.
Sziasztok! Arduino témában még nagyon új vagyok, és elakadtam. (PIC-ben már van rutinom). Építettem az autómba egy fedélzeti computert, aminek a lelke arduino nano. Viszont szeret váratlanul lefagyni. Van amikor az indítás pillanatában, amikor a kijelzőn 1-2 betű fut be az üdvözlő szövegből, van amikor menet közben 1-5 percen belül. Magát a modult már többen utánépítették, így a szoftverhibát kimerem zárni. Ötlet van valakinek, mitől fagyhat le? Van rajta egy led ami amíg fut az eszköz addig villog, viszont a fagyás pillanatától sötét marad és nem villog. Álló motornál is lefagy, illetve járónál is. Merre induljak el szerintetek?
Kellene egy jobb leírás a HW-ről.
Feltettem a panelról a képet illetve a kapcsolási rajzot is.
Szia!
A 7809 elé(és a dióda közé) egy 100µF és 100nF-os kondi és utána pedig egy 100nF-os kondi.
Hiányzik a stabil feszültség/szűrés. Próba szerencse.
Nekem is ez volt a következő tippem. Viszont, ha gyújtás nélkül laptop USB-ről használom akkor is fennáll a szituáció.
Esetleg a Reset láb felhúzó ellenállása rajta van a nyákon? Egy külső felhúzó ellenállás?
Délután kibontom megnézem. Kínából rendeltem egy ESD zacsiba érkezett. Így nem tartom kizártnak a fizikai sérülést is. Egyébként a LED-nek üzem közben kell villognia?
A 4 led közül melyikre gondolsz,ami villog? RX/TX a soros adatkapcsolat során villog, a power tápfesz esetén, míg az L jelűt a felhasználói program határozza meg.
Tehát elvileg lehet villoghat is.Meg nem is.
De most nézem: Miért használod a 7809-et? Miért nem 7805 és akkor kapásból a 5V- ki/bemenetre kötnéd, így kihagynád a játékból az Arduino saját feszültségstabilizátorát? A hozzászólás módosítva: Nov 15, 2017
Az volt a kapcsoláson, az került bele a 7809, de szerintem kiszedem, és direktbe hagyom a tápot a generátor ha jár is, akkor is 14V körül lesz a feszültség. Az L jelű led villog nekem addig, amíg le nem fagy az eszköz.
Miért nem mellékeled a programot? Abból ki lehetne olvasni miért villog az L LED és hogyan kell működni a kapcsolásnak.
|
|