• 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
Wyjście z pętli for nie działa
#3
(20-05-2018, 19:10)kaczakat napisał(a):
Cytat:Wejdź do przykładów Arduino i zobacz jak się obsługuje przyciski. Na pinie gdzie masz odczytywać stan przycisku musisz wymusić określony stan niski lub wysoki przez rezystor, np. 10k, a przycisk ma go zmienić na przeciwny. Możesz to zrobić podając parametr INPUT_PULLUP, wtedy wykorzystasz wewnętrzny rezystor podciągający do VCC, wewnętrzny podciąga tylko do stanu wysokiego (UNO,PRO MINI, NANO), także przyciskiem możesz zwierać tylko do GND, a o wciśnięciu przycisku świadczy odczyt 0, lub !1 (nie 1, nie HIGH).
W sumie nie musisz definiować tego pinu jako wejścia, bo tak są domyślnie ustawione piny Atmegi, ale dla porządku lepiej to zrobić, nie wiem co tam Arduino sobie wyrabia po starcie. Przykład masz u siebie w podstawach.
Masz zewnętrzny rezystor pull_down i zwierasz krańcówką do VCC? Z opisu, że działa jak zewrzesz przed włączeniem domyślam się, że robisz to na oślep.
 Przycisk z rezystorem mam opanowany,wstawię cały kod:

Kod:
#include <ESP8266WiFi.h>

const char* ssid = "TALKTALK92E85E"; //////////  TU WPISZ NAZWE SWOJEJ SIECI  //////////////////////////////////////////////////////////////////////////
const char* password = "SDFGFR";  ///////////  TU WPISZ HASLO DO SWOJEJ SIECI  ///////////////////////////////////////////////////////////////////////  

int stepPin = D1;
int dirPin = D2;
int sleep = D3;
int ilosc_obrotow = 5; ////////////////////////  TU USTALASZ ILOSC OBROTOW /////////////////////////////////////////////////////////////////////////////
int predkosc = 1; ////////////////////////////   TU USTALASZ PREDKOSC SILNIKA - 1 NAJSZYBCIEJ - 5 NAJWOLNIEJ  //////////////////////////////////////////
int kroki = 0;
int kolejnosc = 0;
int krancowka = D5;
int krancowkaState = 0;
int zmienna = 0;

IPAddress ip(192,168,1,128);
IPAddress gateway(192,168,1,1);
IPAddress subnet(255,255,255,0);

WiFiServer server(80);

void setup() {
 Serial.begin(9600);
 delay(100);
 
 pinMode(stepPin,OUTPUT);
 pinMode(dirPin,OUTPUT);
 pinMode(sleep,OUTPUT);
 pinMode(krancowka, INPUT);

 digitalWrite(sleep,LOW);

 kroki = ilosc_obrotow * 200;

 Serial.println();
 Serial.println();
 Serial.print("Laczenie do");
 Serial.println(ssid);

 WiFi.begin(ssid, password);

 WiFi.config(ip, gateway, subnet);

 while (WiFi.status() != WL_CONNECTED) {
   delay(5000);
   Serial.print(".");
 }
 Serial.println("");
 Serial.println("WiFi podlaczone");

 // Start the server
 server.begin();
 Serial.println("Start serwera");

 // Print the IP address
 Serial.print("Uzyj tego URL   ");
 Serial.print("http://");
 Serial.print(WiFi.localIP());
 Serial.println("/");

 krancowkaState = digitalRead(krancowka);

/////////////////////////////////////////////  TO NIE DZIAŁA   //////////////////////////////////

if(krancowkaState == LOW)
{
 digitalWrite(sleep,HIGH);
 digitalWrite(dirPin,HIGH);
 for(int x = 0; x < kroki; x++){
 digitalWrite(stepPin,HIGH);
 delay(predkosc);
 digitalWrite(stepPin,LOW);
 delay(predkosc);
 if(krancowkaState == HIGH)
 {
   Serial.println("Wyjscie z petli");
   break;
 }
 
    }
  }
}

////////////////////////////////////////////////////////////////////////////////////////////////


void loop() {
 WiFiClient client = server.available();
 if (!client) {
   return;
 }

 // Wait until the client sends some data
 Serial.println("Nowy klient");
 while(!client.available()){
   delay(10);
 }

 // Read the first line of the request
 String request = client.readStringUntil('\r');
 Serial.println(request);
 client.flush();

 if (request.indexOf("/Odsloniete") != -1) {
 if (kolejnosc ==0) {  
 digitalWrite(sleep,HIGH);
 digitalWrite(dirPin,LOW);
 for(int x = 0; x < kroki; x++){
 digitalWrite(stepPin,HIGH);
 delay(predkosc);
 digitalWrite(stepPin,LOW);
 delay(predkosc);
 }
}    
     client.println("HTTP/1.1 200 OK");
     client.println("Content-Type: text/html");
     client.println("");
     client.println("<!DOCTYPE HTML>");
     client.println("<html>");
     client.println("Odsloniete");
     client.println("</html>");
     digitalWrite(sleep,LOW);
     kolejnosc = 1;
 }
 
 if (request.indexOf("/Zasloniete") != -1)  {
 if (kolejnosc == 1) {
 digitalWrite(sleep,HIGH);
 digitalWrite(dirPin,HIGH);
 for(int x = 0; x < kroki; x++){
 digitalWrite(stepPin,HIGH);
 delay(predkosc);
 digitalWrite(stepPin,LOW);
 delay(predkosc);
 }
}    
     client.println("HTTP/1.1 200 OK");
     client.println("Content-Type: text/html");
     client.println("");
     client.println("<!DOCTYPE HTML>");
     client.println("<html>");
     client.println("Zasloniete");
     client.println("</html>");
     digitalWrite(sleep,LOW);
     kolejnosc = 0;
 }

 client.println("<br><br>");
 client.println("<a href=\"/Odsloniete\"\"><button>ODSLON</button></a>");
 client.println("<a href=\"/Zasloniete\"\"><button>ZASLON</button></a><br />");  
 client.println("</html>");
}
 
Odpowiedź
  


Wiadomości w tym wątku
Wyjście z pętli for nie działa - przez adrian1118 - 20-05-2018, 18:37
RE: Wyjście z pętli for nie działa - przez adrian1118 - 20-05-2018, 19:33

Skocz do:


Przeglądający: 2 gości