Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Diferenta ATS generator si PV

La multi ani @Lotusisrael!

Declarație primar

Contestare amenda politia locala
 PC se restarteaza cu erori ecran ...

Mercedes atego 815 oprire motor

Ce contine Creion rani dupa ras?

Filtru sedimente inainte de pompa?
 Paște fericit!

electrician constructor video curs

Cum pot bloca transferul de date ...

Ce reprezinta in chimie abrevieri...
 Google pay ma taxeaza in timp ce ...

Kia Picanto 2022 - Problema motor?

Durere umar AC Joint

Care este cea mai sanatoasa paine?
 

Arduino - automatizare DIY

* * * * * 2 votes
  • Please log in to reply
1573 replies to this topic

#955
ramadoss

ramadoss

    Member

  • Grup: Members
  • Posts: 599
  • Înscris: 24.07.2012
Citisem si mi-am notat in memorie, ca dispozitivele de la vechile mouse-uri sunt potrivite pentru sa ceva. Daca cumva gasesti unul, poti incerca...
Defapt, cred ca asa ceva e reprezentat in prima ta poza.

#956
florin71_skoda

florin71_skoda

    Guru Member

  • Grup: Banned
  • Posts: 18,070
  • Înscris: 02.01.2008
Pai nu stiu daca are sens sa ma apuc de desfacut maus-uri vechi ca sa le iau "potentiometrele", atita timp cit un "buton" dinasta (Modul Codor Rotativ), ca ala din poza, l-am cumparat din Ro cu 8,98lei. Din China vad ca-l pot lua pe la un 0,50$ (Rotary Encoder Module Brick Sensor Development for arduino KY-040) :D
Mai trebuie doar sa aflu cum sa-i fac codul, ca sa faca ce vreau eu. :D

#957
automatecasa

automatecasa

    Junior Member

  • Grup: Members
  • Posts: 160
  • Înscris: 20.10.2016
Pai cu denumirea de potentiometru m-ai indus in eroare.
Dupa descrierea erorii as incerca sa numar cel putin 2 pasi intr-o directie ca sa derulez meniul in acea directie.

Si poti sa ignori obiectia cu fiabilitatea sau sugestia cu joystick-ul. Dpdv fiabilitate ai ales ce trebuie.

Edited by automatecasa, 24 March 2017 - 10:14.


#958
radurus

radurus

    Senior Member

  • Grup: Senior Members
  • Posts: 8,027
  • Înscris: 16.06.2006
Encoderele de la mouse fac aceeasi treaba dar nu cu contacte mecanice ci cu 2 fotocelule IR.

Encoderul chinezesc cred ca este inscriptionat gresit. DT si CLK sunt de fapt iesirile A si B ale encoderului in cuadratura.
Sunt 2 semnale dreptunghiulare defazate intre ele in functie de directia de rotire.

Nu am vazut nici un exemplu de cod pentru encoder dar vezi
http://playground.ar.../RotaryEncoders

Edited by radurus, 24 March 2017 - 10:14.


#959
florin71_skoda

florin71_skoda

    Guru Member

  • Grup: Banned
  • Posts: 18,070
  • Înscris: 02.01.2008

 automatecasa, on 24 martie 2017 - 10:11, said:

Pai cu denumirea de potentiometru m-ai indus in eroare.

Posted Image

 automatecasa, on 24 martie 2017 - 10:11, said:

... as incerca sa numar cel putin 2 pasi intr-o directie ....

Buna idee Posted Image


 radurus, on 24 martie 2017 - 10:13, said:

Encoderul chinezesc cred ca este inscriptionat gresit. DT si CLK sunt de fapt iesirile A si B ale encoderului in cuadratura.
Sunt 2 semnale dreptunghiulare defazate intre ele in functie de directia de rotire.

La fel zic si eu.


 radurus, on 24 martie 2017 - 10:13, said:

Nu am vazut nici un exemplu de cod pentru encoder dar vezi
http://playground.ar.../RotaryEncoders

