Arduino Polska Forum

Pełna wersja: problem z aktualizacja danych
Aktualnie przeglądasz uproszczoną wersję forum. Kliknij tutaj, by zobaczyć wersję z pełnym formatowaniem.
siemanko mam problem z aktualizacją danych z czujników podczas przełączania ich na wyświetlaczu lcd
Kod:
#include <LiquidCrystal.h>
#include "Adafruit_Sensor.h"
#include "Adafruit_AM2320.h"
#include <OneWire.h>
#include <DallasTemperature.h>

#define ONE_WIRE_BUS  13

OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);

Adafruit_AM2320 am2320 = Adafruit_AM2320();

const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 7, d7 = 2;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);

byte stopien[8] = {
 0b00111,
 0b00101,
 0b00111,
 0b00000,
 0b00000,
 0b00000,
 0b00000,
 0b00000
};

const int R = 3, G = 9, B = 6;
const int btn = 8;


boolean stan=0;
void setup() {
 Serial.begin(9600);
 lcd.createChar(0, stopien);

 pinMode(R, OUTPUT);
 pinMode(G, OUTPUT);
 pinMode(B, OUTPUT);
 pinMode(btn, INPUT_PULLUP);
 lcd.begin(16, 2);
 am2320.begin();
 sensors.begin();


}

void loop() {
 // put your main code here, to run repeatedly:

if (digitalRead(btn)==LOW)
{
 delay (20);
 stan=!stan;

 if (stan == 1) {
   lcd.clear();
   lcd.setCursor(0, 0);
   lcd.print("Temp: ");
   lcd.setCursor(5, 0);
   lcd.print(am2320.readTemperature());
   lcd.setCursor(10, 0);
   lcd.write(byte(0));
   lcd.setCursor(11, 0);
   lcd.print("C");
   lcd.setCursor(0, 1);
   lcd.print("Hum: ");
   lcd.setCursor(4, 1);
   lcd.print(am2320.readHumidity());
   lcd.setCursor(9, 1);
   lcd.print("%");
 }
   else
   {
   lcd.setCursor(0, 0);
   lcd.print("Temp: ");
   lcd.setCursor(5, 0);
  Serial.println(am2320.readTemperature());
   lcd.print(am2320.readTemperature());
   lcd.setCursor(10, 0);
   lcd.write(byte(0));
   lcd.setCursor(11, 0);
   lcd.print("C");
   sensors.requestTemperatures();
   lcd.setCursor(0, 1);
   lcd.print("Temp: ");
   lcd.setCursor(5, 1);
   Serial.println(sensors.getTempCByIndex(0));
   lcd.print(sensors.getTempCByIndex(0));
   lcd.setCursor(10, 1);
   lcd.write(byte(0));
   lcd.setCursor(11, 1);
   lcd.print("C");
   }
    while(digitalRead(btn)==LOW);

 delay(20);
}

 setColor(0, 0, 0);
 



}


void setColor(int red, int green, int blue)
{
 analogWrite(R, red);
 analogWrite(G, green);
 analogWrite(B, blue);
}

żeby je zaktualizować muszę klikać w przycisk, który w założeniu miał tylko zmieniać wyświetlanie danych z czujników na ekranie
Wyświetlanie danych jest wewnątrz instrukcji warunkowej, której warunkiem jest digitalRead(btn)==LOW, więc aktualizacja danych odbywa się tylko gdy wciśniesz przycisk.
Więc nie pisz, że
(13-07-2018, 00:54)lokajek23 napisał(a): [ -> ]muszę klikać w przycisk, który w założeniu miał tylko zmieniać wyświetlanie danych z czujników na ekranie
Bo nie widzę, aby program miał takie założenia.