chyba v kompilaci - onewire

Odpovědět
crgo1977
Příspěvky: 36
Registrován: 20 led 2018, 20:16
Reputation: 0

chyba v kompilaci - onewire

Příspěvek od crgo1977 » 20 led 2018, 20:26

Zdravím všechny,v programování arduina jsem nezkušený nováček.Přesto jsem se již vybavil množstvím komponentů.
Vlastním arduino uno R3 - mé pokusy s programováním byly úspěšné.
Přikoupil jsem si tedy TFT LCD displej 2,4" a pokouším se zprovoznit zobrazení teploty - z čidla DS18B20.

Mám ale problém s knihovnami. Po dlouhém trápení a hledání se zdá,že pro panel jsem již knihovny našel - doufám,ale nejde mi nastavit knihovnu onewire.
Pokaždé když se pokusím o kompilaci,tak mi to skončí s chybou : exit status 1 'oneWire' was not declared in this scope

přikládám taky kód.

Kód: Vybrat vše

#include <OneWire.h>

#include <DallasTemperature.h>

#include <HX8347D.h>
#include <HX8347D_pins.h>
#include <Touch.h>
#include <XPT2046.h>


DallasTemperature sensors(&oneWire);
DeviceAddress insideThermometer = { 0x28, 0x94, 0xE2, 0xDF, 0x02, 0x00, 0x00, 0xFE }; 
float tempC = 0;
float tempF = 0;

void setup(void)
{
  Serial.begin(9600);
  sensors.begin();
}

void loop(void)
{ 

  sensors.requestTemperatures();
  tempC = sensors.getTempCByIndex(0);
  tempF = sensors.toFahrenheit(tempC);
  
  printTemperature();
  
  delay(1000);
}

void printTemperature()
{
  Serial.print(tempC);
  Serial.print(char(176));
  Serial.print("C");
  Serial.print("\t");
  Serial.print(tempF);
  Serial.print(char(176));
  Serial.print("F");
  Serial.print("\n");
}
je možné že mám jen chybu v programu nebo chybu v knihovně.

Předem děkuji za radu a pomoc

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

Re: chyba v kompilaci - onewire

Příspěvek od martinius96 » 20 led 2018, 20:39

K tomuto: DallasTemperature sensors(&oneWire); ti chýba oneWire...
Je potrebné doplniť:

Kód: Vybrat vše

///////////////////NORMAL ZAPIS///////////////////////////////
#define ONE_WIRE_BUS 4              //pin D4 ako zbernica pre OneWire.. 
OneWire oneWire(ONE_WIRE_BUS);

////////ZJEDNODUŠENE////////////////////////////////
OneWire oneWire(4); //zbernica na pine D4
Ten device address je zbytočný..
Toto je najjednoduchší zápis pre zisk teploty raz za 10 sekund...

Kód: Vybrat vše

#include <OneWire.h>                 //KNIZNICA ONEWIRE PRE VYUZITIE ONEWIRE ZBERNICE
#include <DallasTemperature.h>       //KNIZNICA PRE TEPLOTNE CIDLA
#define ONE_WIRE_BUS 4               //DEFINICIA PINU AKO ZBERNICE PRE ONEWIRE ZARIADENIA
OneWire oneWire(ONE_WIRE_BUS);       //ONEWIRE ČÍTAŤ IBA NA PORTE DEFINOVANOM VYSSIE
DallasTemperature sensors(&oneWire); //Zarad senzory na zbernicu
void setup() { 
    sensors.begin(); //spust senzor na OneWire zbernici
    Serial.begin(9600); //rychlost serial monitoru
   } 

void loop() {
   sensors.requestTemperatures();
   delay(250); //pockame pokym nam pride teplota od DS18B20 senzoru
   float teplota = sensors.getTempCByIndex(0);
   if(teplota == -127.00 || teplota == -127){
      sensors.requestTemperatures();
    Serial.println("Citam opakovane teplotu pre platny udaj! --> teplota nestihla este prist");
      delay(250);
   }else if(teplota == 85.00 || teplota == 85){
    Serial.println("Zle zapojenie, skontrolujte kable!");
    }else{
    Serial.println("Namerali sme teplotu!");
    Serial.println(teplota);
  } 
delay(10000); //pockame 10 sekund pred novym meranim
}


Ak by bol problém s knižnicami tak tu si stiahni moje:
https://www.ulozto.sk/!9CiV8ji2LfHP/ds1 ... iznice-rar
V prípade problému s WConstants.h v súbore DallasTemperature.cpp pri kompilácii, zmeniť na Arduino.h

crgo1977
Příspěvky: 36
Registrován: 20 led 2018, 20:16
Reputation: 0

Re: chyba v kompilaci - onewire

Příspěvek od crgo1977 » 20 led 2018, 22:17

Děkuji za radu.
Jak jsem psal,jsem nováček a toto byl první můj pokus s LCD. Hledal jsem na internetu,ale nikde jsem nenašel displej který mám já.

