Skocz do zawartości

Pomocna odpowiedź

Napisano

dzień dobry mam problem z działaniem skryptu

#include <Servo.h>

Servo myservo;  
int val = 0;

void setup() {
  Serial.begin(9600);
  myservo.attach(9); 
  pinMode(7,INPUT_PULLUP);
  
}

void loop() {
  int pkt = 1;
  
  while (true) 
  {

    if(digitalRead(7) == LOW) 
    {
       if(pkt < 6) 
       {
          pkt = 0;
       }
       else
       {
          if(pkt == 1) 
          {
            myservo.write(90);
            delay(25);
          }
          if(pkt == 2) 
          {
            myservo.write(100);
            delay(25);
          }
          if(pkt == 3) 
          {
            myservo.write(110);
            delay(25);
          }
          if(pkt == 4) 
          {
            myservo.write(115);
            delay(25);
          }
          if(pkt == 5) 
          {
            myservo.write(125);
            delay(25);
          }
          if(pkt == 6) 
          {
             myservo.write(135);
             delay(100);
          }
       }
    }
  } 
}

 

unnamed.jpg

23 minuty temu, Marek2115 napisał:

dzień dobry mam problem z działaniem skryptu

Nie napisałeś na czym problem polega. Zgaduję, że może chodzić o:
Ustawiasz pkt = 1 potem masz pętlę gdzie masz warunek: if(digitalRead(7) == LOW). Jeśli nie jest spełniony to nic nie robisz. Jeśli jest spełniony, to sprawdzasz, czy pkt jest mniejsze od 6. Jest, bo było 1, więc ustawiasz tą zmienną na 0. W kolejnym obiegu sprawdzasz czy zmienna pkt jest mniejsza od 6. Jest, bo było 0 i znów ustawiasz ją na 0 i tak w kółko...

 

Dziękuję i przepraszam  pomyliłem sie miało byc: żeby pkt nie liczył więcej niz 6 (pkt nie morze mieć 7,8,9...)

#include <Servo.h>
Servo myservo;  
int val = 0;
void setup() {
  Serial.begin(9600);
  myservo.attach(9); 
  pinMode(7,INPUT_PULLUP);
  
}
void loop() {
  int pkt = 1;
  
  while (true) 
  {
    if(digitalRead(7) == LOW) 
    {
       if(pkt > 6) 
       {
          pkt = 1;
       }
       else
       {
          if(pkt == 1) 
          {
            myservo.write(90);
            delay(25);
          }

 

5 minut temu, Marek2115 napisał:

Jak klikam to jest ok.20 kliknięć naraz

Daj jakis delay() zaraz w tym if'e tak z 50ms i powinno byc ok...

if(digitalRead(7) == LOW) 
    { 
      delay(50);
       if(pkt > 6) 
       {

Poprostu nie ma opoznienia i twoj guzik jest wykrywany wielokrotnie zanim nastapi "stala" zmiana...

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