Poglej prejšnjo temo :: Poglej naslednjo temo |
Avtor |
Sporočilo |
marko-x Član
Pridružen-a: Tor 02 Nov 2004 14:21 Prispevkov: 325 Aktiv.: 1.46 Kraj: prekmurje
|
Objavljeno: Ned Okt 23, 2016 11:23 pm Naslov sporočila: Arduino in sub |
|
|
Pozdravljeni,
Sestavil sem si avtomat za vklop Led traku glede na PIR senzor, dodal pa sem še foto upor kot pogoj za vklop pod določeno vrednostjo svetlobe.
Program deluje OK, problem se pojavi, ker se podprogram prekine ko foto upor zazna preveliko svetlobo (led trak).
Rad bi da se podprogram izvede do konca (ne glede na vrednost na foto uporu).
Program se izvaja na digispark Attiny85
Prilagam program. Vprašanje je kje ga lomim.
L.P.
Marjan
Koda: |
void Ledon();
int zakasnitev;
int pir;
int adc_beri;
int pwmizhod = 1;
int svetloba;
int svetlobaSkala;
void setup() {
pinMode(0, INPUT); // pin P0
pinMode(1, OUTPUT); // pin P1
}
void loop() {
adc_beri = analogRead(1); //pin P2
zakasnitev = map(adc_beri, 0, 1023, 200, 60000); // min. 2S, max. 60s
pir = digitalRead(0); //pin P0
svetloba = analogRead(0); //pinP5
if (pir == HIGH & svetloba > 250){
Ledon(); //sub
}
}
void Ledon() {
for (int i=0; i <=255; i++){
analogWrite(pwmizhod, i);
delay(20);
}
delay(zakasnitev);
for (int i=255; i >=0; i--) {
analogWrite(pwmizhod, i);
delay(20);
}
} |
|
|
Nazaj na vrh |
|
|
tilz0R Član
Pridružen-a: Čet 31 Maj 2012 15:39 Prispevkov: 898 Aktiv.: 6.21 Kraj: Črnomelj
|
Objavljeno: Ned Okt 23, 2016 11:43 pm Naslov sporočila: |
|
|
Ne razumem problema, vidim le problem, da imaš ogromne delaye v for zanki ki trajajo neskončno časa.
_________________ Knowledge sharing is caring.
majerle.eu | stm32f4-discovery.net
Nazadnje urejal/a tilz0R Tor Okt 25, 2016 12:24 am; skupaj popravljeno 1 krat |
|
Nazaj na vrh |
|
|
marko-x Član
Pridružen-a: Tor 02 Nov 2004 14:21 Prispevkov: 325 Aktiv.: 1.46 Kraj: prekmurje
|
Objavljeno: Pon Okt 24, 2016 7:26 pm Naslov sporočila: |
|
|
Z Delay funkcijo ni nič narobe, traja točno toliko koliko je zahtevano.
Problem je da if stavek v glavnem programu prekine podprogram ko je na spremenljivki "svetloba" več kot 250, čeprav je podprogram šele na sredini.
Zakaj to naredi je vprašanje? Rad bi da se podprogram "Ledon" izvrši v celoti brez prekinitve.
|
|
Nazaj na vrh |
|
|
matjazkariz Član
Pridružen-a: Sre 03 Nov 2004 18:09 Prispevkov: 1026 Aktiv.: 4.61
|
Objavljeno: Pon Okt 24, 2016 7:53 pm Naslov sporočila: |
|
|
Razloži, kako lahko if stavek prekine izvajanje funkcije Ledon()...
Da nimaš mogoče težave zaradi watchdog timerja? Je omogočen?
_________________ LP, Matjaž |
|
Nazaj na vrh |
|
|
Jaka57 Moderator
Pridružen-a: Ned 12 Dec 2004 21:47 Prispevkov: 5773 Aktiv.: 25.92 Kraj: Grosuplje
|
Objavljeno: Pon Okt 24, 2016 8:32 pm Naslov sporočila: |
|
|
Če bi pa napisal kako imaš to povezano bi bila enostavnejša uganka.
Koda je relativno enostavna in verjamem (preprian sem, da bi šlo enostavneje),
toda brez tvojega hardweara lahko samo ugibamo.
Ja in tilz0r je to napisal brez poznavanja tvojega HDWja
_________________ Lp, Jaka
Nazadnje urejal/a Jaka57 Pon Okt 24, 2016 9:13 pm; skupaj popravljeno 1 krat |
|
Nazaj na vrh |
|
|
marko-x Član
Pridružen-a: Tor 02 Nov 2004 14:21 Prispevkov: 325 Aktiv.: 1.46 Kraj: prekmurje
|
Objavljeno: Pon Okt 24, 2016 8:57 pm Naslov sporočila: |
|
|
Zadeva naj bi delovala tako:
PIR senzor zazna osebo (vhod 0)
če je osvetlite enaka ali večja 250 (AI0)
potem gre v zanko kjer počasi dvigne osvetlitev na DO1 do 255 PWM
počaka določen čas ki ga nastavimo na AI1
spusti osvetlitev na 0 DO1 PWM
in gre v main zanko ter pri pravih pogojih ponovi vajo.
Problem je da ko foto upor zazna svetlobo oz. (prekorači prag za pogoj) led traka ugasne takoj ne glede v kateri sekvenci je.
Program sem preizkusil na simulatorju deluje OK na plati pa ne.
Plošča je digispark z attiny85.
|
|
Nazaj na vrh |
|
|
marko-x Član
Pridružen-a: Tor 02 Nov 2004 14:21 Prispevkov: 325 Aktiv.: 1.46 Kraj: prekmurje
|
Objavljeno: Pon Okt 24, 2016 8:58 pm Naslov sporočila: |
|
|
zadeva mi že malo para živce.
|
|
Nazaj na vrh |
|
|
marko-x Član
Pridružen-a: Tor 02 Nov 2004 14:21 Prispevkov: 325 Aktiv.: 1.46 Kraj: prekmurje
|
Objavljeno: Pon Okt 24, 2016 9:01 pm Naslov sporočila: |
|
|
watchdog timer ne vem če je omogočen, kje bi to preveril.
Ko foto upor ne zazna zadosti svetlobe iz led traka program deluje normalno, kot je
zamišljen.
|
|
Nazaj na vrh |
|
|
Jaka57 Moderator
Pridružen-a: Ned 12 Dec 2004 21:47 Prispevkov: 5773 Aktiv.: 25.92 Kraj: Grosuplje
|
Objavljeno: Pon Okt 24, 2016 9:12 pm Naslov sporočila: |
|
|
marko-x je napisal/a: |
zadeva mi že malo para živce. |
Meni pa ne, ampak, lepo bi bilo, če bi možakar pokazal, kako je to fizično naredil.
Hec je. da je koda v redu, seveda, če je senzor pravilno priključen, glede na kodo!
_________________ Lp, Jaka |
|
Nazaj na vrh |
|
|
marko-x Član
Pridružen-a: Tor 02 Nov 2004 14:21 Prispevkov: 325 Aktiv.: 1.46 Kraj: prekmurje
|
Objavljeno: Pon Okt 24, 2016 9:28 pm Naslov sporočila: |
|
|
Našel napako. A0 je na pinu P5 (plošča) kar je na procesorju reset.
Program se je pri osvetljenem foto uporu resetiral.
|
|
Nazaj na vrh |
|
|
Branez Moderator
Pridružen-a: Pon 14 Apr 2003 7:21 Prispevkov: 7770 Aktiv.: 34.88 Kraj: Koprivnica HR
|
Objavljeno: Pon Okt 24, 2016 10:02 pm Naslov sporočila: |
|
|
@ marko-x: Se ti ne zdi da bi se blio lepo zahvaliti?
Jaka57 je napisal/a: |
...
Hec je. da je koda v redu, seveda, če je senzor pravilno priključen, glede na kodo! |
_________________ The true sign of intelligence is not knowledge but imagination.
Creativity is intelligence having fun!
Albert Einstein |
|
Nazaj na vrh |
|
|
marko-x Član
Pridružen-a: Tor 02 Nov 2004 14:21 Prispevkov: 325 Aktiv.: 1.46 Kraj: prekmurje
|
Objavljeno: Tor Okt 25, 2016 7:50 am Naslov sporočila: |
|
|
Ja hvala lepa. Hec je da sem nalagal nov bootlader. Prejšnji je imel izklopljeno funkcijo reseta.
L.P.
Marjan
|
|
Nazaj na vrh |
|
|
Jaka57 Moderator
Pridružen-a: Ned 12 Dec 2004 21:47 Prispevkov: 5773 Aktiv.: 25.92 Kraj: Grosuplje
|
Objavljeno: Tor Okt 25, 2016 5:46 pm Naslov sporočila: |
|
|
marko-x je napisal/a: |
...Hec je da sem nalagal nov bootlader. Prejšnji je imel izklopljeno funkcijo reseta.... |
Čak, ali ni to stvar Fuse Bitov in ne Bootloaderja?
Opis: |
|
Velikost datoteke: |
109.84 KB |
Pogledana: |
14 krat |
|
_________________ Lp, Jaka |
|
Nazaj na vrh |
|
|
marko-x Član
Pridružen-a: Tor 02 Nov 2004 14:21 Prispevkov: 325 Aktiv.: 1.46 Kraj: prekmurje
|
Objavljeno: Čet Okt 27, 2016 2:22 pm Naslov sporočila: |
|
|
Ja je stvar fuse bitov. Tega nisem označil.
|
|
Nazaj na vrh |
|
|
|