• 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
Pomocy w napisaniu programu
#11
Zrobiłem coś takiego z Waszą pomocą. Działa na telefonie pokazuje stan drzwi i czy światło jest zapalone. Może się komuś przyda. Pozdrawiam
==========================================================
#define BLYNK_PRINT Serial
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
char auth[] = "xxxxxxxxxxxxxxxxxxxxxxxxxxxx";
char ssid[] = "YYYYYYY";
char pass[] = "12345678";
int val = 0;
//int ledState = LOW;     
unsigned long previousMillis = 0;
const long interval = 300000UL;
void setup()
{
  Serial.begin(9600);
  Blynk.begin(auth, ssid, pass, "blynk-cloud.com", 8442);
  pinMode(D1, OUTPUT);
  pinMode(D5, INPUT);
 // digitalWrite(D2, LOW);
// digitalWrite(D1, LOW); 
}
void loop()
{
  Blynk.run();
  //Blynk.setProperty(V5, "color", "#FF0000"); // "#8AB2FC"
 
 if(digitalRead(D3) == LOW) {
   Blynk.virtualWrite(V2, "DRZWI ZAMKNIETE!"); }
 if(digitalRead(D3) == HIGH) {
   Blynk.virtualWrite(V2, " DRZWI OTWARTE !"); }
   unsigned long currentMillis = millis();
 if (digitalRead(D5) == LOW) {
   previousMillis = currentMillis;}
 if (currentMillis - previousMillis <= 1)  {
   digitalWrite(D1, HIGH);
   Blynk.virtualWrite(V3, "   SWIATLO ON");}
 if(currentMillis - previousMillis >= interval) {
   previousMillis = currentMillis;   
   digitalWrite(D1, LOW);
   Blynk.virtualWrite(V3, "  SWIATLO OFF");
  }
}
=========================================================
Może ktoś coś jeszcze poprawi. Chętnie się pouczę.
 
Odpowiedź
#12
Jak działa to super, najważniejsze, że coś wymyśliłeś. Skoro się jednak uczysz to spróbuj zrobić to również ze zmienną S.

Kod:
if(currentMillis - previousMillis >= interval) { //dla 1000
  previousMillis = currentMillis;  
S++;
}
Po tylu postach powinieneś już umieć też wrzucać kod w pole CODE (w pełnej edycji ikonka <>).
Mając jedną zmienną S możesz kontrolować zdarzenia mające się wykonywać co określony czas. Np. co 60s zerować zmienną i zwiększać zmienną M, potem to samo dla zmiennej M i zwiększać H. Wszystkie te zmienne można wymnożyć i zmieniać stany w dowolnej chwili dla doby, można też korzystać tylko ze zmiennej godziny. Można sobie ustawiać zmienne "flagi", czyli że wybiła nowa sekunda, nowa godzina, dla rzeczy które mają być wykonane tylko raz w nowej sekundzie, nowej godzinie. Tak samo można dodać potem dni co 24H.
Jak potrzebujesz robić coś co 10ms to oczywiście możesz sobie zacząć zbierać dane w tym warunku w intervale co 10ms - np. szybko zamigać LED co 50ms, odczytać przycisk co 10ms trzy razy by mieć pewność uwzględnienia drgania styków, wiesz kiedy był naciśnięty, kiedy puszczony, jak długo był wciśnięty, itp. Kontrolowanie interwału z dwóch miejsc, czyli przypisanie previous do millis może Ci pomieszać takie planowanie programu.
Teraz nie stosując już delay możesz co wymyślony okres czasu robić cokolwiek, a przy okazji nieważne kiedy naciśniesz jakiś przycisk to od razu program to odczyta. Do mniejszych okresów czasu jest funkcja micros(). Dwie funkcje i zabawa zupełnie się zmienia w Arduino.
Miło być decenianym https://buycoffee.to/kaczakat
 
Odpowiedź
#13
Dzięki. Pójdę za Twoją wskazówką i potrenuje. Nauki nigdy nie za wiele. 
Mam pytanie z innej beczki jak wstawić jakąś pętlę aby system sprawdzał połączenie z WiFi i dopiero szedł dalej jak się zaloguje. Szukam i nic pewnie wpisuje źle postawione pytanie.
Dzięki Pozdrawiam
 
Odpowiedź
#14
Kod:
while (WiFi.status() != WL_CONNECTED) {
 
Odpowiedź
  


Skocz do:


Przeglądający: 1 gości