Arduino ide

Sem pište, hledáte-li někoho, kdo pro vás něco naprogramuje, či sestaví.
Odpovědět
Marek19111973
Příspěvky: 13
Registrován: 22 bře 2021, 18:37
Reputation: 0

Arduino ide

Příspěvek od Marek19111973 » 23 bře 2021, 12:25

LiquidCrystal sensor anemometer arduino

martinius96
Příspěvky: 579
Registrován: 01 srp 2017, 19:29
Reputation: 0
Bydliště: Poprad
Kontaktovat uživatele:

Re: Arduino ide

Příspěvek od martinius96 » 23 bře 2021, 13:32

Zobral som ukážkový kód z triviálneho príkladu Hello World pre displej v Arduino IDE.
Výpis na displej som dostal za výpis na UART a nahradil som len Serial.print() za lcd.print(), nič viac + lcd.clear(), aby displej vymazalo pred novým zápisom + prechod z prvého riadku na druhý cez nastavenie kurzora.

Prekopíroval som inicializáciu, zmenil som vývody, nakoľko v ukážkovej implementácii displej využíva D2 a D3 vývody Arduina (ktoré sú jedinými vývodmi s podporou INTERUPT-u - prerušenia, teda potom by sa nedal pripojiť ten anemometer).
Zapojenie je v programe s označením vývodu displeja a označením vývodu Arduina.
Program je kompatibilný pre displej 16x2 i 20x4. Nakoľko sa výpis realizuje len na dva riadky.

Kód: Vybrat vše

//More Information at: https://www.aeq-web.com/
//Version 2.0 | 11-NOV-2020
#include <LiquidCrystal.h>
const int rs = 12, en = 11, d4 = 7, d5 = 6, d6 = 5, d7 = 4;

//Zapojenie dátových vodičov
//Displej ==> Arduino
//RS      ==> D12
//RN      ==> D11
//D4      ==> D7
//D5      ==> D6
//D6      ==> D5
//D7      ==> D4

LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
const int RecordTime = 3; //Define Measuring Time (Seconds)
const int SensorPin = 3; //Define Interrupt Pin (2 or 3 @ Arduino Uno)

int InterruptCounter;
float WindSpeed;

void setup()
{
  Serial.begin(9600);
  lcd.begin(16, 2); //rozmer displeja 16x2, možne nahradiť za 20x4 --> PROGRAM POUZIVA 16 stlpcov a 2 riadky!!!
}

void loop() {
  meassure();
  Serial.print(F("Wind Speed: "));
  Serial.print(WindSpeed); //Speed in km/h
  Serial.print(F(" km/h - "));
  Serial.print(WindSpeed / 3.6); //Speed in m/s
  Serial.println(F(" m/s"));
  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print(WindSpeed); //Speed in km/h
  lcd.print(F(" km/h"));
  lcd.setCursor(0, 1);
  lcd.print(WindSpeed / 3.6); //Speed in m/s
  lcd.print(F(" m/s"));
}

void meassure() {
  InterruptCounter = 0;
  attachInterrupt(digitalPinToInterrupt(SensorPin), countup, RISING);
  delay(1000 * RecordTime);
  detachInterrupt(digitalPinToInterrupt(SensorPin));
  WindSpeed = (float)InterruptCounter / (float)RecordTime * 2.4;
}

void countup() {
  InterruptCounter++;
}

Marek19111973
Příspěvky: 13
Registrován: 22 bře 2021, 18:37
Reputation: 0

Re: Arduino ide

Příspěvek od Marek19111973 » 23 bře 2021, 13:37

odskousim zatim dekuji
Dam vedet

Uživatelský avatar
pavel1tu
Příspěvky: 2054
Registrován: 26 říj 2017, 08:28
Reputation: 0
Bydliště: Trutnov
Kontaktovat uživatele:

Re: Arduino ide

Příspěvek od pavel1tu » 24 bře 2021, 08:36

martinius96 píše:
23 bře 2021, 13:32
Zobral som ....
Proti principu měření se ohradím (ale spíše jako vylepšení třeba do budoucna - já to takto také zatím provozuji).
Sám jsem si tímto prošel a jsou zde lidé co se meteorologií a měřením zabývají a nasměrovali nejen mne k přesnějšímu měření a to o dost, když jsem to porovnával (2 anemometry vedle sebe).
Počítání impulzů za nějakou dobu
- čím menší vítr, tím větší nepřesnost
- nezískáš tím nárazový vítr

Já se dopracoval (ale kod nemám učesaný, jen ze stolu) po postrčení pár lidmi zde:
- měřím 20s, nebo 30 pulzů (mám napevno zatím pole na 30 hodnot) - to se asi ještě upraví (cyklus měření meteostanice je každých 5 minut, bo jede z baterek) během toho změřím, zpracuji i všechny ostatní měřené hodnoty
- ukládám časy v ms (plán předělat na m/s) mezi jednotlivými otáčkami anemometru
- nejkratší a nejdelší čas budu zahazovat - zatím nedělám
- 2 nejkratší (pokud proběhlo alespoň 5 pulzů) zprůměruji na "nárazový" vítr
- z ostatních vypočítám průměr a vše odešlu na základnu

U snímače s napájením
- měřím neustále, ale ukládám přepočtené na m/s (jen při odesílání všechny interupty zatím zakazuji a měření přeruším, nevím jestli to, nebo jiná chyba mi sem tam neodeslalo data - většinou když hodně foukalo)
- ukládám min/průměr/max a jednou za 5 min odesílám

PS: berte to jen jako nápad na přesnější měření

Bohužel to nemám ani za rok dodělané, momentálně bujuji s jinými věcmi.
UNO, NANO, Mikro, PRO mini, DUE, ESP32S2, RPi PICO
Pavel1TU
"Správně napsaný kod lze číst jako knihu"

Marek19111973
Příspěvky: 13
Registrován: 22 bře 2021, 18:37
Reputation: 0

Re: Arduino ide

Příspěvek od Marek19111973 » 25 bře 2021, 13:05

super funguje co jsem dlužen

martinius96
Příspěvky: 579
Registrován: 01 srp 2017, 19:29
Reputation: 0
Bydliště: Poprad
Kontaktovat uživatele:

Re: Arduino ide

Příspěvek od martinius96 » 25 bře 2021, 13:41

Nič.
Zvládol by si to i sám.
Stačilo si len pozrieť ukážkový príklad z Arduino IDE a nakopírovať tie časti do tvojho programu.

Odpovědět

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 10 hostů