Am citit acolo, insa exemplele respective ma cam depasesc. Mai dureaza pina o sa le inteleg Posted Image
Singurul limbaj de programare pe care am incercat sa-l invat si ma descurcam in el acceptabil, a fost BASIC-ul, de care m-am apucat cu 1-2 ani inainte de revolutie si fireste ca la scurt timp l-am abandonat. Asa ca acum merg mai mult pe bijbiite si pe ghicite cu arduino asta Posted Image.

------
Codul de la care am pornit si am inceput sa-l modific si care merge bine, numai ca nu face ce vreau eu, este asta:
Spoiler

Am mai incercat si alt cod care a mers bine:
Spoiler

Fireste, ambele coduri le-am modificat putin, ca sa mearga pe LCD-ul meu.

Edited by florin71_skoda, 24 March 2017 - 10:29.


#960
radurus

radurus

    Senior Member

  • Grup: Senior Members
  • Posts: 8,027
  • Înscris: 16.06.2006
Ideea simpla din spatele encoderului este urmatoarea:
- ambele semnale sunt pull-up cu rezistoare 10k.
- un semnal se considera activ cand trece din high in low.
- daca semnalul B trece in low si A este deja low, inseamna ca avem o directie (stanga de ex)
- daca semnalul A trece in low si B este deja low asta inseamna ca encoderul a fost miscat in cealalta directie.

Adica atunci cand un semnal trece in low, trebuie sa verifici starea celuilalt semnal pereche

#961
florin71_skoda

florin71_skoda

    Guru Member

  • Grup: Banned
  • Posts: 18,070
  • Înscris: 02.01.2008
Am gasit si un cod cu low si high, insa pe mine ala ma incurca, deoarece as vrea sa leg "butonul" la 3 pini analogici. Legat butonul pe pini digitali, functiona si ala cu low si high, dar cind am mutat butonul pe analogici, nu a mai vrut sa mearga si pina la urma am renuntat la el.

------

Eu am gasit pe net ca ar functiona asa:

Attached File  RotaryEncoderWaveform.gif   3.25K   4 downloads

De aici eu inteleg ca atunci cind fac o rotire, de 1 clik, spre dreapta
- prima data B trece sus,
- dupaia trece si A sus
- dupaia B revine jos si A ramine sus
- dupaia vine si A jos

Edited by florin71_skoda, 24 March 2017 - 10:56.


#962
radurus

radurus

    Senior Member

  • Grup: Senior Members
  • Posts: 8,027
  • Înscris: 16.06.2006
Asa e cu encoderul.
Doar ca noi folosim ca activa trecerea din 1in 0 deoarece avem rezistoare de pull-up.
Privind ciclic semnalul, devine neimportant daca are sau nu pull-up's.

Pinii digitali e recomandat sa fie folositi pentru encoder. Aceia au si intrerupere, adica nu trebuie sa citesti starea tot timpul ci, in momentul evenimentului programul este intrerupt si controlerul afla ca s-a schimbat ceva. Uzual, noi facem citire ciclica la 5-15-50ms. Este inutil sa citesti un encoder timp de 2 ore doar pentru ca din timp in timp s-ar putea sa fie miscat.

Te complici daca vrei sa folosesti pinii analogici. Trebuie sa citesti nivele de tensiune in prima faza, sa stabilesti stari high/low unor praguri, sa compari tensiunile citite cu pragurile...

Edited by radurus, 24 March 2017 - 11:01.


#963
florin71_skoda

florin71_skoda

    Guru Member

  • Grup: Banned
  • Posts: 18,070
  • Înscris: 02.01.2008
Problema ar fi ca nu am pini digitali destui, ca de la 4 la 10 sunt ocupati cu LCD-ul. Pina acum foloseam doar 11, 12, 13 pentru relee si acum as fi vrut sa folosesc si pini 2, 3 tot pentru relee.
Ar mai fi pini 0 si 1, adica RX si TX, pe astia am voie sa-i folosesc ?  Fie pentru relee, fie pentru buton ?

