Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
pelerinaj in Balcik

Noul format Jpegli iși propu...

Dade, dade

Parola la lock screen
 Deparazitare externa pisici fara ...

Seriale turcesti/coreene online H...

Merita un Termostat Smart pentru ...

Sfat achizitie MTB Devron Riddle
 Problema mare cu parintii= nervi ...

switch microtik

Permis categoria B la 17 ani

Sfaturi pentru pregatirea de eval...
 Crapaturi placa

cum imi accesez dosarul electroni...

Momentul Aprilie 1964

Sursa noua - zgomot ?
 

Arduino - automatizare DIY

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

#1099
florin71_skoda

florin71_skoda

    Guru Member

  • Grup: Banned
  • Posts: 18,070
  • Înscris: 02.01.2008
Am incercat tot soiul de coduri in care am folosit attachInterrupt(0, ISR_Dreapta, CHANGE); si   attachInterrupt(1, ISR_Stinga,  CHANGE); , insa nu am obtinut un rezultat satisfacator pentru aplicatia mea. Coduri in sine ar functiona perfect, insa functioneaza doar pina in momentul in care atasez o sonda DS18B20, moment in care devine cam 50% functionala apasare (push_buton) si cam 10% functionala rotirea dreapta/stinga.  Pur si simplu citirea sondei da peste cap citirea enconderului. Deaia am si ajuns sa bag millis la citirea sondei, cu toate ca nu vreu sa folosesc millis. De fapt eu caut o solutie in care sa renunt la millis, sau eventul sa folosesc millis ocazional, si eventual sa si resetez millis daca se poate.

LE
Nu stiam ca millis se resteaza dupa 50 zile. Insa am aflat acum :D
(Pina saptamina trecuta nu am folosit niciodata millis)

Edited by florin71_skoda, 21 May 2017 - 11:59.


#1100
automatecasa

automatecasa

    Junior Member

  • Grup: Members
  • Posts: 160
  • Înscris: 20.10.2016
Florin,

Eu ziceam sa printezi millis inainte si dupa citirea senzorului, iar ideea de a printa pe lcd nu prea te ajuta pt ca nu vezi istoricul.
Ideea era sa constati ca aceasta citire poate dura .7s(presupun eu), iar daca o executi la .6s (minim, ca asa functioneaza codul tau), loop-ul tau se executa la .7s.

Daca asa e, ai 3 optiuni:
- sa citesti mai rar. Ziceam 15s si o data la 15s encoderul o sa se impiedice (si alte reactii pe care le vrei realtime)
- sa micsorezi rezolutia ca sa citesti mai repede
- sa modifici libraria DallasTemperature si codul tau si intr-un prim pas sa pornesti conversia in senzor, dupa care mai executi loop timp de 0.7s si in pasul 2 faci citirea efectiva a senzorului


Si fii atent ce ai in DallasTemperature.cpp:

void DallasTemperature::blockTillConversionComplete(uint8_t bitResolution){
    int delms = millisToWaitForConversion(bitResolution);
    if (checkForConversion && !parasite){
    unsigned long now = millis();
    while(!isConversionComplete() && (millis() - delms < now));
    } else {
    delay(delms);
    }
}
// returns number of milliseconds to wait till conversion is complete (based on IC datasheet)
int16_t DallasTemperature::millisToWaitForConversion(uint8_t bitResolution){
    switch (bitResolution){
    case 9:
    return 94;
    case 10:
    return 188;
    case 11:
    return 375;
    default:
    return 750;
    }
}

#1101
florin71_skoda

florin71_skoda

    Guru Member

  • Grup: Banned
  • Posts: 18,070
  • Înscris: 02.01.2008
Prea complicat pentru mine Posted Image

Eu vreau sa renunt la millis si sa citesc cit mai rapid senzorul. Sub nici o forma nu o sa accept o citire de temperatura la un interval mai mare de 2-3 secunde. Pe mine citirea corecta a temperaturi, ma arde cel mai tare.
Cred ca renunt total la rotary enconder si ma intorc la butoane (push-butoane). O sa gasesc eu cumva o varianta sa fac un meniu simplu, cu 4 maxim 6 butoane. Nici cu push butoane nu o sa mearga perfect, dar daca ti mai lung apasat butonul, o sa-l agate pina la urma. Doar la apasari scurte o sa dea rateuri.

Nu ma pricep suficient ca sa modific o librarie. De altfel deia si folosesc librariile, pentru ca nu sunt capabil sa fac eu un program complet Posted Image