Ještě jednou děkuji za radu

crgo1977
Příspěvky: 36
Registrován: 20 led 2018, 20:16
Reputation: 0

Re: chyba v kompilaci - onewire

Příspěvek od crgo1977 » 21 led 2018, 14:36

tak jsem to zkusil nabídnutý kód zkompilovat a nahrát do arduina.

Kompilace i nahrání proběhlo v pořádku.
Nemám sice zapojené čidlo,ale na displeji se mi nic neukáže-jediné kde to zjistím je v seriovém monitoru.
Pochopil jsem to zpávně,že to uvidím i na displeji.

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

Re: chyba v kompilaci - onewire

Příspěvek od martinius96 » 21 led 2018, 14:53

Pre displej potrebujete knižnicu. Displej sa dá pripojiť cez I2C rozhranie alebo na priamo, čo stojí dosť GPIO pinov. Najpoužívanejšia pre pripojenie napriamo: LiquidCrystal --> https://github.com/arduino-libraries/LiquidCrystal Súbory z src vložiť do (na Windowse) Dokumenty/Arduino/Libraries/LiquidCrystal (zložku je potrebné vytvoriť)
Pre I2C: LiquidCrystalI2C https://github.com/fdebrabander/Arduino ... 2C-library
Napriamo:
Obrázek
Cez I2C rozhranie:
Obrázek
Je ešte iná knižnica pre čínske displeje s prevodníkom HD44780, tam niekedy knižnica špatí, ale vždy sa dá nájsť kompatibilná, už väčšina dostupných knižníc funguje aj s týmto prevodníkom, najčastejšia adresa 0x27 alebo 0x3F.
Ja používam odtiaľ: https://arduino-info.wikispaces.com/LCD-Blue-I2C
Ak máte displej cez I2C a neviete jeho adresu, tak nahrajte program: https://playground.arduino.cc/Main/I2cScanner na serial monitor vám vypíše adresu vášho displeja.
Následne sa urobí kód, základná štruktúra..

Kód: Vybrat vše

#include <Wire.h> //kniznica (Uz v ArduinoIDE)
#include <LiquidCrystal_I2C.h> //kniznica pre displej na I2C zbernici

LiquidCrystal_I2C lcd(0x27, 16, 2); //adresa 0x27 16 stlpcov 2 riadky..

void setup()
{
	// initialize the LCD
	lcd.begin(); //spust displej na I2C zbernici
	lcd.backlight(); //zapni podsvietenie displeja
	lcd.print("Hello, world!"); //vypis hello world
	delay(2000);
	lcd.clear(); //displej vymaze
	delay(2000);
	lcd.nobacklight(); //zhasne displej
}

void loop()
{
	// do loop sa da robit opakovany vypis coho potrebujete.. begin a backlight sa zvykne nechat v setupe.
	// nic sa nevykona v loope, vypis sa zrealizuje iba raz v setupe...
}
Sketch som síce netestoval ale malo by to chodiť, pripadne len nieco poupraviť stačí.
Na špecifickú pozíciu na displeji, napríklad znak sa dá dostať cez funkciu lcd.setCursor(0, 0) (prvy znak na prvom riadku)...
lcd.setCursor(8, 1) (stlpec 9, druhy riadok...) --> cisluje sa od 0

crgo1977
Příspěvky: 36
Registrován: 20 led 2018, 20:16
Reputation: 0

Re: chyba v kompilaci - onewire

Příspěvek od crgo1977 » 21 led 2018, 17:42

Omlouvám se,pravděpodobně jsem se špatně vyjádřil.
Pořídil jsem si TFT LCD 2,4" displej s dotykovou vrstvou.
https://laskarduino.cz/displaje/230232 ... uino.html
Chtěl bych zobrazit teplotu na tento displej.Ale stále se mi to nedařilo.Pokaždé jsem narazil na chybu v programu.

Kdyby někdo věděl kte mám chybu budu vděčný za radu.

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

Re: chyba v kompilaci - onewire

Příspěvek od martinius96 » 21 led 2018, 18:02

Áno, písali ste to hore, prehliadol som to..
Stiahnite si túto knižnicu: https://github.com/prenticedavid/MCUFRIEND_kbv Súbory .h a .cpp do libraries. Následne z examples priečinka si vyberte nejaký .ino testovací súbor.. Ja mám TFT 3.5'' a nerozchodil som ho. Example sketche mi fungovali, ale nič vlastné.. Pre začiatočníka je to nevhodný displej.

crgo1977
Příspěvky: 36
Registrován: 20 led 2018, 20:16
Reputation: 0

Re: chyba v kompilaci - onewire

Příspěvek od crgo1977 » 22 led 2018, 19:59

Tuto knihovnu nabízí také prodejce displeje.Zkoušel jsem ji,ale knihovnu se mi nepodařilo rozchodit.Zkoušel jsem to podle návodu prodejce.

Odpovědět

Kdo je online

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