60 nap alatt Arduino #10 - Prell

A "60 nap alatt Arduino" tanfolyam házi feladatai és közvetlen témái
betonbokor
Újonc
Újonc
Hozzászólások: 7
Csatlakozott: 2014. március 18. kedd, 10:27

Re: 60 nap alatt Arduino #10 - Prell

Hozzászólás Szerző: betonbokor »

Köszönöm a segítséget tovább dolgozok rajta:-)
Avatar
suszitibi
Újonc
Újonc
Hozzászólások: 2
Csatlakozott: 2011. szeptember 2. péntek, 6:00

Re: 60 nap alatt Arduino #10 - Prell

Hozzászólás Szerző: suszitibi »

Sziasztok
Elakadtam a nyomógombos leckénél.
Szerettem volna átírni, hogy alaphelyzetben ne történjen semmi, de gombnyomásra kezdjen villogni a LED.
Viszont nem értem a program működését. Melyik rész a lassú, melyik a gyors villogás. Mikor kell a blokkokat elválasztani?

void setup(){
pinMode(6, INPUT);
// D6 bemenet - kapcsolo
pinMode(7, OUTPUT);
// D7 kimenet - LED
digitalWrite(6, HIGH);
//D6 belso felhuzo
}

void loop() {
if (digitalRead(6) == HIGH) {
//nyomogomb nem nyomott
delay(900);
//900 msec szunet
}
delay (100);
// 100 msec varakozas
digitalWrite(7, HIGH);
//LED bekapcsol
if (digitalRead(6) == HIGH) {
//nyomogomb nem nyomott
delay(900);
//900 msec varakozas
}
delay (100);
//100 msec varakozas
digitalWrite(7, LOW);
//LED kikapcsol
}

Ez az alapprogram, ami váltja a gyors - lassú villogást a gombnyomásra.
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10191
Csatlakozott: 2005. december 9. péntek, 7:00

Re: 60 nap alatt Arduino #10 - Prell

Hozzászólás Szerző: Robert »

Rajzolj egy folyamatábrát...

Start
.
.
do
ha Gomb=nyomva {
led HIGH;
var;
LED LOW;
Var;
}
else
{
var;
}
loop


Valami ilyesmi lesz...
Avatar
suszitibi
Újonc
Újonc
Hozzászólások: 2
Csatlakozott: 2011. szeptember 2. péntek, 6:00

Re: 60 nap alatt Arduino #10 - Prell

Hozzászólás Szerző: suszitibi »

Köszönöm a választ. Nemsokára megyek zenélni, de holnap ha kihevertem magam, nekilátok újra.
tibusio
Újonc
Újonc
Hozzászólások: 1
Csatlakozott: 2015. január 21. szerda, 7:50

Re: 60 nap alatt Arduino #10 - Prell

Hozzászólás Szerző: tibusio »

Csak egy javaslat: A nyomógomb prell kérdés pontosabb megértéséhez egy olyasfajta feladat kéne, hogy minden második vagy harmadik megnyomásra váltson a LED villogás sebességet. Ekkor tényleg érzékelni kell a prell-t, különben összevissza fog villogni a program. Ehhez viszont változókat kell kezelni, ami gondolom csak később jön. A prell tárgyalását ez utánra javasolnám tenni.
Avatar
furbyhun
DrótVégénSzéndarab
Hozzászólások: 44
Csatlakozott: 2015. február 14. szombat, 21:18

Re: 60 nap alatt Arduino #10 - Prell

Hozzászólás Szerző: furbyhun »

Sziasztok!

A következő problémát kellene megoldanom: tárolom el a kilohertz nagyságrenddel mintavételezett analóg jelet SD-re, és közben egy nyomógombot kellene figyelni, amelynek megnyomásakor a fájlba egy speciális sor kerülne (tulajdonképpen eseményjelzés). A prell itt is gondot okoz ugye, de ha várok 5 ms-t, akkor ott kihagyás van a jelrögzítésben. Erre tudnátok valami szoftveres megoldást, vagy hardveresen a legegyszerűbb, egy kondenzátort a kapcsolóval párhuzamosan kötni, és az RC-tag időállandójára hagyjam a kérdés megoldását? :) (Az esemény jelzésének pontossága nem gond, elég, ha körülbelül abban a másodpercben bekerül a marker a fájlba)
photogyulai
DrótVégénSzéndarab
Hozzászólások: 25
Csatlakozott: 2015. május 19. kedd, 0:37