Pina acum aveam 6 intrerupatoare legate la un pin analogic, cu rezistente intre ele. Pe astea nu trebuia sa le tot citesc ? Daca da, atunci parca nu-i asa de deranjant ca acum citesc 2 pini de la enconder :D

#964
ramadoss

ramadoss

    Member

  • Grup: Members
  • Posts: 599
  • Înscris: 24.07.2012
http://www.14core.co...cd-with-sclsda/

Cauta un modul din asta ptr LCD...

#965
radurus

radurus

    Senior Member

  • Grup: Senior Members
  • Posts: 8,027
  • Înscris: 16.06.2006

 florin71_skoda, on 24 martie 2017 - 11:19, said:

Problema ar fi ca nu am pini digitali destui, ca de la 4 la 10 sunt ocupati cu LCD-ul. Pina acum foloseam doar 11, 12, 13 pentru relee si acum as fi vrut sa folosesc si pini 2, 3 tot pentru relee.
Ar mai fi pini 0 si 1, adica RX si TX, pe astia am voie sa-i folosesc ?  Fie pentru relee, fie pentru buton ?

Pina acum aveam 6 intrerupatoare legate la un pin analogic, cu rezistente intre ele. Pe astea nu trebuia sa le tot citesc ? Daca da, atunci parca nu-i asa de deranjant ca acum citesc 2 pini de la enconder :D
Se numeste optimizare.

La fel citesc si eu ADC la 100ms.
Te sfatuiesc sa treci pe un display cu i2c.
Poti pune si releele pe i2c sau 8 leduri (modulul poate fi configurat ca input sau output)
I2c foloseste pinii analogici 4 si 5.
Asa iti poti elibera pinii digitali pe care poti conecta ulterior card/network (SPI), buzzer, comunicatie OneWire, serial Wifi module...

Yellow Display IIC I2C TWI SP  I Serial Interface 2004 20X4 Character LCD Module
http://s.aliexpress.com/euiI3YZ3
NEW IIC/I2C/TWI/SPI Serial Interface Board Module Port for Arduino 1604 2004 LCD
http://s.aliexpress.com/J7neQ3YJ
PCF8574 IO Expansion Board I/O Expander I2C-Bus Evaluation Development Module
http://s.aliexpress.com/qAFVvQzQ

Edited by radurus, 24 March 2017 - 11:50.


#966
florin71_skoda

florin71_skoda

    Guru Member

  • Grup: Banned
  • Posts: 18,070
  • Înscris: 02.01.2008
Deocamdata mai am 3 module LCD shield si pina nu ma scap de ele nu stiu daca mai cumpar altele. Doar daca o sa constat ca nu am de ales. Posted Image

Attached File  lcd_shield3.jpg   37.54K   5 downloads

-------
Am uitat ca mai am si sondele de temperatura DS18B20 Posted Image Deci mai trebuie si pentru astea un pin digital Posted Image

Radurus, nu mi-ai spus daca pot folosi pini RX si TX pentru enconderul KY-040, sau pentru comanda relee, sau sonde DS18B20

Edited by florin71_skoda, 24 March 2017 - 17:43.


#967
radurus

radurus

    Senior Member

  • Grup: Senior Members
  • Posts: 8,027
  • Înscris: 16.06.2006
Rx si tx sunt semnalele pe care le folosesti cand incarci sketch-ul si cand monitorizezi serial (serial. print, etc.)
Din ce am mai auzit, astea 2 resurse pot fi folosite dar cand incarci program trebuie sa nu ai nimic conectat pe ele.

#968
raduk

raduk

    Instalatorul de Iași

  • Grup: Senior Members
  • Posts: 7,330
  • Înscris: 30.09.2007

 florin71_skoda, on 24 martie 2017 - 17:37, said:

Deocamdata mai am 3 module LCD shield si pina nu ma scap de ele nu stiu daca mai cumpar altele. [...]
Ia și comandă-ți de pe acum LCD cu I2C. Pînă ajunge... sigur ai scăpat și de cele 3 pe care le mai ai. Posted Image

