Neurochirurgie minim invazivă
"Primum non nocere" este ideea ce a deschis drumul medicinei spre minim invaziv. Avansul tehnologic extraordinar din ultimele decenii a permis dezvoltarea tuturor domeniilor medicinei. Microscopul operator, neuronavigația, tehnicile anestezice avansate permit intervenții chirurgicale tot mai precise, tot mai sigure. Neurochirurgia minim invazivă, sau prin "gaura cheii", oferă pacienților posibilitatea de a se opera cu riscuri minime, fie ele neurologice, infecțioase, medicale sau estetice. www.neurohope.ro |
Arduino-blink led fara delay()
Last Updated: Apr 19 2016 22:20, Started by
dan3s2020
, Apr 19 2016 20:18
·
0
#1
Posted 19 April 2016 - 20:18
Ce este gresit?
int led1=8; int led2=9; int led3=12; int led4=13; void setup() { pinMode(8,OUTPUT); pinMode(9,OUTPUT); pinMode(12,OUTPUT); pinMode(13,OUTPUT); Serial.begin(9600); } int dif1=0; int st1=LOW; int st2=LOW; int st3=LOW; int st4=LOW; unsigned long time; void loop() { time=millis(); if((time-dif1)>=500){ if(st1==LOW){ }else{st1=LOW;} digitalWrite(led1,st1); } if((time-dif1)>=(1000)){ if(st2==LOW){ st2=HIGH; }else{st2=LOW;} digitalWrite(led2,st2); } if((time-dif1)>=(1500)){ if(st3==LOW){ st3=HIGH; }else{st3=LOW;} digitalWrite(led3,st3); } if((time-dif1)>=2000){ if(st4==LOW){ st4=HIGH; }else{st4=LOW;} digitalWrite(led4,st4); } dif1=time; } voiam ca ledurile sa se aprinda unu dupa altu la interval de 500ms si apoi sa se stinga la fel. Dar nu se intampla mai nimic asemanator,ma poate ajuta cineva? |
#2
Posted 19 April 2016 - 20:25
1. Incepe cu un singur LED.
2. Neavand vreun delay pe acolo, s-ar putea ca diferenta ta sa nu ajunga asa de sus (la 500). "Miros" eu ca dif1=time sau time=millis() tre' pus in vreun IF... Si ca mai tre' o citire temporara de millis... 3. Incepe cu pasul 1 Edited by dexterash, 19 April 2016 - 20:27. |
#3
Posted 19 April 2016 - 20:39
dexterash, on 19 aprilie 2016 - 20:25, said:
1. Incepe cu un singur LED. 2. Neavand vreun delay pe acolo, s-ar putea ca diferenta ta sa nu ajunga asa de sus (la 500). "Miros" eu ca dif1=time sau time=millis() tre' pus in vreun IF... Si ca mai tre' o citire temporara de millis... 3. Incepe cu pasul 1 da ai dreptate,am copiat prost,pusese dif1=time in ultimu IF.am facut cu un led insa... eu intelegeam ca time ajunge de la 0ms la 500ms fara sa execute nimic apoi sa faca prinum IF ,se aprinde primul led,apoi ajunge la 1s si se aprinde al doilea,ajunge la 1,5s se aprinde al 3lea ,la 2 s al patrulea si Dif1=2sec. Apoi o ia de la capat si incearca 2000-2000=500 (F) si ajunge la 2500-2000=500 (A) si incepe si stinge ledurile pana la al 4lea si tot asa... poate am inteles gresit functia millis().. Imi poti explica ce? |
#4
Posted 19 April 2016 - 20:46
millis doar citeste "milisecundele" curente (nu retin exact de cand, am impresia ca de la pornire/powerup).
tu ar trebui sa ai ceva de genul acesta (in mare): last_millis=millis(); loop (){ current_millis=millis(); if ((current_millis-last_millis)>500){ last_millis=current_millis; _schimba_stare_led; } } Pentru 2 leduri as face asa: last1_millis=millis(); last2_millis=last1_millis; loop (){ current_millis=millis(); if ((current_millis-last1_millis)>500){ last1_millis=current_millis; _schimba_stare_led_1; } if ((current_millis-last2_millis)>1000){ last2_millis=current_millis; _schimba_stare_led_2; } } Posibil sa ma bata logica, dar sper ca nu prea tare. Edited by dexterash, 19 April 2016 - 20:47. |
#5
Posted 19 April 2016 - 21:20
dexterash, on 19 aprilie 2016 - 20:46, said:
millis doar citeste "milisecundele" curente (nu retin exact de cand, am impresia ca de la pornire/powerup). tu ar trebui sa ai ceva de genul acesta (in mare): last_millis=millis(); loop (){ current_millis=millis(); if ((current_millis-last_millis)>500){ last_millis=current_millis; _schimba_stare_led; } } Pentru 2 leduri as face asa: last1_millis=millis(); last2_millis=last1_millis; loop (){ current_millis=millis(); if ((current_millis-last1_millis)>500){ last1_millis=current_millis; _schimba_stare_led_1; } if ((current_millis-last2_millis)>1000){ last2_millis=current_millis; _schimba_stare_led_2; } } Posibil sa ma bata logica, dar sper ca nu prea tare. Se aprinde al doilea led la 1s si se stinge,celalalt nimic. |
#6
Posted 19 April 2016 - 22:17
Mai verifica un pic codul scris, mai pune un led etc... Si vezi ca in prima bucata de cod data de tine ai o oroare:
if(st1==LOW){ //aici trebuie o comanda care cam lipseste...// }else{st1=LOW;} digitalWrite(led1,st1); |
#7
Posted 19 April 2016 - 22:20
ba nu.merge, nu faceam eu nimic aici:
"if((time-dif1)>=500){ if(st1==LOW){ }else{st1=LOW;} digitalWrite(led1,st1); }" Multumesc |
Anunturi
▶ 0 user(s) are reading this topic
0 members, 0 guests, 0 anonymous users