-----
LE
Exista variante de oprit sau resetat millis ?

Edited by florin71_skoda, 21 May 2017 - 16:57.


#1102
radurus

radurus

    Senior Member

  • Grup: Senior Members
  • Posts: 8,023
  • Înscris: 16.06.2006
De ce ai dori sa resetezi millis?
Am citit eu ceva la inceputuri legat de asta.
Daca implementezi millis asa cum am sugerat eu (si eu am aflat de pe forumuri), nu apar probleme la overflow.

Daca tii neaparat, poti face tu o variabila care sa fie incrementata in acelasi timp cu millis si o resetezi cand iti doreste inimioara.

Edited by radurus, 21 May 2017 - 22:02.


#1103
florin71_skoda

florin71_skoda

    Guru Member

  • Grup: Banned
  • Posts: 18,070
  • Înscris: 02.01.2008
Am citit si eu pe forumuri straine ca nu are sens sa resetezi millis, ca totul este sa sti sa lucrezi cu el. Eu insa nu am reusit sa ma prind cum se lucreaza corect cu milis.

Am vrut eu sa fac o jmecherie si nu a iesit exact cum am vrut eu si ma gindeam ca daca as putea sa opresc+resetez millis cind vreau eu si dupaia sa-l pornesc cind vreau eu, poate ca as reusi sa fac ce m-am gindit sa fac.
- Dupa cum am mai spus, ca sa scap de milllis, l-am bagat la final intr-un void separat.
- Cind sint in meniul principal, citesc temperatura fara millis.
- Cind intru in submeniu, ca sa modific valori, doar atunci apelez la voidul cu millis, setat pe o valoare de sa zicem ca 2.000.
- Asta am reusit cumva sa fac sa mearga
- Mai departe am vrut sa mai bag inca un contor, separat de ala pentru senzor, setat pe o cu totul alta valoare, sa zicem ca pe 15.000, iar asta nu am mai reusit sa fac.
- Ideea a fost ca daca stau intr-un submeniu mai mult de 15 secunde, (sau ce valore o fi), sa sara singur programul la meniul principal unde nu mai citesc temperatura in functie de milis.
- Problema intimpinata a fost ca nu statea 15 secunde in submeniu, ca nu reuseam eu sa citesc corect millis, care rula in fundal tot timpul.
- Asa ca in submeniu statea oricit vroia el, in functie de unde prindeam millis cind intram in submeniu. Uneori statea 1 secunda, alteori mai putin, alteori mai mult, cum se nimerea.

#1104
maiandrei

maiandrei

    Member

  • Grup: Members
  • Posts: 733
  • Înscris: 26.07.2003
Florin, cu millis() nu e greu deloc.
Sa zicem ca variabilei MenuTimer ii dai valoarea millis() cand intri in meniu.
Iesi din meniu cand millis() e mai mare decat MenuTimer cu 15000.

In mare, cam asta e logica utilizarii millis()

#1105
rodanny

rodanny

    Active Member

  • Grup: Members
  • Posts: 1,931
  • Înscris: 13.01.2004
https://www.arduino....eference/millis

#1106
florin71_skoda

florin71_skoda

    Guru Member

  • Grup: Banned
  • Posts: 18,070
  • Înscris: 02.01.2008
Asa de principiu pare simplu si logic. Asa ca este clar ca eu undeva gresesc cind introduc al doilea contor. Fie nu am sintaxa buna, fie nu o pun unde trebuie, fie am mai multe comenzi care se bat cap in cap. Undeva este clar ca gresesc si deaia nu-mi merge.

#1107
rodanny

rodanny

    Active Member

  • Grup: Members
  • Posts: 1,931
  • Înscris: 13.01.2004
Eventual pune daca nu e secret...programul conplet...sa incerce sa il depaneze cei care sunt meseriasi...cu okazia asta imvatam si noi ceilalti....

#1108
radurus

radurus

    Senior Member

  • Grup: Senior Members
  • Posts: 8,023
  • Înscris: 16.06.2006
Florine... eu am 4-5 contoare cu timpi diferiti si toate ruleaza bine fara sa interfereze.

Important este urmatorul lucru atunci cand se foloseste milis:
Se face ***diferenta*** dintre millis actual (poate fi millis sau o variabila separata actualizata atunci) si millis anterior (acolo unde am inceput numaratoarea si am pus un flag).
Daca diferenta e mai mare/mica decat variabila noastra (pe care poti sa o parametrizezi in void setup) sau numarul scris in clar (250ms de exemplu), atunci se executa ceva.
(Daca se lucreaza cu diferenta, millis overflow este gestionat corect)