Re: 60 nap alatt Arduino #10 - Prell

Hozzászólás Szerző: photogyulai »

Tisztelt Urak!
Hasonló időzítési probléma miatt tenném ki az elakadásjelző háromszöget.
Teljesen kezdő vagyok.Ha rossz helyre írtam ilyesmi kérlek jelezzétek

Egy "gépkocsi index" vagy ha úgy tetszik "timelapse intervallum" időzítést szeretnék kódolni, de nikt gút még.
Amit próbáltam/szeretnék >> hogy "B" gombnyomására(kvázi On gomb) induljon egy ledvillogás/kamera INTERVALLUM exponálás (természetesen ismétlődve) majd megint "B megnyomására hagyja abba (kvázi off gomb)

Vagy be tudom kapcsolni, de akkor úgy marad (loopban ragad a függvény) és nem tudom off ba állítani.
Vagy csak a gomb nyomva tartásáig villog

Ilyesmi(ke)t próbáltam>> számos variációban... lehet hogy csak egy zárójelet teszek rossz helyre, de lehet az elv is rossz ?!?!

unsigned long onTime;
int onOff =0;
int intervalum = 5000;

void setup()
{
onTime = millis();
pinMode(13, OUTPUT); //ellenőrző led
pinMode(A0, INPUT); //LCD Keypad A0-ás bemenet
digitalWrite(A0, HIGH); //Bemenet belső felhúzó bekapcs
}

void loop() {
lcd.setCursor(8,0);
lcd.print(millis()/1000);
int x;
x = analogRead (0);
// reading = onOff;

if (x < 40 && onOff==0) { // Mondjuk ez a B gomb megnyomása és bekapcs
onOff=1;
delay(300);
}
else if (x < 40 && onOff==1) { // Mondjuk ez a B gomb megnyomása és kikapcs
onOff=0;
delay(300);

}
if (onOff==1) { //Ez meg volna az időzítés a villogasra, ami mukodik is szepen ha onmagaban van fenti ki/be nélkül
digitalWrite(13, HIGH); // LED bekapcs
onTime = millis();
}
if(millis() - onTime > intervalum)
{
digitalWrite(13, LOW); // LED kikapcs
}
}

Minden segítséget köszönök szépen!
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10191
Csatlakozott: 2005. december 9. péntek, 7:00

Re: 60 nap alatt Arduino #10 - Prell

Hozzászólás Szerző: Robert »

Problémák:

Gombállapot nem analogread(). Na jó, LCD Keypad esetén analóg háló van rajta....
De: A kikapcsolásnál ne csak a ledet kapscold ki, hanem a státuszát is!
photogyulai
DrótVégénSzéndarab
Hozzászólások: 25
Csatlakozott: 2015. május 19. kedd, 0:37

Re: 60 nap alatt Arduino #10 - Prell

Hozzászólás Szerző: photogyulai »

no igen igen próbáltam azt is, hogy csak a sima loop-ba gombnyomás nélkül teszek egy feltételt az analogread-en kívül gombállapotot
pl:
void loop
if (onOff=1){
bekapcs
késletet
kikapcs
}

de így meg -mivel onnantól, hogy onOff=1 ez mindig igaz- nem lehet kikapcsolni (ha egyszer bekapcsoltam) :-)

netről töltöttem le code-okat, de 300-400 soros, más ember által írt állományokat kezdő fejjel átlátni >>> túl veszélyes ;-)
Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

Re: 60 nap alatt Arduino #10 - Prell

Hozzászólás Szerző: kapu48 »

onOff=1 azt jelenti: onOff legyen egyenlő 1-el!

onOff==1 azt jelenti: onOff egyenlő e 1-el?

