Skocz do zawartości

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 🙂

 

 

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 🙂

#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. 

 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. 

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. 

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

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.

(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_

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

  • Lubię! 1

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...