Edited by raduk, 24 March 2017 - 18:09.


#969
florin71_skoda

florin71_skoda

    Guru Member

  • Grup: Banned
  • Posts: 18,070
  • Înscris: 02.01.2008

 radurus, on 24 martie 2017 - 18:04, said:

Rx si tx sunt semnalele pe care le folosesti cand incarci sketch-ul ....

Acum mi-am adus aminte. Posted Image  Mi-ai mai spus odata, dar am uitat. Posted Image

Am mai studiat intre timp ceva sketch-uri, dar momentan nu am ajuns la un rezultat final. Mai sap si miine internetul.

Edited by florin71_skoda, 25 March 2017 - 00:13.


#970
maiandrei

maiandrei

    Member

  • Grup: Members
  • Posts: 734
  • Înscris: 26.07.2003
1. Poți citi pinii analogici in mod digital, cu DigitalRead.
https://www.arduino....AnalogInputPins

2. O implementare cu rotary encoder, cu filmulet, tutorial, cod, detaliat frumos - [ https://www.youtube-nocookie.com/embed/eObcgJHtQHw?feature=oembed - Pentru incarcare in pagina (embed) Click aici ]

#971
florin71_skoda

florin71_skoda

    Guru Member

  • Grup: Banned
  • Posts: 18,070
  • Înscris: 02.01.2008
Cred ca am gasit pina la urma un sketch care functioneaza ok si urmeaza sa vad cum o sa-l transform intr-un meniu simplu. Deocamdata zic ca am inteles cum sta treaba (sa vedem daca o fi asa)

Acum am o alta "dilema" care ma dispera ca nu stiu sa o rezolv :D . Am inceput sa invat cum este cu enconderul cu sketch-uri care numara din 1 in 1. Problema ar fi ca daca trec de 10 si dupaia ma intorc inapoi la 9, pe afisaj ramine "coada" ca nu-si face clear si-mi afiseaza 90 in loc de 9. Cum as putea rezolva problema ? Fie prin stergerea cozi, adica un soi de clear, fie prin afisarea de zerouri in fata, adica in loc de 1 sa-mi afiseze de la bun inceput 01 ???

#972
radurus

radurus

    Senior Member

  • Grup: Senior Members
  • Posts: 8,027
  • Înscris: 16.06.2006
Trebuie sa transformi variabila ta in "string" cu lungime fixa si apoi sa ii dai print pe ecran la coordonatele dorite.
Uite exemplu din codul meu.
Definesti variabila string si lungimea stringului.
Convertesti variabila in string prin sprintf (serial print)
Ce inseamna ceea ce este intre ghilimele?
- rezervi 2 caractere pentru o variabila u(nsigned)
- pui 2 puncte
- rezervi inca 2 caractere pentru o variabila u(nsigned) dar daca variabila are doar o cifra pe spatiul gol pui un 0 (procent, zero, doi, u)
-...
-...
- urmeaza denumirea celor 3 variabile pentru care am rezervat cate 2 caractere

lcd.setCursor(12, 0);
char ceas_hhmmss[8];
  sprintf(ceas_hhmmss, "%2u:%02u:%02u", hours, minutes, seconds);
  lcd.print(ceas_hhmmss);

Codul acesta imi arata ceasul pe ecran, primul rand, incepand cu coloana 12 pana la 19.
Ora este extrasa de pe i2c de la ds3231.
Codul trebuie rulat cel putin o data pe secunda daca vreau sa vad cum se incrementeaza secundele.
Daca ora se schba de la 23 in 1, ceasul este in acelasi loc iar locul unde a fost 2, ramane gol.

Edited by radurus, 25 March 2017 - 13:51.


Anunturi

Bun venit pe Forumul Softpedia!

0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

Forumul Softpedia foloseste "cookies" pentru a imbunatati experienta utilizatorilor Accept
Pentru detalii si optiuni legate de cookies si datele personale, consultati Politica de utilizare cookies si Politica de confidentialitate