Skocz do zawartości

Dwie funkcje void loop() w jednym kodzie.


BeeKeyPro

Pomocna odpowiedź

16 minut temu, BeeKeyPro napisał:

Najmocniej Pana przepraszam

Po pierwsze nie masz za co przepraszać, jeszcze raz to dostaniesz "Śmierć urzędnika" jako lekturę obowiązkową; po drugie na tym forum mówimy sobie na Ty 🙂

 

Link do komentarza
Share on other sites

 

9 minut temu, ethanak napisał:

po drugie na tym forum mówimy sobie na Ty 🙂

Wiem, choć przyznam że źle się czuje jako 13 latek gdy piszę do dorosłych na Ty, ale jak nie masz problemu o to to dobrze 🙂

Link do komentarza
Share on other sites

#define Dioda0 A0
#define Dioda1 A1
#define Przycisk A5
  boolean zmienna;
  long czasStary, czasNowy;
  int  licznik;
  const int stala = 500;

void setup() {
  Serial.begin(9600);
  pinMode(Dioda0, OUTPUT);
  pinMode(Dioda1, OUTPUT);
  pinMode(Przycisk, INPUT);
 
}

void loop() {
 czasNowy = millis(); 
  if(czasNowy - czasStary > stala) { zmienna = !zmienna;
     czasStary = czasNowy;                     Serial.println(zmienna); 
     }
  digitalWrite(Dioda0, zmienna);
  digitalWrite(Dioda1, !zmienna);
  

}

a teraz pomecz sie aby wykorzystac przycisk :) Serial.print wykorzystuje bo nie chce mi sie podpinać wyświetlacza. 

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

 pinMode(Przycisk, INPUT_PULLUP); Tak zrób . Juz napisalem kolejna czesc kodu :). Jak sie odezwiesz to 'moze' wstawie :) . Z drugiej strony jestes mlody wiec nalezy wyjsc i korzystac z mlodosci. 

Link do komentarza
Share on other sites

void setup() {
  Serial.begin(9600);
  pinMode(Dioda0, OUTPUT);
  pinMode(Dioda1, OUTPUT);
  pinMode(Przycisk, INPUT_PULLUP);
 
}

void loop() {
 czasNowy = millis(); 
  if(czasNowy - czasStary > stala) { zmienna = !zmienna;
     czasStary = czasNowy;                     Serial.println(licznik); 
     }
  digitalWrite(Dioda0, zmienna);
  digitalWrite(Dioda1, !zmienna);

  if ((digitalRead(Przycisk) ==  LOW ) && (zmienna == 1)) {licznik = licznik+ 1;}
  if ((digitalRead(Przycisk) == LOW  ) && (zmienna == 0)) {licznik = licznik- 1;}
}

Ja już mam świetną zabawę bo staram się zbliżyć w 'grze' do 0.  Wiem , że tobie chodziło o nieco coś innego , ale to jest tylko kolejny krok :).  Wszysko wbrew pozorom dziala dobrze. 

Link do komentarza
Share on other sites

Gra skończona :) na płytce wszystko dziala, nie ma anie jednego delaja :) , ja bym ta gre rozbudowal o poziomy.  przede wszystkim umieścilem stala a lepiej zmienna i wraz z poziomem czas świecenia diody nieco mniejszy.  Druga dioda nie wiem  w jakim celu istnieje. Moj 7 letni syn powiedzial abym zastapil diode zielona na niebieska. bo jedna czerwona a druga niebieska to policja , a on chce byc policjanem :).  no ale popatrzcie i proszę o uwagi bo ucze sie tego języka.


#define Dioda0 A0
#define Dioda1 A1
#define Przycisk A5
  boolean zmienna, flaga;
  long czasStary, czasNowy;
  int  licznik ;
  const int stala = 500;

void setup() {
  Serial.begin(9600);
  pinMode(Dioda0, OUTPUT);
  pinMode(Dioda1, OUTPUT);
  pinMode(Przycisk, INPUT_PULLUP);
 
}

void loop() {
 czasNowy = millis(); 
  if(czasNowy - czasStary > stala) { zmienna = !zmienna;
     czasStary = czasNowy;    flaga = 1;                 Serial.println(licznik); 
     }
  digitalWrite(Dioda0, zmienna);
  digitalWrite(Dioda1, !zmienna);

  if ((digitalRead(Przycisk) ==  LOW ) && (zmienna == 1) && (flaga == 1))
            {licznik = licznik+ 1; flaga = 0;}
  if ((digitalRead(Przycisk) == LOW  ) && (zmienna == 0) && (flaga == 1))
            {licznik = licznik- 1; flaga = 0;}
}

Nie zapomniejcie o opornikach , ja użyłem 2x1kom

  • Pomogłeś! 1
Link do komentarza
Share on other sites

Nigdy nie wstawialem tutaj zdjec i dzisiaj pierwszy raz wstawilem kod programu.

Postaram sie jutro. Schemat jest bardzo prosty   masa (-) opornik 1kom  dioda i wejscie Arduino A0,

 masa (-) opornik 1kom dioda i wejscie Arduino A1.

Przycisk laczysz z masą a wyjście z Arduino A5.

Naruralnie wejscia i wyjscia możesz sobie skonfigurowac jak Tobie sie podoba .  Nazwy i typy zmiennych tak samo (sa pewne ograniczenia). Pamietaj jednak, że jak chcesz być dobry to należy oszczędzać pamięć uC. 

Tak samo w tym programie jest jedna rzecz którą bym umieścił gdzie indziej , ale ze względu na inny cel tego projektu nie zrobiłem tego.

Link do komentarza
Share on other sites

(edytowany)
42 minuty temu, Santiago napisał:

no ale popatrzcie i proszę o uwagi bo ucze sie tego języka

Pewne rzeczy powtarzają się w obu przypadkach więc ja bym uprościł warunki:

    if ((digitalRead(Przycisk) ==  LOW) && (flaga == HIGH))
    {
         if(zmienna == 1)
        {
            licznik = licznik+ 1;
        }
        else if(zmienna == 0)
        {
             licznik = licznik- 1;
        }
        // zmienna == 1 ? licznik++:licznik--; // to jest to samo co wyżej :)
        flaga = 0;
    }           
   

Proszę zwrócić uwagę na to co napisałem w komentarzu

Edytowano przez _LM_
Link do komentarza
Share on other sites

Nie byłem pewien czy zawsze będzie inkrementował/dekrementował o jeden, aczkolwiek pokazałem inny sposób w zakomentowanym kodzie

  • Lubię! 1
Link do komentarza
Share on other sites

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.