• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
problem z aktualizacja danych
#1
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
 
Odpowiedź
#2
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.
Nie trzeba dawać punktów za pomoc, ale jeśli problem został rozwiązany, proszę o tym poinformować w ostatnim poście.

[Obrazek: SsIndaG.jpg]
 
Odpowiedź
  


Skocz do:


Przeglądający: 1 gości