Skocz do zawartości

leh1992

Użytkownicy
  • Zawartość

    4
  • Rejestracja

  • Ostatnio

Reputacja

4 Neutralna

O leh1992

  • Ranga
    1/10
  1. @ethanak Dzięki za podpowiedź! Na pewno pogrzebie w tym temacie! @Gieneq O autoformacie też pierwsze słyszę, rzeczywiście ułatwia życie Tutaj już kod z zastosowanymi waszymi poradami #include <LiquidCrystal.h> LiquidCrystal lcd(2, 3, 4, 5, 6, 7); float czas = 0.0; int stanLicznika = 0; enum stanLicznika {oczekiwanie, pomiar, wynik}; unsigned long aktualnyCzas = 0; unsigned long zmianaCzasu = 0; unsigned long zmiana = 0; void setup() { // put your setup code here, to run once: pinMode(8, INPUT_PULLUP); pinMode(9, INPUT_PULLUP); pinMode(10, INPUT_PULLUP); lcd.begin(16, 2); } void loop() { aktualnyCzas = millis(); switch (stanLicznika) { case oczekiwanie: lcd.setCursor(0, 0); lcd.print("Wcisnij"); lcd.setCursor(0, 1); lcd.print("przycisk"); if (digitalRead(8) == LOW) { lcd.clear(); zmianaCzasu = aktualnyCzas; stanLicznika = pomiar; } break; case pomiar: lcd.setCursor(0, 0); lcd.print("Pomiar czasu"); zmiana = aktualnyCzas - zmianaCzasu; if (zmiana >= 10) { zmianaCzasu = aktualnyCzas; czas = czas + 0.01; } lcd.setCursor(0, 1); lcd.print(czas); if (digitalRead(9) == LOW) { lcd.clear(); stanLicznika = wynik; } break; case wynik: lcd.setCursor(0, 0); lcd.print("Koniec pomiaru"); lcd.setCursor(0, 1); lcd.print(czas); if (digitalRead(10) == LOW) { lcd.clear(); czas = 0; stanLicznika = oczekiwanie; } else if (digitalRead(8) == LOW) { lcd.clear(); stanLicznika = pomiar; } break; } }
  2. @ethanak Myślę że wywnioskuję to z ogólnej budowy kodu. A jest możliwość nazywania przypadków w funkcji switch słownie? Zmienna czas jest typu float float czas = 0.0;
  3. Moja wersja stopera na maszynie stanów i czasem liczonym z funkcji millis. #include <LiquidCrystal.h> LiquidCrystal lcd(2,3,4,5,6,7); float czas = 0.0; int stan = 1; unsigned long aktualnyCzas = 0; unsigned long zmianaCzasu = 0; unsigned long zmiana = 0; void setup() { // put your setup code here, to run once: pinMode(8, INPUT_PULLUP); pinMode(9, INPUT_PULLUP); pinMode(10, INPUT_PULLUP); lcd.begin(16,2); } void loop() { aktualnyCzas = millis(); switch(stan) { case 1: lcd.setCursor(0, 0); lcd.print("Wcisnij"); lcd.setCursor(0, 1); lcd.print("przycisk"); if (digitalRead(8) == LOW) { lcd.clear(); zmianaCzasu = aktualnyCzas; stan = 2; } break; case 2: lcd.setCursor(0, 0); lcd.print("Pomiar czasu"); zmiana = aktualnyCzas - zmianaCzasu; if (zmiana >= 10) { zmianaCzasu = aktualnyCzas; czas=czas+0.01; } lcd.setCursor(0, 1); lcd.print(czas); if(digitalRead(9) == LOW) { lcd.clear(); stan=3; } break; case 3: lcd.setCursor(0, 0); lcd.print("Koniec pomiaru"); lcd.setCursor(0, 1); lcd.print(czas); if (digitalRead(10) == LOW) { lcd.clear(); czas=0; stan=1; }else if (digitalRead(8) == LOW) { lcd.clear(); stan=2; } break; } }
  4. Moja wersja stacji pogodowej z wyświetlaniem wyników na lcd: #include <OneWire.h> #include <DallasTemperature.h> //Biblioteka termometru cyfrowego OneWire oneWire(A5); //podłącznie termometru do A5 DallasTemperature sensors(&oneWire); //przekazanie informacji do biblioteki #include "DHT.h" DHT dht; //biblioteka czujnika wilgoci #include <LiquidCrystal.h> //biblioteka lcd LiquidCrystal lcd(8, 9, 10, 11, 12, 13); //inf. o wyswietlaczu void setup() { // put your setup code here, to run once: Serial.begin(9600); dht.setup(2); //czujnik wilgoci pin 2 sensors.begin(); //inicjalizacja termometru lcd.begin(16, 2); //inicjalizacja lcd lcd.clear(); } void loop() { // put your main code here, to run repeatedly: sensors.requestTemperatures(); //zapytanie o odczyt termometru float temperatura = sensors.getTempCByIndex(0); //zapisanie odczytu jako stałej int wilgotnosc = dht.getHumidity(); //zapisanie odczytu jako stałej int odczyt = analogRead(A0); int zachmurzenie = map(odczyt, 0, 1024, 1, 5); lcd.setCursor(0, 0); lcd.print("Temperatura"); lcd.setCursor(0, 1); lcd.print(temperatura); lcd.setCursor(4, 1); lcd.print((char)223); lcd.setCursor(5, 1); lcd.print("C"); //wyświetlenie temperatury powietrza delay(2000); lcd.clear(); lcd.setCursor(0, 0); lcd.print("Wilgotnosc"); lcd.setCursor(0, 1); lcd.print(wilgotnosc); lcd.setCursor(3, 1); lcd.print("%RH"); //wyswietlenie wilgotnosci powietrza delay(2000); lcd.clear(); switch(zachmurzenie) { //wyswietlenie inf. o zachmurzeniu case 1: lcd.setCursor(0, 0); lcd.print("Zachmurzenie"); lcd.setCursor(0, 1); lcd.print("Calkowite"); break; case 2: lcd.setCursor(0, 0); lcd.print("Zachmurzenie"); lcd.setCursor(0, 1); lcd.print("Duze"); break; case 3: lcd.setCursor(0, 0); lcd.print("Zachmurzenie"); lcd.setCursor(0, 1); lcd.print("Umiarkowane"); break; case 4: lcd.setCursor(0, 0); lcd.print("Zachmurzenie"); lcd.setCursor(0, 1); lcd.print("Male"); break; lcd.setCursor(0, 0); lcd.print("Zachmurzenie"); lcd.setCursor(0, 1); lcd.print("Bezchmurnie"); break; } delay(2000); lcd.clear(); }
×
×
  • Utwórz nowe...