Cel mai bine este sa faci schema logica (aia cu romburi, stari, conditii).
Evita sa pui un timer cu millis intr-alt timer cu millis. De asemenea trebuie sa fii atent ca nu cumva unele conditii sa te scoata din bucla de timer.

Eu am 2 tipuri de timer:
- do something la fiecare x milisecunde.
- do something pentru n milisecunde cand sunt indeplinite anumite conditii.

Edited by radurus, 24 May 2017 - 10:18.


#1109
radurus

radurus

    Senior Member

  • Grup: Senior Members
  • Posts: 8,023
  • Înscris: 16.06.2006
Am vazut azi o poza si mi-am amintit de florin cu screw shield.
Cam asa ar arata un Uno cu mai multe shield-uri on top.
[ https://uploads.tapatalk-cdn.com/20170524/5373a9b220a7f9de33c309d1e22866ff.jpg - Pentru incarcare in pagina (embed) Click aici ]

Edited by radurus, 24 May 2017 - 12:06.


#1110
florin71_skoda

florin71_skoda

    Guru Member

  • Grup: Banned
  • Posts: 18,070
  • Înscris: 02.01.2008
Deocamdata nu am mai spus nimic concret, deoarece de duminica si pina astazi, nu am mai facut nimic la Arduino. Sa vad cind o sa am iar timp sa mai incerc sa modific codul, tinind cont de informatiilor primite.

#1111
rodanny

rodanny

    Active Member

  • Grup: Members
  • Posts: 1,931
  • Înscris: 13.01.2004

 radurus, on 24 mai 2017 - 12:06, said:

Am vazut azi o poza si mi-am amintit de florin cu screw shield.
Cam asa ar arata un Uno cu mai multe shield-uri on top.
[ https://uploads.tapatalk-cdn.com/20170524/5373a9b220a7f9de33c309d1e22866ff.jpg - Pentru incarcare in pagina (embed) Click aici ]
Mama...dar ce o face cu atatea...ca nu are atatea in/out

#1112
Costi_68

Costi_68

    Membru de o r o a r e

  • Grup: Senior Members
  • Posts: 6,406
  • Înscris: 03.11.2009
Am o problema cu baza de date de pe Raspberry... pentru cine vrea sa urmareasca subiectul, sa vada rezolvarea cand o fi... am postat aici, pentru ca mi s-a parut mai potrivit, specific topicului

#1113
byteworks

byteworks

    Member

  • Grup: Members
  • Posts: 865
  • Înscris: 04.04.2003

 rodanny, on 24 mai 2017 - 12:13, said:

Mama...dar ce o face cu atatea...ca nu are atatea in/out

Un singur bus de comunicatie poate fi suficient pentru toate :)

#1114
rodanny

rodanny

    Active Member

  • Grup: Members
  • Posts: 1,931
  • Înscris: 13.01.2004
Cata liniste pe aici

#1115
radurus

radurus

    Senior Member

  • Grup: Senior Members
  • Posts: 8,023
  • Înscris: 16.06.2006
Sunt oamenii plecati prin concedii.

#1116
Costi_68

Costi_68

    Membru de o r o a r e

  • Grup: Senior Members
  • Posts: 6,406
  • Înscris: 03.11.2009
Senzorul de nivel (HC-SR04) in tancul cu apa, indica brusc -3000 si ceva de procente, apoi 105... iar -xxxx... si tot asa

Din pacate nu pot sa verific acum daca este umed sau alte verificari.

Ce ar putea fi?

Edited by Costi_68, 30 June 2017 - 17:19.


Anunturi

Chirurgia endoscopică a hipofizei Chirurgia endoscopică a hipofizei

"Standardul de aur" în chirurgia hipofizară îl reprezintă endoscopia transnazală transsfenoidală.

Echipa NeuroHope este antrenată în unul din cele mai mari centre de chirurgie a hipofizei din Europa, Spitalul Foch din Paris, centrul în care a fost introdus pentru prima dată endoscopul în chirurgia transnazală a hipofizei, de către neurochirurgul francez Guiot. Pe lângă tumorile cu origine hipofizară, prin tehnicile endoscopice transnazale pot fi abordate numeroase alte patologii neurochirurgicale.

www.neurohope.ro

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