Nem mind 1!
photogyulai
DrótVégénSzéndarab
Hozzászólások: 25
Csatlakozott: 2015. május 19. kedd, 0:37

Re: 60 nap alatt Arduino #10 - Prell

Hozzászólás Szerző: photogyulai »

igen párdon ezt -csak itt- pongyola mód írtam, a kódban helyesen van :-)
de úgysem működik :-DD

Külföldi oldalakat nézegetek, de ott is vagy on/off vagy folyamatos villogásos pédák vannak ... mind a kettő tök egyszerű csak a kettő összehozása nem. :-)
(legalábbis nekem) (még) >:-)

ha van hasznos tanács valahol azt megköszönöm!

B
photogyulai
DrótVégénSzéndarab
Hozzászólások: 25
Csatlakozott: 2015. május 19. kedd, 0:37

Re: 60 nap alatt Arduino #10 - Prell

Hozzászólás Szerző: photogyulai »

Probléma megoldva.
Részletesen leírva a megoldás egy új topicban #16 Időzítés néven!
Viva la rezisztansz!
B
gyengeb
Újonc
Újonc
Hozzászólások: 12
Csatlakozott: 2015. szeptember 5. szombat, 14:55

Re: 60 nap alatt Arduino #10 - Prell

Hozzászólás Szerző: gyengeb »

Sziasztok!

Prellmentesítést szeretném megoldani szoftveresen.

Átnéznétek a következő kódot? Köszönöm.

int relay=2;
int buttonpin=8;
int state;

void setup()
{
pinMode(buttonpin,INPUT_PULLUP);
pinMode(relay,OUTPUT);
int state=LOW;

}

void loop()
{
long ido=millis();

if(digitalRead(buttonpin)==LOW)
{
if((digitalRead(buttonpin)==LOW) && (ido>300) && (state==LOW))
{
digitalWrite(relay,HIGH);
state=HIGH;
}
}

if(digitalRead(buttonpin)==LOW)
{
if((digitalRead(buttonpin)==LOW) && (ido>300) && (state==HIGH))
{
digitalWrite(relay,LOW);
state=LOW;
}
}

}
Avatar
csegebiga
Chipgyilok
Hozzászólások: 288
Csatlakozott: 2015. március 27. péntek, 21:27

Re: 60 nap alatt Arduino #10 - Prell

Hozzászólás Szerző: csegebiga »

1. szerintem rossz helyen van a
long ido=millis();

ennek a gomblenyomás érzékelése után kéne lenni.
2. egyszer.
3. gombnyomás érzékelése után egy várakozó ciklus kéne 300ms ig és utána a vizsgálat.

4. if((digitalRead(buttonpin)==LOW) && (ido>300) && (state==LOW))
ez az ido>300 az esetek tulnyomó részében igaz lesz, nem?
bekapcs után az első 300 ms, és a millis() tulcsordulása után 300 ms ig false
egyébként true

helyette a
if((digitalRead(buttonpin)==LOW) && (millis()>ido+300) && (state==LOW))
és ugyanígy a
if((digitalRead(buttonpin)==LOW) && (ido>300) && (state==HIGH))
helyett a
if((digitalRead(buttonpin)==LOW) && (millis()>ido+300) && (state==HIGH))
kellene szerintem
gyengeb
Újonc
Újonc
Hozzászólások: 12
Csatlakozott: 2015. szeptember 5. szombat, 14:55

Re: 60 nap alatt Arduino #10 - Prell

Hozzászólás Szerző: gyengeb »

Köszönöm a választ.
De valami nyűgje volt.
Ezért ezzel a megoldással oldottam meg eddig:

void loop()
{
long ido;

if(digitalRead(buttonpin)==LOW)
{
ido=millis();
if((digitalRead(buttonpin)==LOW) && (ido>300) && (state==LOW))
{
digitalWrite(relay,HIGH);
state=HIGH;
}
}

if(digitalRead(buttonpin)==LOW)
{
ido=millis();
if((digitalRead(buttonpin)==LOW) && (ido>300) && (state==HIGH))
{
digitalWrite(relay,LOW);
state=LOW;
}
}

}
Válasz küldése