• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

question-closed Błąd programu Arduino

Object Storage Arubacloud
0 głosów
461 wizyt
pytanie zadane 19 grudnia 2019 w Mikrokontrolery przez Marak123 Stary wyjadacz (11,190 p.)
zamknięte 19 grudnia 2019 przez Marak123

Chcę zrobić czujnik temperatury z wyświetlaniem temperatury na wyświetlaczu ale coś mi nie działa wyskakuje taki błąd:::: Chodzi o błąd który znajduje sie w 5 linijce kodu

exit status 1
'POSITIVE' was not declared in this scope

Wie ktoś może dlaczego jest taki błąd i jak to naprawić?? 

Tutaj jest ten program:::

#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <DHT.h>

LiquidCrystal_I2C __flagI2CLCD( 0x3F, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
dht11 __flagDHT11;
unsigned long __lastDHT11Time = 0;

int __getDHT11Temp(int dataPin) {
  if((millis() - __lastDHT11Time <= 150) && __lastDHT11Time > 0)
    return __flagDHT11.temperature;
  if(__flagDHT11.read(dataPin) == DHTLIB_OK) {
    __lastDHT11Time = millis();
    return __flagDHT11.temperature;
  } else
    return -1;
}

String __rightPaddingStr(String content, int width) {
  int len = content.length();
  for(int i = 0;i < (width - len);i++)
    content += " ";
  return content;
}

int __getDHT11Humi(int dataPin) {
  if((millis() - __lastDHT11Time <= 150) && __lastDHT11Time > 0)
    return __flagDHT11.humidity;
  if(__flagDHT11.read(dataPin) == DHTLIB_OK) {
    __lastDHT11Time = millis();
    return __flagDHT11.humidity;
  } else
    return -1;
}


void setup() {
  __flagI2CLCD.begin(16,2);
}

void loop() {
  __flagI2CLCD.setCursor(0, 0);
  __flagI2CLCD.print(__rightPaddingStr(String((String(__getDHT11Temp(2)) + String(char(223)) + String(u8"C"))), 16));
  __flagI2CLCD.setCursor(0, 1);
  __flagI2CLCD.print(__rightPaddingStr(String((String(__getDHT11Humi(2)) + String(u8"%"))), 16));
  delay(2000);

}

  lcd.print(f);
  lcd.setCursor(7,1);
  lcd.print(h);  
}

void setup() {
  __flagI2CLCD.begin(16,2);
}

void loop() {
  __flagI2CLCD.setCursor(0, 0);
  __flagI2CLCD.print(__rightPaddingStr(String((String(__getDHT11Temp(2)) + String(char(223)) + String(u8"C"))), 16));
  __flagI2CLCD.setCursor(0, 1);
  __flagI2CLCD.print(__rightPaddingStr(String((String(__getDHT11Humi(2)) + String(u8"%"))), 16));
  delay(2000);

}

  lcd.print(f);
  lcd.setCursor(7,1);
  lcd.print(h);  
}

 

komentarz zamknięcia: Problem rozwiązany
komentarz 19 grudnia 2019 przez DragonCoder Nałogowiec (36,500 p.)

Patrzac na implementacje biblioteki LCD


LiquidCrystal_I2C::LiquidCrystal_I2C(uint8_t lcd_Addr,uint8_t lcd_cols,uint8_t lcd_rows)
{
  _Addr = lcd_Addr;
  _cols = lcd_cols;
  _rows = lcd_rows;
  _backlightval = LCD_NOBACKLIGHT;
}
LiquidCrystal_I2C(uint8_t lcd_Addr,uint8_t lcd_cols,uint8_t lcd_rows);

Nie wiem, co to positive ma tam robic? Wyjasnisz co to robi, bo sam uzywalem tej libki i 11 raz widze taki zapis

komentarz 19 grudnia 2019 przez Marak123 Stary wyjadacz (11,190 p.)
Sam nie wiem bo ja to z neta mam
komentarz 19 grudnia 2019 przez DragonCoder Nałogowiec (36,500 p.)
podasz link? bo jak wyslalem, tak wyglada ten konstruktor w bibliotece
komentarz 19 grudnia 2019 przez Marak123 Stary wyjadacz (11,190 p.)

1 odpowiedź

0 głosów
odpowiedź 19 grudnia 2019 przez DawidK Nałogowiec (37,910 p.)

Jeżeli chcesz 'po prostu żeby działało' to możesz skorzystać z gotowych bibliotek:

LiquidCrystal_I2C

Wire (pobierana z arduino IDE)

OneWire

DallasTemperature

Poniższy kod działa dla czujnika DS18B20 - nóżka 2 (sygnał) z 3 (zasilanie) zwarte opornikiem 4.7Kom i ekranu 2x16 HD44780 podłączonemu przez PCF8574. Czujnik podpięty do pinu 2.

#include <Wire.h> 
#include <LiquidCrystal_I2C.h>
#include <OneWire.h>
#include <DallasTemperature.h>

#define ONE_WIRE_BUS 2

LiquidCrystal_I2C  lcd =LiquidCrystal_I2C(0x3F,16, 2);
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);

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

void loop(void)
{ 
  sensors.requestTemperatures();
  
  float temp_1 = sensors.getTempCByIndex(0);
  lcd.setCursor(0,0);
  lcd.print("Temperatura");
  lcd.setCursor(0,1);
  lcd.print(temp_1);
  lcd.setCursor(6,1);
  lcd.print("C");
  
  delay(1000);
}

 

komentarz 19 grudnia 2019 przez DragonCoder Nałogowiec (36,500 p.)
Ale on uzyl bibliotek, ktore sa gotowe. Mysle, ze napisanie biblioteki do oblsugi LCD po I2C, nie ma sensu. Po prostu zle uzyl konstruktora klasy

Podobne pytania

0 głosów
2 odpowiedzi 1,283 wizyt
pytanie zadane 2 listopada 2018 w Mikrokontrolery przez DODO Bywalec (2,950 p.)
0 głosów
0 odpowiedzi 387 wizyt
pytanie zadane 7 maja 2018 w Mikrokontrolery przez SimiVoid Pasjonat (19,790 p.)
0 głosów
1 odpowiedź 510 wizyt
pytanie zadane 2 września 2017 w Mikrokontrolery przez niezalogowany

92,555 zapytań

141,404 odpowiedzi

319,560 komentarzy

61,941 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...