Laci Postat Februarie 4, 2008 Partajează Postat Februarie 4, 2008 In cazul asta debounce-ul nu-i necesar, dar am vrut sa subliniez acest lucru, de exemplu daca ai vrea sa numeri de cate ori a fost apasat butonul, atunci fara debounce ai avea niste suprize:), ca intro apasare sunt o multime de comutari. Link spre comentariu
wbg_1000 Postat Februarie 5, 2008 Partajează Postat Februarie 5, 2008 Nu ar strica totushi sa pui shi o rezistentza de 100 de ohmi in serie pe butonul ala. Io am stricat microcontrollere (ma rog doar portul respectiv) fara rezistentza aia. Link spre comentariu
criss Postat Februarie 5, 2008 Autor Partajează Postat Februarie 5, 2008 Am facut curatenie in cod si am curatat debounce-ul.deja incep sa inteleg cum merge treaba cu butoanele,numaratoarea de la debounce am sal folosesc intrun proiect deoarece o sa am nevoie de o mumaratoare,inca nu inteleg partea aceea dar am sa studiez. Primul: la apasarea butonului de pe portulD2 se aprinde ledul de pe portulB3. #include <avr/io.h>#include <util/delay.h>unsigned char SimpleDebounce(unsigned char SampleTick, unsigned char SampleCount){unsigned char ret=1;unsigned char i;for(i=0;i<SampleCount;i++) {if ( !(PIND&(1<<2)) ){ret = 0;break; }}return ret;}int main(void){DDRB |= (1<<3); while(1){if(SimpleDebounce(250,250)) // if buton state is 1 for 250 samples{ PORTB |= (1<<3); // set led pin }else{ PORTB &= ~(1<<3); // reset led pin} }} al dolea: la apasarea butoanelor de pe porturilleD2si4 se aprinde ledul de pe portulB3 iar la apasarea ambelor butoane deodata se aprinde un alt led de pe portulB5. #include <avr/io.h>#include <util/delay.h>void initiere_port (void);void intrare_1 (void);void intrare_2 (void);void intrare_3 (void);int main(void){ initiere_port();while(1){ intrare_1(); intrare_2(); intrare_3(); } }void initiere_port(void){ DDRB |= (1<<3); DDRB |= (1<<5);}void intrare_1(void){if(!(PIND&(1<<2))) // if buton state is 1 for 250 samples{ PORTB &= ~(1<<3); // reset led pin }else{ PORTB |= (1<<3); // set led pin } }void intrare_2(void){if(!(PIND&(1<<4))) // if buton state is 1 for 250 samples{ PORTB &= ~(1<<3); // reset led pin }else{ PORTB |= (1<<3); // set led pin } }void intrare_3(void){ if(!(PIND&(1<<2)) & !(PIND&(1<<4)) ) { PORTB &= ~(1<<5); } else { PORTB |= (1<<5); }} O problema as mai avea,de fapt 2(pt masina vreau sa fac un montaj):2 tensiuni vor fi, una negativa, cealalta pozitiva). - doresc sa aplic o tensiune de +14.5v(sa reziste macar pana la 20v) la intrare, in loc de buton cum sa il conectez la port? -si a doua cum aplic o tensiune negativa (gndul va fi comun si la controler si de la modulul de unde vine semnalul).la acesta am facut un desen.R1 -4.7k iar R2 in jur de 220ohm cum a zis @wbg_1000. Multumesc pt tot ajutorul acordat pana acuma, chiar mia prins foarte bine. Link spre comentariu
Laci Postat Februarie 5, 2008 Partajează Postat Februarie 5, 2008 pentru tensiuni mai mari trebuie sa folosesti divizor resistiv, si un zener pentru protectie(nu se stie niciodata), pentru tensiuni negative trebuie sa folosesti un inversor, cu un amplificator operational. Link spre comentariu
criss Postat Februarie 5, 2008 Autor Partajează Postat Februarie 5, 2008 ex. pt +20v de cat sa pun rezistenta?de 50k...100k?la masa nu trebuie sa conduc nici o rezistenta?iar pt tensiunile negative de ce trebuie inversor si amplificator operational?schema ce am facut nui bun?au maqsa comuna...si ce inversor,amp. operational as putea utiliza?eventual o schema.multumesc Link spre comentariu
Laci Postat Februarie 5, 2008 Partajează Postat Februarie 5, 2008 in primul rand schema ta nu-i divizor, nu stiu ce este... intrare gnd... ce-i ala?uitate la schema atasata, +15V e intrare, -2V la fel intrare, daca legi tensiune mai mare de -2V nu-ti activeaza tranzistorul, daca vrei tensiune mai mica pui zener mai mare, invers pui zener mai mic, de ex. vrei ca sa vezi pe pin si tensiune de 0V, pui zener de 5V. ( 5V-Vzener) Link spre comentariu
criss Postat Februarie 5, 2008 Autor Partajează Postat Februarie 5, 2008 Prin gnd inteleg masa(de la intrerupator de la usa masini). Link spre comentariu
Postări Recomandate
Creează un cont sau autentifică-te pentru a adăuga comentariu
Trebuie să fi un membru pentru a putea lăsa un comentariu.
Creează un cont
Înregistrează-te pentru un nou cont în comunitatea nostră. Este simplu!
Înregistrează un nou contAutentificare
Ai deja un cont? Autentifică-te aici.
Autentifică-te acum