dany_cta Postat Mai 30, 2017 Partajează Postat Mai 30, 2017 (editat) Nu primeste impulsuri, el de fapt verifica starea pinului low sau high. Nu merge folosit in cazul tau pentru ca programul respectiv nu face debounce deci la numaratoare o sa iasa un numar mult mai mare de apasari decat reale. A doua problema este ca el verifica starea butonului intr-o bucla, dar daca butonul este apasat si eliberat in timpul procesarii ulterioare, nu in momentul verificarii ? O sa rezulte un pas pierdut. Editat Mai 30, 2017 de dany_cta Link spre comentariu
Tataie1 Postat Mai 30, 2017 Autor Partajează Postat Mai 30, 2017 Daca impulsul e dat digital si nu prin buton mai e nevoie de debounce ? Verificarea buclei cred ca depinde si de fregventa cu care vin impulsurile si de viteza de calcul al procesorului. Daca as avea programul intreg as putea sa verific cand ar putea fi depasit. Link spre comentariu
Liviu M Postat Mai 30, 2017 Partajează Postat Mai 30, 2017 Off-topic: Gresit. Corect ar fi: x++; Aiurea, in C/C++ i++; si i=i+1; sunt echivalente. On-topic:Probabil folosind o intrare cu intrerupere (la Arduino Uno e pinul 8) se pot numara impulsurile primite de driver-ul axei care te intereseaza. Link spre comentariu
dany_cta Postat Mai 30, 2017 Partajează Postat Mai 30, 2017 (editat) Echivalente nu inseamna similare, in timp ce in primul caz se face o incrementare directa a variabilei, in al doilea caz se calculeaza totalul intre doua valori si apoi se seteaza in variabila, este o mica diferenta de viteza si de frumusete al codului sursa. Versiunea cu i=i+x se foloseste atunci cand x difera de 1 desi si atunci este recomandabila folosirea unei sintaxe de genul i+=x chiar daca in cazul asta chiar putem sa le consideram similare dar simplifica codul sursa. Obligatoriu trebuiesc folosite intreruperi aici, o intrerupere care incrementeaza variabila contor combinata cu codul postat de mine cateva posturi mai sus, in bucla principala, ar trebui sa dea solutia perfecta la problema. Editat Mai 30, 2017 de dany_cta Link spre comentariu
Liviu M Postat Mai 30, 2017 Partajează Postat Mai 30, 2017 Echivalente nu inseamna similare... Da, comentatiul asta e OK, catalogarea expresiei i=i+1 ca gresita e gresita. Sunt sanse mari ca compilatoarele actuale sa faca singure conversia dintr-o forma in cealalta. Asta pe de o parte. Pe de alta, in alte limbaje de programare sintaxa i++ nu exista. Stiu, mediul Arduino "merge cu c++", da' asta nu trebuie sa impiedice pe "vorbitorii" de alte limbaje sa posteze. Link spre comentariu
dany_cta Postat Mai 30, 2017 Partajează Postat Mai 30, 2017 Atunci de ce zicem c++ si nu zicem limbajul c=c+1 ? Link spre comentariu
Liviu M Postat Mai 30, 2017 Partajează Postat Mai 30, 2017 (editat) Un citat din "tata lu' c": Atunci de ce zicem c++ si nu zicem limbajul c=c+1 ? Pentru c-asa a vrut Bjarne. Si cum copiilor e frumos sa le zici cum le-au zis parintii... Edit: Mi-a mucit forumul formatarea. :( Editat Mai 30, 2017 de Liviu M Link spre comentariu
dany_cta Postat Mai 30, 2017 Partajează Postat Mai 30, 2017 (editat) Corect, ambele functioneaza, desi in programarea pro se recomanda faza cu ++. Doar il intepam putin pe nickrvl, el este cu sudura, ce stiu aparatele alea de sudura de incrementari de variabile ? Ontopic: 1. faci o functie in care incrementezi o variabila globala 2. adaugi o intrerupere pe pinul catre portul paralel catre functia respectiva. 3. in bucla principala folosesti ceva de genul cum ti-am postat mai sus sa verifici variabila si sa faci ceea ce trebuie, si sa o resetezi. 4. rulezi programul si te bucuri de rezultate (erori de compilare). simplu 5... dai fumul la o parte si cumperi alt arduino dupa ce iese fum din el ca ai conectat releul pe direct. Editat Mai 30, 2017 de dany_cta 1 Link spre comentariu
Tataie1 Postat Iunie 12, 2017 Autor Partajează Postat Iunie 12, 2017 Sunt la punctul 4. Rulez programul. Totul e OK. Problema e ca incepe sa numere cand apropii mana de pini si se opreste cand o indepartez. Ce fac/nu fac bine ? Link spre comentariu
dany_cta Postat Iunie 12, 2017 Partajează Postat Iunie 12, 2017 Problema e ca incepe sa numere cand apropii mana de pini si se opreste cand o indepartez. Ce fac/nu fac bine ? Apropii mana de pini. Ai face bine sa ti mana deoparte. Ai pus ground-ul comun si pe arduino ? Incearca alte valori la intrerupere, nu la schimbare, ci doar pe high. Poti chiar sa te gandesti sa folosesti un invertor schmitt. Link spre comentariu
Tataie1 Postat Iunie 12, 2017 Autor Partajează Postat Iunie 12, 2017 De la ground este. Asa facea si daca-l apropiam/departam de masa. Parca vea senzor pe pini. Eu am Uploadat sketchul si am vrut sa vad daca e in ordine. Pe urma mi-am dat seama ca il influentez cu mana. Multumesc. Acum mai departe. Ma straduiesc sa nu ajung in punctul 5 ! Pe arduino am pinul 2 setat ca Input. Pe driver am un pin -pulse cu 5V. Daca leg pinul "pulse 5V" cu "pinul 2 arduino" printr-o rezistenta de 100 ohms si cu groundul arduino printr-o rezistenta pull down 10 K si groundul arduino de groundul driver o sa fie Ok ? Link spre comentariu
dany_cta Postat Iunie 12, 2017 Partajează Postat Iunie 12, 2017 Ma depaseste domeniul, eu nu pot sa iti raspund la intrebarea asta. Poate apare vre-unul mai luminat sa ne ajute. Link spre comentariu
mars01 Postat Iunie 12, 2017 Partajează Postat Iunie 12, 2017 Mai bine folosesti un optocuplor si faci separare galvanica. Daca intrarea in driver nu este deja dotata cu un Schmitt trigger poti adauga dupa iesirea din optocuplor un trigger Schmitt plus un eventual filtru trece jos (rezistor pull up cu condensator de cca 10nF catre GND_ul Arduino) plasat intre iesire opto si intrare trigger Schmitt. Link spre comentariu
Tataie1 Postat Iunie 13, 2017 Autor Partajează Postat Iunie 13, 2017 Salut mars01, Cum ar trebui sa arate schematic ce zici tu? Intrarea in driver are sigur optocuploare. Conexiunea data de Arduino arata asa: Pulldown sau Pullup. Switchul si 5V este pulsul pe pinul de la driver. P2 este pinul Arduino D2 selectat ca Input. GND arduino ar trebui sa fie legat la GND driver ? Link spre comentariu
Tataie1 Postat Iunie 13, 2017 Autor Partajează Postat Iunie 13, 2017 Pe un tutorial arduino am gasit schema de mai sus. Cred ca e valabila in cazul unui buton. Comentariul lor este asta : " The pull-down resistor here is the 10K resistor. When the switch is held down, the 100Ω resistor is connected directly to 5V. When the switch is released, the 100Ω resistor is connected to the 10K resistor which pulls it down to ground. Here's how to think of it: When you press the button and connect the 100Ω resistor to 5V, the button has a very small resistance (less than 1 Ω!), so it provides a strong pull to 5V.The 10KΩ resistor is also connecting the 100Ω resistor to ground, but since the 10KΩ resistor has 10000 times more resistance than the button, its a very weak pull to ground and can't compete. The strong 5V connection overpowers the weak ground connection and the input pin reads HIGH. However, when the switch is disconnected, there is no longer a strong pull to 5V. In fact, its let go completely. But there is still weak pull to ground. Despite being a weak connection, it's better than nothing and so the resistor pulls the input pin to LOW. " 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