Формирование запроса

Rash923
Offline
Зарегистрирован: 17.12.2011

Доброго всем времени суток.

Нужен Ваш совет;)

Нужно получить показания с аналогового входа ардуины на PHP сервере. К ардуине подцеплен потенциометр. 

Поднял Apache  и MySql...  там все настроил, что бы на страничке отобразилось значение нужно, что бы с ардуины прошел следующий запрос:

http://192.168.0.20/test2/index.php/main/save/10

где 10 это значение с аналогового входа на ардуине....

Помогите пожалуйста правильно сформировать этот запрос.... как не пробывал, почему то запрос не уходит... смотрел по примеру webclient^

 

#include <SPI.h>
#include <Ethernet.h>

// Enter a MAC address for your controller below.
// Newer Ethernet shields have a MAC address printed on a sticker on the shield
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
// if you don't want to use DNS (and reduce your sketch size)
// use the numeric IP instead of the name for the server:
//IPAddress server(74,125,232,128);  // numeric IP for Google (no DNS)
char server[] = "www.google.com";    // name address for Google (using DNS)

// Set the static IP address to use if the DHCP fails to assign
IPAddress ip(192,168,0,177);

// Initialize the Ethernet client library
// with the IP address and port of the server 
// that you want to connect to (port 80 is default for HTTP):
EthernetClient client;

void setup() {
 // Open serial communications and wait for port to open:
  Serial.begin(9600);
   while (!Serial) {
    ; // wait for serial port to connect. Needed for Leonardo only
  }

  // start the Ethernet connection:
  if (Ethernet.begin(mac) == 0) {
    Serial.println("Failed to configure Ethernet using DHCP");
    // no point in carrying on, so do nothing forevermore:
    // try to congifure using IP address instead of DHCP:
    Ethernet.begin(mac, ip);
  }
  // give the Ethernet shield a second to initialize:
  delay(1000);
  Serial.println("connecting...");

  // if you get a connection, report back via serial:
  if (client.connect(server, 80)) {
    Serial.println("connected");
    // Make a HTTP request:
    client.println("GET /search?q=arduino HTTP/1.1");
    client.println("Host: www.google.com");
    client.println("Connection: close");
    client.println();
  } 
  else {
    // kf you didn't get a connection to the server:
    Serial.println("connection failed");
  }
}

void loop()
{
  // if there are incoming bytes available 
  // from the server, read them and print them:
  if (client.available()) {
    char c = client.read();
    Serial.print(c);
  }

  // if the server's disconnected, stop the client:
  if (!client.connected()) {
    Serial.println();
    Serial.println("disconnecting.");
    client.stop();

    // do nothing forevermore:
    while(true);
  }
}

 

Lipt0n
Offline
Зарегистрирован: 04.11.2013
//char server[] = "www.google.com"; - комментируем //


IPAddress server(192,168,0,20);


 if (client.connect(server, 80)) {
    Serial.println("connected");
    // Make a HTTP request:
    client.println("GET /test2/index.php/main/save/10 HTTP/1.1");
    client.println("Host: http:\//192.168.0.20"); - уберите бэкслэш
    client.println("Connection: close");
    client.println();

Попробуйте так.

Rash923
Offline
Зарегистрирован: 17.12.2011

неа не прошло(

Lipt0n
Offline
Зарегистрирован: 04.11.2013

В логах апача что-то светит?

Если активность есть - поменяйте строку client.println("Host: http:\//192.168.0.20");

на client.println("Host: 192.168.0.20");

Rash923
Offline
Зарегистрирован: 17.12.2011

вообщем вот так все заработало  ;)

#include <Ethernet.h>
#include <SPI.h>


byte mac[] = { 0x90, 0xA2, 0xDA, 0x00, 0x4C, 0xFB };
byte ip[] = { 192, 168, 1, 21 };

byte server[] = { 192, 168, 1, 20 };

EthernetClient client;
int dav0 = 0;

void setup()
{
  Ethernet.begin(mac, ip); 
}

void loop()
{
int t = analogRead(dav0);
String msg = "GET /test2/index.php/main/save/" + String(t);


client.connect(server, 80);
client.println(msg);
//Ждем 1 сек. 
delay (1000);

//потом отключаемся
client.stop();

//Данные будут отправляться каждые 2 сек., выше мы уже подождали 1 сек, подождем еще 1 сек. 
 delay (1000);
  }

 

Rash923
Offline
Зарегистрирован: 17.12.2011
#include <Ethernet.h>
#include <SPI.h>

long time = 0;
long time2 = 0;
long interval = 500;

byte mac[] = { 0x90, 0xA2, 0xDA, 0x00, 0x4C, 0xFB };
byte ip[] = { 192, 168, 1, 21 };

byte server[] = { 192, 168, 1, 20 };

EthernetClient client;
int dav0 = 0;


void setup()
  {
  Serial.begin(9600);
  Ethernet.begin(mac, ip); 
  }

void loop()
  {
  int P1 = analogRead(dav0);
  int P1val = map(P1, 0, 1023, 0, 60);
  if((millis() - time) > interval)
    {
    String msg = "GET /test2/index.php/main/save/" + String(P1val);
    client.connect(server, 80);
    client.println(msg);
    time=millis();
    }
    if((millis() - time2) > interval)
    {
    client.stop();
    time2=millis();
    Serial.print(P1val);
    }
  }
  

Блин... почему всегда так...) вообщем наладил я отправку  данных на пхп сервер, но состыковать данный код со своими алгоритмами почемуто не получается... все зависает..

 

#include <Ethernet.h>
#include <SPI.h>

byte mac[] = { 0x90, 0xA2, 0xDA, 0x00, 0x4C, 0xFB };
byte ip[] = { 192, 168, 1, 21 };
byte server[] = { 192, 168, 1, 20 };
EthernetClient client;

//zadvigka №1
int dav0 = 0; //davlenie do zadvigki
int dav1 = 1; //davlenie posle zadvigki
int ledp1 = 44; //indekacija otrabotki pervogo poroga (TU->STOP; TU->OPEN)
int ledp2 = 45; //indekacija otrabotki vtorogo poroga (TU->STOP; TU->OPEN; TU->STOP NEFTEPROVOD)

//zadvigka №2
int dav2 = 2;
int dav3 = 3;
int ledp3 = 22;
int ledp4 = 23;

//zadvigka №3
int dav4 = 4;
int dav5 = 5;
int ledp5 = 24;
int ledp6 = 25;

//zadvigka №4
int dav6 = 6;
int dav7 = 7;
int ledp7 = 26;
int ledp8 = 27;

//zadvigka №5
int dav8 = 8;
int dav9 = 9;
int ledp9 = 32;
int ledp10 = 33;

//zadvigka №6
int dav10 = 10;
int dav11 = 11;
int ledp11 = 30;
int ledp12 = 31;

//zadvigka №7
int dav12 = 12;
int dav13 = 13;
int ledp13 = 28;
int ledp14 = 29;

//prisvoenie predidushemu znacheniu davlenija, znachenie deistvuushego
int lastdav0 = dav0; 
int lastdav1 = dav1;
int lastdav2 = dav0;
int lastdav3 = dav1;
int lastdav4 = dav2;
int lastdav5 = dav3;
int lastdav6 = dav2;
int lastdav7 = dav3;
int lastdav8 = dav4;
int lastdav9 = dav5;
int lastdav10 = dav4;
int lastdav11 = dav5;
int lastdav12 = dav6;
int lastdav13 = dav7;
int lastdav14 = dav6;
int lastdav15 = dav7;
int lastdav16 = dav8;
int lastdav17 = dav9;
int lastdav18 = dav8;
int lastdav19 = dav9;
int lastdav20 = dav10;
int lastdav21 = dav11;
int lastdav22 = dav10;
int lastdav23 = dav11;
int lastdav24 = dav12;
int lastdav25 = dav13;
int lastdav26 = dav12;
int lastdav27 = dav13;

int porog1 = 18;   //ustavka pervogo poroga dlja lneinoi zashiti (skorost' izmenenija)
int porog2 = 120;  //ustavka vtorogo poroga dlja lneinoi zashiti  (skorost' izmenenija)
int porog3 = 1022;

const int MNA1 = 52;     // Knopka stop MNA1
const int MNA1ON = 34;   // Indekacija MNA1 ON
const int MNA1OFF = 35;  // Indekacija MNA1 OFF

const int MNA2 = 53;
const int MNA2ON = 36;
const int MNA2OFF = 37;

const int MNA3 = 50;
const int MNA3ON = 38;
const int MNA3OFF = 39;

const int MNA4 = 51;
const int MNA4ON = 40;
const int MNA4OFF = 41;

const int STOPMN = 42;   // Indekacija STOP Nefteprovod
const int STOPNPS = 49;  // Knopka STOP NPS
const int RESET = 47;  // Knopka STOP RESET

int buttonState  = 0;
int buttonState1 = 0;    //deklaraciaja
int buttonState2 = 0;
int buttonState3 = 0;
int buttonState4 = 0;
int buttonState5 = 0;
int pin1on = 0;
int pin2on = 0;
int pin3on = 0;
int pin4on = 0;

boolean lastSTOPNPS = LOW;
boolean lastMNA1OFF = false;
boolean lastMNA2OFF = false;
boolean lastMNA3OFF = false;
boolean lastMNA4OFF = false;
boolean lastSTOPMN = false;

int TZ1 = 14;            //davlenie do tranzitnogo klapana
int TZ2 = 15;            //davlenie posle tranzintogo klapana

long interval = 1000;    //vremja prohogdenija komandi na lineinoi chasti
long interval2 = 15000;  //ustavka vremeni na otkritie tranzitnogo klapana
long interval3 = 500;
long interval4 = 333;

long time = 0;   //deklaracija
long time1 = 0;
long time2 = 0;
long time3 = 0;
long time4 = 0;
long time5 = 0;
long time6 = 0;
long time7 = 0;
long time8 = 0;
long time9 = 0;
long time10 = 0;
long time11 = 0;
long time12 = 0;
long time13 = 0;
long time14 = 0;
long time15 = 0;
long time16 = 0;
long time17 = 0;

void setup()
{
  Serial.begin(9600);
  Ethernet.begin(mac, ip); 
  pinMode (ledp1, OUTPUT); //prisvoenie diskretnim vihodam, znachenie vihod
  pinMode (ledp2, OUTPUT);
  pinMode (ledp3, OUTPUT);
  pinMode (ledp4, OUTPUT);
  pinMode (ledp5, OUTPUT);
  pinMode (ledp6, OUTPUT);
  pinMode (ledp7, OUTPUT);
  pinMode (ledp8, OUTPUT);
  pinMode (ledp9, OUTPUT);
  pinMode (ledp10, OUTPUT);
  pinMode (ledp11, OUTPUT);
  pinMode (ledp12, OUTPUT);
  pinMode (ledp13, OUTPUT);
  pinMode (ledp14, OUTPUT);
 
   pinMode(MNA1ON, OUTPUT);
   pinMode(MNA1OFF, OUTPUT);    
   pinMode(MNA1, INPUT); 

   pinMode(MNA2ON, OUTPUT);
   pinMode(MNA2OFF, OUTPUT);    
   pinMode(MNA2, INPUT);
   
   pinMode(MNA3ON, OUTPUT);
   pinMode(MNA3OFF, OUTPUT);    
   pinMode(MNA3, INPUT);
   
   pinMode(MNA4ON, OUTPUT);
   pinMode(MNA4OFF, OUTPUT);    
   pinMode(MNA4, INPUT);
   
   pinMode(STOPMN, OUTPUT);
   pinMode(STOPNPS, INPUT);
}

void loop()
{
digitalWrite(MNA1ON, HIGH);
digitalWrite(MNA2ON, HIGH);
digitalWrite(MNA3ON, HIGH);
digitalWrite(MNA4ON, HIGH);

  
if(MNA1OFF == HIGH)
{
  digitalWrite(MNA1ON, LOW);
}

if(MNA2OFF == HIGH)
{
  digitalWrite(MNA2ON, LOW);
}

if(MNA3OFF == HIGH)
{
  digitalWrite(MNA3ON, LOW);
}

if(MNA4OFF == HIGH)
{
  digitalWrite(MNA4ON, LOW);
}
  
///////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////Lineinaja zashita//////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////
 
 buttonState = digitalRead(RESET);
    
//algoritm dlja zadvigki №1
int dav0val = analogRead(dav0); //schitivanie davlenija do zadvigki
int dav1val = analogRead(dav1); // schitivanie davlenija posle zadvigki
//uslovie otrabotki pervogo poroga
if(dav0val - lastdav0 > porog1 && lastdav1 - dav1val > porog1)
{
  digitalWrite(ledp1, HIGH); //indekacija otrabotki pervogo poroga
 }
//vremja prohogdenija komandi dlja pervogo poroga
if((millis() - time1) > interval)
{
 //uslovie snjatija flaga pervogo poroga
if((dav0val - lastdav0 < porog1) || (lastdav1 - dav1val < porog1) || buttonState == HIGH)
{
digitalWrite(ledp1, LOW); 
  lastdav0 = dav0val; //prisvoenie predidushemu znacheniu, deistvuushee znachenie davlenija
  lastdav1 = dav1val;
  time1=millis();
}
}
//uslovie otrabotki vtorogo poroga
if(dav0val - lastdav0 > porog2 && lastdav1 - dav1val > porog2)
{
  digitalWrite(ledp1, LOW);
  digitalWrite(ledp2, HIGH);
  digitalWrite(MNA1ON, LOW);
  digitalWrite(MNA1OFF, HIGH);
  digitalWrite(MNA2ON, LOW);  
  digitalWrite(MNA2OFF, HIGH);
  digitalWrite(MNA3ON, LOW);
  digitalWrite(MNA3OFF, HIGH);
  digitalWrite(MNA4ON, LOW);
  digitalWrite(MNA4OFF, HIGH);
  digitalWrite(STOPMN, HIGH);
}
//vremja prohogdenija komandi dlja vtorogo poroga
if((millis() - time2) > interval)
{
 //uslovie snjatija flaga vtorogo poroga
 if(dav0val - lastdav2 > porog3 || buttonState == HIGH);
{
digitalWrite(ledp2, LOW);
digitalWrite(MNA1OFF, LOW);
digitalWrite(MNA2OFF, LOW);
digitalWrite(MNA3OFF, LOW);
digitalWrite(MNA4OFF, LOW);
digitalWrite(STOPMN, LOW);
  lastdav2 = dav0val; //prisvoenie predidushemu znacheniu, deistvuushee znachenie davlenija
  lastdav3 = dav1val;
  time2=millis();
}
}

//algoritm dlja zadvigki №2
int dav2val = analogRead(dav2); //schitivanie davlenija do zadvigki
int dav3val = analogRead(dav3); // schitivanie davlenija posle zadvigki
//uslovie otrabotki pervogo poroga
if(dav2val - lastdav4 > porog1 && lastdav5 - dav3val > porog1)
{
  digitalWrite(ledp3, HIGH); //indekacija otrabotki pervogo poroga
 }
//vremja prohogdenija komandi dlja pervogo poroga
if((millis() - time3) > interval)
{
 //uslovie snjatija flaga pervogo poroga
 if((dav2val - lastdav4 < porog1) || (lastdav5 - dav3val < porog1) || buttonState == HIGH)
{
digitalWrite(ledp3, LOW); 
  lastdav4 = dav2val; //prisvoenie predidushemu znacheniu, deistvuushee znachenie davlenija
  lastdav5 = dav3val;
  time3=millis();
}
}
//uslovie otrabotki vtorogo poroga
if(dav2val - lastdav4 > porog2 && lastdav5 - dav3val > porog2)
{
  digitalWrite(ledp3, LOW);
  digitalWrite(ledp4, HIGH);
  digitalWrite(MNA1ON, LOW);
  digitalWrite(MNA1OFF, HIGH);
  digitalWrite(MNA2ON, LOW);  
  digitalWrite(MNA2OFF, HIGH);
  digitalWrite(MNA3ON, LOW);
  digitalWrite(MNA3OFF, HIGH);
  digitalWrite(MNA4ON, LOW);
  digitalWrite(MNA4OFF, HIGH);
  digitalWrite(STOPMN, HIGH);
}
//vremja prohogdenija komandi dlja vtorogo poroga
if((millis() - time4) > interval)
{
 //uslovie snjatija flaga vtorogo poroga
 if(dav2val - lastdav6 > porog3 || buttonState == HIGH);
{
digitalWrite(ledp4, LOW);
digitalWrite(MNA1OFF, LOW);
digitalWrite(MNA2OFF, LOW);
digitalWrite(MNA3OFF, LOW);
digitalWrite(MNA4OFF, LOW);
digitalWrite(STOPMN, LOW);
  lastdav6 = dav2val; //prisvoenie predidushemu znacheniu, deistvuushee znachenie davlenija
  lastdav7 = dav3val;
  time4=millis();
}
}
//algoritm dlja zadvigki №3
int dav4val = analogRead(dav4); //schitivanie davlenija do zadvigki
int dav5val = analogRead(dav5); // schitivanie davlenija posle zadvigki
//uslovie otrabotki pervogo poroga
if(dav4val - lastdav8 > porog1 && lastdav9 - dav5val > porog1)
{
  digitalWrite(ledp5, HIGH); //indekacija otrabotki pervogo poroga
 }
//vremja prohogdenija komandi dlja pervogo poroga
if((millis() - time5) > interval)
{
 //uslovie snjatija flaga pervogo poroga
 if((dav4val - lastdav8 < porog1) || (lastdav9 - dav5val < porog1) || buttonState == HIGH)
{
digitalWrite(ledp5, LOW); 
  lastdav8 = dav4val; //prisvoenie predidushemu znacheniu, deistvuushee znachenie davlenija
  lastdav9 = dav5val;
  time5=millis();
}
}
//uslovie otrabotki vtorogo poroga
if(dav4val - lastdav8 > porog2 && lastdav9 - dav5val > porog2)
{
  digitalWrite(ledp5, LOW);
  digitalWrite(ledp6, HIGH);
 digitalWrite(MNA1ON, LOW);
  digitalWrite(MNA1OFF, HIGH);
  digitalWrite(MNA2ON, LOW);  
  digitalWrite(MNA2OFF, HIGH);
  digitalWrite(MNA3ON, LOW);
  digitalWrite(MNA3OFF, HIGH);
  digitalWrite(MNA4ON, LOW);
  digitalWrite(MNA4OFF, HIGH);
  digitalWrite(STOPMN, HIGH);
}
//vremja prohogdenija komandi dlja vtorogo poroga
if((millis() - time6) > interval)
{
 //uslovie snjatija flaga vtorogo poroga
 if(dav4val - lastdav10 < porog3 || buttonState == HIGH);
{
digitalWrite(ledp6, LOW);
digitalWrite(MNA1OFF, LOW);
digitalWrite(MNA2OFF, LOW);
digitalWrite(MNA3OFF, LOW);
digitalWrite(MNA4OFF, LOW);
digitalWrite(STOPMN, LOW);
  lastdav10 = dav4val; //prisvoenie predidushemu znacheniu, deistvuushee znachenie davlenija
  lastdav11 = dav5val;
  time6=millis();
}
}

//algoritm dlja zadvigki №4
int dav6val = analogRead(dav6); //schitivanie davlenija do zadvigki
int dav7val = analogRead(dav7); // schitivanie davlenija posle zadvigki
//uslovie otrabotki pervogo poroga
if(dav6val - lastdav12 > porog1 && lastdav13 - dav7val > porog1)
{
  digitalWrite(ledp7, HIGH); //indekacija otrabotki pervogo poroga
 }
//vremja prohogdenija komandi dlja pervogo poroga
if((millis() - time7) > interval)
{
 //uslovie snjatija flaga pervogo poroga
 if((dav6val - lastdav12 < porog1) || (lastdav13 - dav7val < porog1) || buttonState == HIGH)
{
digitalWrite(ledp7, LOW); 
  lastdav12 = dav6val; //prisvoenie predidushemu znacheniu, deistvuushee znachenie davlenija
  lastdav13 = dav7val;
  time7=millis();
}
}
//uslovie otrabotki vtorogo poroga
if(dav6val - lastdav12 > porog2 && lastdav13 - dav7val > porog2)
{
  digitalWrite(ledp7, LOW);
  digitalWrite(ledp8, HIGH);
  digitalWrite(MNA1ON, LOW);
  digitalWrite(MNA1OFF, HIGH);
  digitalWrite(MNA2ON, LOW);  
  digitalWrite(MNA2OFF, HIGH);
  digitalWrite(MNA3ON, LOW);
  digitalWrite(MNA3OFF, HIGH);
  digitalWrite(MNA4ON, LOW);
  digitalWrite(MNA4OFF, HIGH);
  digitalWrite(STOPMN, HIGH);
}
//vremja prohogdenija komandi dlja vtorogo poroga
if((millis() - time8) > interval)
{
 //uslovie snjatija flaga vtorogo poroga
 if(dav6val - lastdav14 < porog3 || buttonState == HIGH);
{
digitalWrite(ledp8, LOW);
digitalWrite(MNA1OFF, LOW);
digitalWrite(MNA2OFF, LOW);
digitalWrite(MNA3OFF, LOW);
digitalWrite(MNA4OFF, LOW);
digitalWrite(STOPMN, LOW);
  lastdav14 = dav6val; //prisvoenie predidushemu znacheniu, deistvuushee znachenie davlenija
  lastdav15 = dav7val;
  time8=millis();
}
}

//algoritm dlja zadvigki №5
int dav8val = analogRead(dav8); //schitivanie davlenija do zadvigki
int dav9val = analogRead(dav9); // schitivanie davlenija posle zadvigki
//uslovie otrabotki pervogo poroga
if(dav8val - lastdav16 > porog1 && lastdav17 - dav9val > porog1)
{
  digitalWrite(ledp9, HIGH); //indekacija otrabotki pervogo poroga
 }
//vremja prohogdenija komandi dlja pervogo poroga
if((millis() - time9) > interval)
{
 //uslovie snjatija flaga pervogo poroga
 if((dav8val - lastdav16 < porog1) || (lastdav17 - dav9val < porog1) || buttonState == HIGH)
{
digitalWrite(ledp9, LOW); 
  lastdav16 = dav8val; //prisvoenie predidushemu znacheniu, deistvuushee znachenie davlenija
  lastdav17 = dav9val;
  time9=millis();
}
}
//uslovie otrabotki vtorogo poroga
if(dav8val - lastdav16 > porog2 && lastdav17 - dav9val > porog2)
{
  digitalWrite(ledp9, LOW);
  digitalWrite(ledp10, HIGH);
  digitalWrite(MNA1ON, LOW);
  digitalWrite(MNA1OFF, HIGH);
  digitalWrite(MNA2ON, LOW);  
  digitalWrite(MNA2OFF, HIGH);
  digitalWrite(MNA3ON, LOW);
  digitalWrite(MNA3OFF, HIGH);
  digitalWrite(MNA4ON, LOW);
  digitalWrite(MNA4OFF, HIGH);
  digitalWrite(STOPMN, HIGH);
}
//vremja prohogdenija komandi dlja vtorogo poroga
if((millis() - time10) > interval)
{
 //uslovie snjatija flaga vtorogo poroga
 if(dav8val - lastdav18 < porog3 || buttonState == HIGH);
{
digitalWrite(ledp10, LOW);
digitalWrite(MNA1OFF, LOW);
digitalWrite(MNA2OFF, LOW);
digitalWrite(MNA3OFF, LOW);
digitalWrite(MNA4OFF, LOW);
digitalWrite(STOPMN, LOW);
  lastdav18 = dav8val; //prisvoenie predidushemu znacheniu, deistvuushee znachenie davlenija
  lastdav19 = dav9val;
  time10=millis();
}
}

//algoritm dlja zadvigki №6
int dav10val = analogRead(dav10); //schitivanie davlenija do zadvigki
int dav11val = analogRead(dav11); // schitivanie davlenija posle zadvigki
//uslovie otrabotki pervogo poroga
if(dav10val - lastdav20 > porog1 && lastdav21 - dav11val > porog1)
{
  digitalWrite(ledp11, HIGH); //indekacija otrabotki pervogo poroga
 }
//vremja prohogdenija komandi dlja pervogo poroga
if((millis() - time11) > interval)
{
 //uslovie snjatija flaga pervogo poroga
 if((dav10val - lastdav20 < porog1) || (lastdav21 - dav11val < porog1) || buttonState == HIGH)
{
digitalWrite(ledp11, LOW); 
  lastdav20 = dav10val; //prisvoenie predidushemu znacheniu, deistvuushee znachenie davlenija
  lastdav21 = dav11val;
  time11=millis();
}
}
//uslovie otrabotki vtorogo poroga
if(dav10val - lastdav20 > porog2 && lastdav21 - dav11val > porog2)
{
  digitalWrite(ledp11, LOW);
  digitalWrite(ledp12, HIGH);
  digitalWrite(MNA1ON, LOW);
  digitalWrite(MNA1OFF, HIGH);
  digitalWrite(MNA2ON, LOW);  
  digitalWrite(MNA2OFF, HIGH);
  digitalWrite(MNA3ON, LOW);
  digitalWrite(MNA3OFF, HIGH);
  digitalWrite(MNA4ON, LOW);
  digitalWrite(MNA4OFF, HIGH);
  digitalWrite(STOPMN, HIGH);
}
//vremja prohogdenija komandi dlja vtorogo poroga
if((millis() - time12) > interval)
{
 //uslovie snjatija flaga vtorogo poroga
 if(dav10val - lastdav22 < porog3 || buttonState == HIGH);
{
digitalWrite(ledp12, LOW);
digitalWrite(MNA1OFF, LOW);
digitalWrite(MNA2OFF, LOW);
digitalWrite(MNA3OFF, LOW);
digitalWrite(MNA4OFF, LOW);
digitalWrite(STOPMN, LOW);
  lastdav22 = dav10val; //prisvoenie predidushemu znacheniu, deistvuushee znachenie davlenija
  lastdav23 = dav11val;
  time12=millis();
}
}

//algoritm dlja zadvigki №7
int dav12val = analogRead(dav12); //schitivanie davlenija do zadvigki
int dav13val = analogRead(dav13); // schitivanie davlenija posle zadvigki
//uslovie otrabotki pervogo poroga
if(dav12val - lastdav24 > porog1 && lastdav25 - dav13val > porog1)
{
  digitalWrite(ledp13, HIGH); //indekacija otrabotki pervogo poroga
 }
//vremja prohogdenija komandi dlja pervogo poroga
if((millis() - time13) > interval)
{
 //uslovie snjatija flaga pervogo poroga
if((dav12val - lastdav24 < porog1) || (lastdav25 - dav13val < porog1) || buttonState == HIGH)
{
digitalWrite(ledp13, LOW); 
  lastdav24 = dav12val; //prisvoenie predidushemu znacheniu, deistvuushee znachenie davlenija
  lastdav25 = dav13val;
  time13=millis();
}
}
//uslovie otrabotki vtorogo poroga
if(dav12val - lastdav24 > porog2 && lastdav25 - dav13val > porog2)
{
  digitalWrite(ledp13, LOW);
  digitalWrite(ledp14, HIGH);
  digitalWrite(MNA1ON, LOW);
  digitalWrite(MNA1OFF, HIGH);
  digitalWrite(MNA2ON, LOW);  
  digitalWrite(MNA2OFF, HIGH);
  digitalWrite(MNA3ON, LOW);
  digitalWrite(MNA3OFF, HIGH);
  digitalWrite(MNA4ON, LOW);
  digitalWrite(MNA4OFF, HIGH);
  digitalWrite(STOPMN, HIGH);
}
//vremja prohogdenija komandi dlja vtorogo poroga
if((millis() - time14) > interval)
{
 //uslovie snjatija flaga vtorogo poroga
 if(dav12val - lastdav26 < porog3 || buttonState == HIGH);
{
digitalWrite(ledp14, LOW);
digitalWrite(MNA1OFF, LOW);
digitalWrite(MNA2OFF, LOW);
digitalWrite(MNA3OFF, LOW);
digitalWrite(MNA4OFF, LOW);
digitalWrite(STOPMN, LOW);
  lastdav26 = dav12val; //prisvoenie predidushemu znacheniu, deistvuushee znachenie davlenija
  lastdav27 = dav13val;
  time14=millis();
}
}


/////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////Stancionnaja zashita/////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////
buttonState1 = digitalRead(MNA1); //schitivanie znachenija knopki STOP MNA1
   buttonState2 = digitalRead(MNA2); 
   buttonState3 = digitalRead(MNA3); 
   buttonState4 = digitalRead(MNA4); 
   buttonState5 = digitalRead(STOPNPS); //schitivanie znachenija knopki STOP MNA2  
   pin1on = digitalRead(MNA1OFF);
   pin2on = digitalRead(MNA2OFF);
   pin3on = digitalRead(MNA3OFF);
   pin4on = digitalRead(MNA4OFF);
    
    //otslegivanie sostojanija MNA1
   if (buttonState1 == HIGH) 
  {     
    digitalWrite(MNA1OFF, HIGH);
  } 
   
  //otslegivanie sostojanija MNA2
   if (buttonState2 == HIGH) 
  {     
    digitalWrite(MNA2OFF, HIGH); 
  } 
  
  //otslegivanie sostojanija MNA3
   if (buttonState3 == HIGH) 
  {     
    digitalWrite(MNA3OFF, HIGH);
  } 
  
  //otslegivanie sostojanija MNA4
   if (buttonState4 == HIGH) 
  {     
    digitalWrite(MNA4OFF, HIGH);  
  } 
  
  //otslegivanie sostojanija STOPNPS
  if (buttonState5 == HIGH) 
  {     
    digitalWrite(MNA1OFF, HIGH);  
    digitalWrite(MNA2OFF, HIGH);
    digitalWrite(MNA3OFF, HIGH);
    digitalWrite(MNA4OFF, HIGH);
  } 
          
  int valTZ1 = analogRead(TZ1);
  int valTZ2 = analogRead(TZ2);
 
 //zalipanie knopki STOPNPS
 if (buttonState5 == HIGH && lastSTOPNPS ==LOW)
  {
   lastMNA1OFF = !lastMNA1OFF;
   lastMNA2OFF = !lastMNA2OFF;
   lastMNA3OFF = !lastMNA3OFF;
   lastMNA4OFF = !lastMNA4OFF;
   lastSTOPNPS = HIGH;
  }
  else
  {
    lastSTOPNPS = buttonState5;
  }
  digitalWrite(MNA1OFF, lastMNA1OFF);
  digitalWrite(MNA2OFF, lastMNA2OFF);
  digitalWrite(MNA3OFF, lastMNA3OFF);
  digitalWrite(MNA4OFF, lastMNA4OFF);
  
  //uslovija otrabotki zashiti
 if (pin1on == HIGH && pin2on == HIGH && pin3on == HIGH && pin4on == HIGH)
  {
    if((millis() - time) > interval2)
      {
        if(valTZ1 - valTZ2 > 100)
        {
       digitalWrite(STOPMN, HIGH);
        }
      }
   }
     
   else if ((valTZ1 - valTZ2 > porog3) || buttonState == HIGH)
  {
    digitalWrite(STOPMN, LOW);
    time=millis();
  }
/////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////Otpravka na PHP server///////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////
 
  int P1val = map(dav0val, 0, 1023, 0, 60);
  if((millis() - time16) > interval)
    {
    String msg = "GET /test2/index.php/main/save/" + String(P1val);
    //client.connect(server, 80);
    client.println(msg);
    time16=millis();
    }
    if((millis() - time17) > interval)
    {
    client.stop();
    time17=millis();
    Serial.print(P1val);
    }
}

все работает нормально если вывести в комментарий строчку соединения с сервером, а без нее ни как... в чем может быть причина?

Lipt0n
Offline
Зарегистрирован: 04.11.2013
if((millis() - time16) > interval)
    {
    String msg = "GET /test2/index.php/main/save/" + String(P1val);
    //client.connect(server, 80);
    client.println(msg);
    time16=millis();
    }


if((millis() - time17) > interval)
    {
    client.stop();
    time17=millis();
    Serial.print(P1val);
    }


Зачем Вам две одинаковые функции?

if((millis() - time16) > interval)
{
    String msg = "GET /test2/index.php/main/save/" + String(P1val);
    if (client.connect(server, 80))
        {
        Serial.println("connected ");
        client.println(msg);
        time16=millis();
        client.stop();
        Serial.print(P1val);
        }
}

И было бы неплохо посмотреть в логи апача.

UPD. зачем в коде так много проверок на прошествие 500мс? Можно весь подобный код записать под одним условием if((millis() - time16) > interval) и будет код дергаться каждые полсекунды.

Rash923
Offline
Зарегистрирован: 17.12.2011

я пробывал уже вставлять из примера webclient данные строки... не помогает( все также виснет... на сериал порте все глухо... 

#include <Ethernet.h>
#include <SPI.h>

byte mac[] = { 0x90, 0xA2, 0xDA, 0x00, 0x4C, 0xFB };
byte ip[] = { 192, 168, 1, 21 };
byte server[] = { 192, 168, 1, 20 };
EthernetClient client;

//zadvigka №1
int dav0 = 0; //davlenie do zadvigki
int dav1 = 1; //davlenie posle zadvigki
int ledp1 = 44; //indekacija otrabotki pervogo poroga (TU->STOP; TU->OPEN)
int ledp2 = 45; //indekacija otrabotki vtorogo poroga (TU->STOP; TU->OPEN; TU->STOP NEFTEPROVOD)

//prisvoenie predidushemu znacheniu davlenija, znachenie deistvuushego
int lastdav0 = dav0; 
int lastdav1 = dav1;
int lastdav2 = dav0;
int lastdav3 = dav1;

int porog1 = 20;   //ustavka pervogo poroga dlja lneinoi zashiti (skorost' izmenenija)
int porog2 = 50;  //ustavka vtorogo poroga dlja lneinoi zashiti  (skorost' izmenenija)
int porog3 = 1022;

const int STOPMN = 42;   // Indekacija STOP Nefteprovod
const int STOPNPS = 49;  // Knopka STOP NPS
const int RESET = 47;  // Knopka STOP RESET

int buttonState  = 0;

long interval2 = 15000;  //ustavka vremeni na otkritie tranzitnogo klapana
long interval = 1000;

long time = 0;   //deklaracija
long time1 = 0;
long time2 = 0;
long time3 = 0;
long time4 = 0;

void setup()
{
  Ethernet.begin(mac, ip); 
  Serial.begin(9600);
  pinMode (ledp1, OUTPUT); //prisvoenie diskretnim vihodam, znachenie vihod
  pinMode (ledp2, OUTPUT);
  pinMode (STOPMN, OUTPUT);
}

void loop()
{
buttonState = digitalRead(RESET);
    
//algoritm dlja zadvigki №1
int dav0val = analogRead(dav0); //schitivanie davlenija do zadvigki
int dav1val = analogRead(dav1); // schitivanie davlenija posle zadvigki
//uslovie otrabotki pervogo poroga
if(dav0val - lastdav0 > porog1 && lastdav1 - dav1val > porog1)
{
  digitalWrite(ledp1, HIGH); //indekacija otrabotki pervogo poroga
 }
//vremja prohogdenija komandi dlja pervogo poroga
if((millis() - time1) > interval)
{
 //uslovie snjatija flaga pervogo poroga
if((dav0val - lastdav0 < porog1) || (lastdav1 - dav1val < porog1) || buttonState == HIGH)
{
digitalWrite(ledp1, LOW); 
  lastdav0 = dav0val; //prisvoenie predidushemu znacheniu, deistvuushee znachenie davlenija
  lastdav1 = dav1val;
  time1=millis();
}
}
//uslovie otrabotki vtorogo poroga
if(dav0val - lastdav0 > porog2 && lastdav1 - dav1val > porog2)
{
  digitalWrite(ledp1, LOW);
  digitalWrite(ledp2, HIGH);
  digitalWrite(STOPMN, HIGH);
}
//vremja prohogdenija komandi dlja vtorogo poroga
if((millis() - time2) > interval)
{
 //uslovie snjatija flaga vtorogo poroga
 if(dav0val - lastdav2 > porog3 || buttonState == HIGH);
{
digitalWrite(ledp2, LOW);
digitalWrite(STOPMN, LOW);
  lastdav2 = dav0val; //prisvoenie predidushemu znacheniu, deistvuushee znachenie davlenija
  lastdav3 = dav1val;
  time2=millis();
}
}

  int P1val = map(dav0val, 0, 1023, 0, 60);
  if((millis() - time3) > interval)
    {
    String msg = "GET /test2/index.php/main/save/" + String(P1val);
    //if (client.connect(server, 80))
      {
      Serial.println("connected ");
      client.println(msg);
      time3=millis();
      client.stop();
      Serial.print(P1val);
      }
    }
}

 

но если закоментить 98 строку, то все работает....

из-за чего коннект может вводить ардуину в ступор?

два раза отслеживал 500 мс чтобы дать время ардуине подключиться и отослать месадж и получалось что ардуина отправляла сообщение раз в секунду.

Rash923
Offline
Зарегистрирован: 17.12.2011

пардон.. последний пост не считать актуальным... апппач почемуто был выключен :D

сейчас протестю и отпишусь)

Lipt0n
Offline
Зарегистрирован: 04.11.2013

Rash923 пишет:

пардон.. последний пост не считать актуальным... апппач почемуто был выключен :D

сейчас протестю и отпишусь)

Я как бы не раз указывал Вам на то что следует обратить внимание на логи апача...

Rash923
Offline
Зарегистрирован: 17.12.2011

да нет дело в том что апач до этого работал... но все равно небыло реакции... это потом когда я на обед пошел я все выключил...

но не в этом суть...) факт в том, что не работало всеравно с  моими алгоритмами..)

НО!!!! я все таки разгодал эту загадку))

#include <Ethernet.h>
#include <SPI.h>

byte mac[] = { 0x90, 0xA2, 0xDA, 0x00, 0x4C, 0xFB };
byte ip[] = { 192, 168, 1, 21 };
byte server[] = { 192, 168, 1, 20 };
EthernetClient client;

//zadvigka №1
int dav0 = 0; //davlenie do zadvigki
int dav1 = 1; //davlenie posle zadvigki
int ledp1 = 44; //indekacija otrabotki pervogo poroga (TU->STOP; TU->OPEN)
int ledp2 = 45; //indekacija otrabotki vtorogo poroga (TU->STOP; TU->OPEN; TU->STOP NEFTEPROVOD)

//zadvigka №2
int dav2 = 2;
int dav3 = 3;
int ledp3 = 22;
int ledp4 = 23;

//zadvigka №3
int dav4 = 4;
int dav5 = 5;
int ledp5 = 24;
int ledp6 = 25;

//zadvigka №4
int dav6 = 6;
int dav7 = 7;
int ledp7 = 26;
int ledp8 = 27;

//zadvigka №5
int dav8 = 8;
int dav9 = 9;
int ledp9 = 32;
int ledp10 = 33;

//zadvigka №6
int dav10 = 10;
int dav11 = 11;
int ledp11 = 30;
int ledp12 = 31;

//zadvigka №7
int dav12 = 12;
int dav13 = 13;
int ledp13 = 28;
int ledp14 = 29;

//prisvoenie predidushemu znacheniu davlenija, znachenie deistvuushego
int lastdav0 = dav0; 
int lastdav1 = dav1;
int lastdav2 = dav0;
int lastdav3 = dav1;
int lastdav4 = dav2;
int lastdav5 = dav3;
int lastdav6 = dav2;
int lastdav7 = dav3;
int lastdav8 = dav4;
int lastdav9 = dav5;
int lastdav10 = dav4;
int lastdav11 = dav5;
int lastdav12 = dav6;
int lastdav13 = dav7;
int lastdav14 = dav6;
int lastdav15 = dav7;
int lastdav16 = dav8;
int lastdav17 = dav9;
int lastdav18 = dav8;
int lastdav19 = dav9;
int lastdav20 = dav10;
int lastdav21 = dav11;
int lastdav22 = dav10;
int lastdav23 = dav11;
int lastdav24 = dav12;
int lastdav25 = dav13;
int lastdav26 = dav12;
int lastdav27 = dav13;

int porog1 = 18;   //ustavka pervogo poroga dlja lneinoi zashiti (skorost' izmenenija)
int porog2 = 120;  //ustavka vtorogo poroga dlja lneinoi zashiti  (skorost' izmenenija)
int porog3 = 1022;

const int MNA1 = 52;     // Knopka stop MNA1
const int MNA1ON = 34;   // Indekacija MNA1 ON
const int MNA1OFF = 35;  // Indekacija MNA1 OFF

const int MNA2 = 53;
const int MNA2ON = 36;
const int MNA2OFF = 37;

const int MNA3 = 50;
const int MNA3ON = 38;
const int MNA3OFF = 39;

const int MNA4 = 51;
const int MNA4ON = 40;
const int MNA4OFF = 41;

const int STOPMN = 42;   // Indekacija STOP Nefteprovod
const int STOPNPS = 49;  // Knopka STOP NPS
const int RESET = 47;  // Knopka STOP RESET

int buttonState  = 0;
int buttonState1 = 0;    //deklaraciaja
int buttonState2 = 0;
int buttonState3 = 0;
int buttonState4 = 0;
int buttonState5 = 0;
int pin1on = 0;
int pin2on = 0;
int pin3on = 0;
int pin4on = 0;

boolean lastSTOPNPS = LOW;
boolean lastMNA1OFF = false;
boolean lastMNA2OFF = false;
boolean lastMNA3OFF = false;
boolean lastMNA4OFF = false;
boolean lastSTOPMN = false;

int TZ1 = 14;            //davlenie do tranzitnogo klapana
int TZ2 = 15;            //davlenie posle tranzintogo klapana

long interval = 1000;    //vremja prohogdenija komandi na lineinoi chasti
long interval2 = 15000;  //ustavka vremeni na otkritie tranzitnogo klapana
long interval3 = 500;
long interval4 = 333;

long time = 0;   //deklaracija
long time1 = 0;
long time2 = 0;
long time3 = 0;
long time4 = 0;
long time5 = 0;
long time6 = 0;
long time7 = 0;
long time8 = 0;
long time9 = 0;
long time10 = 0;
long time11 = 0;
long time12 = 0;
long time13 = 0;
long time14 = 0;
long time15 = 0;
long time16 = 0;
long time17 = 0;

void setup()
{
  Serial.begin(9600);
  Ethernet.begin(mac, ip); 
  pinMode (ledp1, OUTPUT); //prisvoenie diskretnim vihodam, znachenie vihod
  pinMode (ledp2, OUTPUT);
  pinMode (ledp3, OUTPUT);
  pinMode (ledp4, OUTPUT);
  pinMode (ledp5, OUTPUT);
  pinMode (ledp6, OUTPUT);
  pinMode (ledp7, OUTPUT);
  pinMode (ledp8, OUTPUT);
  pinMode (ledp9, OUTPUT);
  pinMode (ledp10, OUTPUT);
  pinMode (ledp11, OUTPUT);
  pinMode (ledp12, OUTPUT);
  pinMode (ledp13, OUTPUT);
  pinMode (ledp14, OUTPUT);
 
   pinMode(MNA1ON, OUTPUT);
   pinMode(MNA1OFF, OUTPUT);    
   //pinMode(MNA1, INPUT); 

   pinMode(MNA2ON, OUTPUT);
   pinMode(MNA2OFF, OUTPUT);    
   //pinMode(MNA2, INPUT);
   
   pinMode(MNA3ON, OUTPUT);
   pinMode(MNA3OFF, OUTPUT);    
   //pinMode(MNA3, INPUT);
   
   pinMode(MNA4ON, OUTPUT);
   pinMode(MNA4OFF, OUTPUT);    
   //pinMode(MNA4, INPUT);
   
   pinMode(STOPMN, OUTPUT);
   pinMode(STOPNPS, INPUT);
}

void loop()
{
digitalWrite(MNA1ON, HIGH);
digitalWrite(MNA2ON, HIGH);
digitalWrite(MNA3ON, HIGH);
digitalWrite(MNA4ON, HIGH);

  
if(MNA1OFF == HIGH)
{
  digitalWrite(MNA1ON, LOW);
}

if(MNA2OFF == HIGH)
{
  digitalWrite(MNA2ON, LOW);
}

if(MNA3OFF == HIGH)
{
  digitalWrite(MNA3ON, LOW);
}

if(MNA4OFF == HIGH)
{
  digitalWrite(MNA4ON, LOW);
}
  
///////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////Lineinaja zashita//////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////
 
 buttonState = digitalRead(RESET);
    
//algoritm dlja zadvigki №1
int dav0val = analogRead(dav0); //schitivanie davlenija do zadvigki
int dav1val = analogRead(dav1); // schitivanie davlenija posle zadvigki
//uslovie otrabotki pervogo poroga
if(dav0val - lastdav0 > porog1 && lastdav1 - dav1val > porog1)
{
  digitalWrite(ledp1, HIGH); //indekacija otrabotki pervogo poroga
 }
//vremja prohogdenija komandi dlja pervogo poroga
if((millis() - time1) > interval)
{
 //uslovie snjatija flaga pervogo poroga
if((dav0val - lastdav0 < porog1) || (lastdav1 - dav1val < porog1) || buttonState == HIGH)
{
digitalWrite(ledp1, LOW); 
  lastdav0 = dav0val; //prisvoenie predidushemu znacheniu, deistvuushee znachenie davlenija
  lastdav1 = dav1val;
  time1=millis();
}
}
//uslovie otrabotki vtorogo poroga
if(dav0val - lastdav0 > porog2 && lastdav1 - dav1val > porog2)
{
  digitalWrite(ledp1, LOW);
  digitalWrite(ledp2, HIGH);
  digitalWrite(MNA1ON, LOW);
  digitalWrite(MNA1OFF, HIGH);
  digitalWrite(MNA2ON, LOW);  
  digitalWrite(MNA2OFF, HIGH);
  digitalWrite(MNA3ON, LOW);
  digitalWrite(MNA3OFF, HIGH);
  digitalWrite(MNA4ON, LOW);
  digitalWrite(MNA4OFF, HIGH);
  digitalWrite(STOPMN, HIGH);
}
//vremja prohogdenija komandi dlja vtorogo poroga
if((millis() - time2) > interval)
{
 //uslovie snjatija flaga vtorogo poroga
 if(dav0val - lastdav2 > porog3 || buttonState == HIGH);
{
digitalWrite(ledp2, LOW);
digitalWrite(MNA1OFF, LOW);
digitalWrite(MNA2OFF, LOW);
digitalWrite(MNA3OFF, LOW);
digitalWrite(MNA4OFF, LOW);
digitalWrite(STOPMN, LOW);
  lastdav2 = dav0val; //prisvoenie predidushemu znacheniu, deistvuushee znachenie davlenija
  lastdav3 = dav1val;
  time2=millis();
}
}

//algoritm dlja zadvigki №2
int dav2val = analogRead(dav2); //schitivanie davlenija do zadvigki
int dav3val = analogRead(dav3); // schitivanie davlenija posle zadvigki
//uslovie otrabotki pervogo poroga
if(dav2val - lastdav4 > porog1 && lastdav5 - dav3val > porog1)
{
  digitalWrite(ledp3, HIGH); //indekacija otrabotki pervogo poroga
 }
//vremja prohogdenija komandi dlja pervogo poroga
if((millis() - time3) > interval)
{
 //uslovie snjatija flaga pervogo poroga
 if((dav2val - lastdav4 < porog1) || (lastdav5 - dav3val < porog1) || buttonState == HIGH)
{
digitalWrite(ledp3, LOW); 
  lastdav4 = dav2val; //prisvoenie predidushemu znacheniu, deistvuushee znachenie davlenija
  lastdav5 = dav3val;
  time3=millis();
}
}
//uslovie otrabotki vtorogo poroga
if(dav2val - lastdav4 > porog2 && lastdav5 - dav3val > porog2)
{
  digitalWrite(ledp3, LOW);
  digitalWrite(ledp4, HIGH);
  digitalWrite(MNA1ON, LOW);
  digitalWrite(MNA1OFF, HIGH);
  digitalWrite(MNA2ON, LOW);  
  digitalWrite(MNA2OFF, HIGH);
  digitalWrite(MNA3ON, LOW);
  digitalWrite(MNA3OFF, HIGH);
  digitalWrite(MNA4ON, LOW);
  digitalWrite(MNA4OFF, HIGH);
  digitalWrite(STOPMN, HIGH);
}
//vremja prohogdenija komandi dlja vtorogo poroga
if((millis() - time4) > interval)
{
 //uslovie snjatija flaga vtorogo poroga
 if(dav2val - lastdav6 > porog3 || buttonState == HIGH);
{
digitalWrite(ledp4, LOW);
digitalWrite(MNA1OFF, LOW);
digitalWrite(MNA2OFF, LOW);
digitalWrite(MNA3OFF, LOW);
digitalWrite(MNA4OFF, LOW);
digitalWrite(STOPMN, LOW);
  lastdav6 = dav2val; //prisvoenie predidushemu znacheniu, deistvuushee znachenie davlenija
  lastdav7 = dav3val;
  time4=millis();
}
}
//algoritm dlja zadvigki №3
int dav4val = analogRead(dav4); //schitivanie davlenija do zadvigki
int dav5val = analogRead(dav5); // schitivanie davlenija posle zadvigki
//uslovie otrabotki pervogo poroga
if(dav4val - lastdav8 > porog1 && lastdav9 - dav5val > porog1)
{
  digitalWrite(ledp5, HIGH); //indekacija otrabotki pervogo poroga
 }
//vremja prohogdenija komandi dlja pervogo poroga
if((millis() - time5) > interval)
{
 //uslovie snjatija flaga pervogo poroga
 if((dav4val - lastdav8 < porog1) || (lastdav9 - dav5val < porog1) || buttonState == HIGH)
{
digitalWrite(ledp5, LOW); 
  lastdav8 = dav4val; //prisvoenie predidushemu znacheniu, deistvuushee znachenie davlenija
  lastdav9 = dav5val;
  time5=millis();
}
}
//uslovie otrabotki vtorogo poroga
if(dav4val - lastdav8 > porog2 && lastdav9 - dav5val > porog2)
{
  digitalWrite(ledp5, LOW);
  digitalWrite(ledp6, HIGH);
 digitalWrite(MNA1ON, LOW);
  digitalWrite(MNA1OFF, HIGH);
  digitalWrite(MNA2ON, LOW);  
  digitalWrite(MNA2OFF, HIGH);
  digitalWrite(MNA3ON, LOW);
  digitalWrite(MNA3OFF, HIGH);
  digitalWrite(MNA4ON, LOW);
  digitalWrite(MNA4OFF, HIGH);
  digitalWrite(STOPMN, HIGH);
}
//vremja prohogdenija komandi dlja vtorogo poroga
if((millis() - time6) > interval)
{
 //uslovie snjatija flaga vtorogo poroga
 if(dav4val - lastdav10 < porog3 || buttonState == HIGH);
{
digitalWrite(ledp6, LOW);
digitalWrite(MNA1OFF, LOW);
digitalWrite(MNA2OFF, LOW);
digitalWrite(MNA3OFF, LOW);
digitalWrite(MNA4OFF, LOW);
digitalWrite(STOPMN, LOW);
  lastdav10 = dav4val; //prisvoenie predidushemu znacheniu, deistvuushee znachenie davlenija
  lastdav11 = dav5val;
  time6=millis();
}
}

//algoritm dlja zadvigki №4
int dav6val = analogRead(dav6); //schitivanie davlenija do zadvigki
int dav7val = analogRead(dav7); // schitivanie davlenija posle zadvigki
//uslovie otrabotki pervogo poroga
if(dav6val - lastdav12 > porog1 && lastdav13 - dav7val > porog1)
{
  digitalWrite(ledp7, HIGH); //indekacija otrabotki pervogo poroga
 }
//vremja prohogdenija komandi dlja pervogo poroga
if((millis() - time7) > interval)
{
 //uslovie snjatija flaga pervogo poroga
 if((dav6val - lastdav12 < porog1) || (lastdav13 - dav7val < porog1) || buttonState == HIGH)
{
digitalWrite(ledp7, LOW); 
  lastdav12 = dav6val; //prisvoenie predidushemu znacheniu, deistvuushee znachenie davlenija
  lastdav13 = dav7val;
  time7=millis();
}
}
//uslovie otrabotki vtorogo poroga
if(dav6val - lastdav12 > porog2 && lastdav13 - dav7val > porog2)
{
  digitalWrite(ledp7, LOW);
  digitalWrite(ledp8, HIGH);
  digitalWrite(MNA1ON, LOW);
  digitalWrite(MNA1OFF, HIGH);
  digitalWrite(MNA2ON, LOW);  
  digitalWrite(MNA2OFF, HIGH);
  digitalWrite(MNA3ON, LOW);
  digitalWrite(MNA3OFF, HIGH);
  digitalWrite(MNA4ON, LOW);
  digitalWrite(MNA4OFF, HIGH);
  digitalWrite(STOPMN, HIGH);
}
//vremja prohogdenija komandi dlja vtorogo poroga
if((millis() - time8) > interval)
{
 //uslovie snjatija flaga vtorogo poroga
 if(dav6val - lastdav14 < porog3 || buttonState == HIGH);
{
digitalWrite(ledp8, LOW);
digitalWrite(MNA1OFF, LOW);
digitalWrite(MNA2OFF, LOW);
digitalWrite(MNA3OFF, LOW);
digitalWrite(MNA4OFF, LOW);
digitalWrite(STOPMN, LOW);
  lastdav14 = dav6val; //prisvoenie predidushemu znacheniu, deistvuushee znachenie davlenija
  lastdav15 = dav7val;
  time8=millis();
}
}

//algoritm dlja zadvigki №5
int dav8val = analogRead(dav8); //schitivanie davlenija do zadvigki
int dav9val = analogRead(dav9); // schitivanie davlenija posle zadvigki
//uslovie otrabotki pervogo poroga
if(dav8val - lastdav16 > porog1 && lastdav17 - dav9val > porog1)
{
  digitalWrite(ledp9, HIGH); //indekacija otrabotki pervogo poroga
 }
//vremja prohogdenija komandi dlja pervogo poroga
if((millis() - time9) > interval)
{
 //uslovie snjatija flaga pervogo poroga
 if((dav8val - lastdav16 < porog1) || (lastdav17 - dav9val < porog1) || buttonState == HIGH)
{
digitalWrite(ledp9, LOW); 
  lastdav16 = dav8val; //prisvoenie predidushemu znacheniu, deistvuushee znachenie davlenija
  lastdav17 = dav9val;
  time9=millis();
}
}
//uslovie otrabotki vtorogo poroga
if(dav8val - lastdav16 > porog2 && lastdav17 - dav9val > porog2)
{
  digitalWrite(ledp9, LOW);
  digitalWrite(ledp10, HIGH);
  digitalWrite(MNA1ON, LOW);
  digitalWrite(MNA1OFF, HIGH);
  digitalWrite(MNA2ON, LOW);  
  digitalWrite(MNA2OFF, HIGH);
  digitalWrite(MNA3ON, LOW);
  digitalWrite(MNA3OFF, HIGH);
  digitalWrite(MNA4ON, LOW);
  digitalWrite(MNA4OFF, HIGH);
  digitalWrite(STOPMN, HIGH);
}
//vremja prohogdenija komandi dlja vtorogo poroga
if((millis() - time10) > interval)
{
 //uslovie snjatija flaga vtorogo poroga
 if(dav8val - lastdav18 < porog3 || buttonState == HIGH);
{
digitalWrite(ledp10, LOW);
digitalWrite(MNA1OFF, LOW);
digitalWrite(MNA2OFF, LOW);
digitalWrite(MNA3OFF, LOW);
digitalWrite(MNA4OFF, LOW);
digitalWrite(STOPMN, LOW);
  lastdav18 = dav8val; //prisvoenie predidushemu znacheniu, deistvuushee znachenie davlenija
  lastdav19 = dav9val;
  time10=millis();
}
}

//algoritm dlja zadvigki №6
int dav10val = analogRead(dav10); //schitivanie davlenija do zadvigki
int dav11val = analogRead(dav11); // schitivanie davlenija posle zadvigki
//uslovie otrabotki pervogo poroga
if(dav10val - lastdav20 > porog1 && lastdav21 - dav11val > porog1)
{
  digitalWrite(ledp11, HIGH); //indekacija otrabotki pervogo poroga
 }
//vremja prohogdenija komandi dlja pervogo poroga
if((millis() - time11) > interval)
{
 //uslovie snjatija flaga pervogo poroga
 if((dav10val - lastdav20 < porog1) || (lastdav21 - dav11val < porog1) || buttonState == HIGH)
{
digitalWrite(ledp11, LOW); 
  lastdav20 = dav10val; //prisvoenie predidushemu znacheniu, deistvuushee znachenie davlenija
  lastdav21 = dav11val;
  time11=millis();
}
}
//uslovie otrabotki vtorogo poroga
if(dav10val - lastdav20 > porog2 && lastdav21 - dav11val > porog2)
{
  digitalWrite(ledp11, LOW);
  digitalWrite(ledp12, HIGH);
  digitalWrite(MNA1ON, LOW);
  digitalWrite(MNA1OFF, HIGH);
  digitalWrite(MNA2ON, LOW);  
  digitalWrite(MNA2OFF, HIGH);
  digitalWrite(MNA3ON, LOW);
  digitalWrite(MNA3OFF, HIGH);
  digitalWrite(MNA4ON, LOW);
  digitalWrite(MNA4OFF, HIGH);
  digitalWrite(STOPMN, HIGH);
}
//vremja prohogdenija komandi dlja vtorogo poroga
if((millis() - time12) > interval)
{
 //uslovie snjatija flaga vtorogo poroga
 if(dav10val - lastdav22 < porog3 || buttonState == HIGH);
{
digitalWrite(ledp12, LOW);
digitalWrite(MNA1OFF, LOW);
digitalWrite(MNA2OFF, LOW);
digitalWrite(MNA3OFF, LOW);
digitalWrite(MNA4OFF, LOW);
digitalWrite(STOPMN, LOW);
  lastdav22 = dav10val; //prisvoenie predidushemu znacheniu, deistvuushee znachenie davlenija
  lastdav23 = dav11val;
  time12=millis();
}
}

//algoritm dlja zadvigki №7
int dav12val = analogRead(dav12); //schitivanie davlenija do zadvigki
int dav13val = analogRead(dav13); // schitivanie davlenija posle zadvigki
//uslovie otrabotki pervogo poroga
if(dav12val - lastdav24 > porog1 && lastdav25 - dav13val > porog1)
{
  digitalWrite(ledp13, HIGH); //indekacija otrabotki pervogo poroga
 }
//vremja prohogdenija komandi dlja pervogo poroga
if((millis() - time13) > interval)
{
 //uslovie snjatija flaga pervogo poroga
if((dav12val - lastdav24 < porog1) || (lastdav25 - dav13val < porog1) || buttonState == HIGH)
{
digitalWrite(ledp13, LOW); 
  lastdav24 = dav12val; //prisvoenie predidushemu znacheniu, deistvuushee znachenie davlenija
  lastdav25 = dav13val;
  time13=millis();
}
}
//uslovie otrabotki vtorogo poroga
if(dav12val - lastdav24 > porog2 && lastdav25 - dav13val > porog2)
{
  digitalWrite(ledp13, LOW);
  digitalWrite(ledp14, HIGH);
  digitalWrite(MNA1ON, LOW);
  digitalWrite(MNA1OFF, HIGH);
  digitalWrite(MNA2ON, LOW);  
  digitalWrite(MNA2OFF, HIGH);
  digitalWrite(MNA3ON, LOW);
  digitalWrite(MNA3OFF, HIGH);
  digitalWrite(MNA4ON, LOW);
  digitalWrite(MNA4OFF, HIGH);
  digitalWrite(STOPMN, HIGH);
}
//vremja prohogdenija komandi dlja vtorogo poroga
if((millis() - time14) > interval)
{
 //uslovie snjatija flaga vtorogo poroga
 if(dav12val - lastdav26 < porog3 || buttonState == HIGH);
{
digitalWrite(ledp14, LOW);
digitalWrite(MNA1OFF, LOW);
digitalWrite(MNA2OFF, LOW);
digitalWrite(MNA3OFF, LOW);
digitalWrite(MNA4OFF, LOW);
digitalWrite(STOPMN, LOW);
  lastdav26 = dav12val; //prisvoenie predidushemu znacheniu, deistvuushee znachenie davlenija
  lastdav27 = dav13val;
  time14=millis();
}
}


/////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////Stancionnaja zashita/////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////
//buttonState1 = digitalRead(MNA1); //schitivanie znachenija knopki STOP MNA1
   buttonState2 = digitalRead(MNA2); 
   //buttonState3 = digitalRead(MNA3); 
   //buttonState4 = digitalRead(MNA4); 
   buttonState5 = digitalRead(STOPNPS); //schitivanie znachenija knopki STOP MNA2  
   pin1on = digitalRead(MNA1OFF);
   pin2on = digitalRead(MNA2OFF);
   pin3on = digitalRead(MNA3OFF);
   pin4on = digitalRead(MNA4OFF);
    
    //otslegivanie sostojanija MNA1
   if (buttonState1 == HIGH) 
  {     
    digitalWrite(MNA1OFF, HIGH);
  } 
   
  //otslegivanie sostojanija MNA2
   if (buttonState2 == HIGH) 
  {     
    digitalWrite(MNA2OFF, HIGH); 
  } 
  
  //otslegivanie sostojanija MNA3
   if (buttonState3 == HIGH) 
  {     
    digitalWrite(MNA3OFF, HIGH);
  } 
  
  //otslegivanie sostojanija MNA4
   if (buttonState4 == HIGH) 
  {     
    digitalWrite(MNA4OFF, HIGH);  
  } 
  
  //otslegivanie sostojanija STOPNPS
  if (buttonState5 == HIGH) 
  {     
    digitalWrite(MNA1OFF, HIGH);  
    digitalWrite(MNA2OFF, HIGH);
    digitalWrite(MNA3OFF, HIGH);
    digitalWrite(MNA4OFF, HIGH);
  } 
          
  int valTZ1 = analogRead(TZ1);
  int valTZ2 = analogRead(TZ2);
 
 //zalipanie knopki STOPNPS
 if (buttonState5 == HIGH && lastSTOPNPS ==LOW)
  {
   lastMNA1OFF = !lastMNA1OFF;
   lastMNA2OFF = !lastMNA2OFF;
   lastMNA3OFF = !lastMNA3OFF;
   lastMNA4OFF = !lastMNA4OFF;
   lastSTOPNPS = HIGH;
  }
  else
  {
    lastSTOPNPS = buttonState5;
  }
  digitalWrite(MNA1OFF, lastMNA1OFF);
  digitalWrite(MNA2OFF, lastMNA2OFF);
  digitalWrite(MNA3OFF, lastMNA3OFF);
  digitalWrite(MNA4OFF, lastMNA4OFF);
  
  //uslovija otrabotki zashiti
 if (pin1on == HIGH && pin2on == HIGH && pin3on == HIGH && pin4on == HIGH)
  {
    if((millis() - time) > interval2)
      {
        if(valTZ1 - valTZ2 > 100)
        {
       digitalWrite(STOPMN, HIGH);
        }
      }
   }
     
   else if ((valTZ1 - valTZ2 > porog3) || buttonState == HIGH)
  {
    digitalWrite(STOPMN, LOW);
    time=millis();
  }
/////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////Otpravka na PHP server///////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////
 
  int P1val = map(dav0val, 0, 1023, 0, 60);
  int P2val = map(dav1val, 0, 1023, 0, 60);
  if((millis() - time16) > interval)
    {
    String msg = "GET /test2/index.php/main/save/" + String(P1val) + "/" + String(P2val);
    client.connect(server, 80);
    client.println(msg);
    time16=millis();
    }
    if((millis() - time17) > interval)
    {
    client.stop();
    Serial.print(P1val);
    time17=millis();
    }
}

Как говорится... дело было не в бабине.... да****б сидел в кабине.. ;)

зашел на сайт почитал про шилд и понял, что в случае взаимодействия с МЕГОй ему нужны для общения пины с 50 по 53... а они в моем проекте были задействованы и им присваивалось значение вход.. 

строки 171,175,179,183.... как только их закоментил... все ожило.....

вообщем вот такая байка..) дело может быть не только в коде. ;)

Lipt0n
Offline
Зарегистрирован: 04.11.2013

Это хорошо что всё решилось.

Но все же обратите внимания на код. В нём почти 18 одинаковых проверок на прошествие 1000мс(interval ).

Rash923
Offline
Зарегистрирован: 17.12.2011

не совсем понимаю?:)

они в каждом алгоритме начинают отсчитывать свое время и сохраняются в разные значения...

если не сложно, то обьясните плз в чем именно косяк?;)

буду благодарен)

Lipt0n
Offline
Зарегистрирован: 04.11.2013
loop()
{
if((millis() - time1) > interval)
{
все действия, которые выполняются после истечения interval времени
time1=millis();
};

if((millis() - time2) > interval2)
{
все действия, которые выполняются после истечения interval2 времени
time2=millis();
};

if((millis() - time3) > interval3)
{
все действия, которые выполняются после истечения interval3 времени
time3=millis();
};

Ваш остальной код
}

То есть переменных time должно быть столько же, сколько и переменных interval

Rash923
Offline
Зарегистрирован: 17.12.2011

А если у меня везде требурется задержка в 1 секунду.... Помоему проще плясать от одного интервала, чем городить кучу. Может я конечно чего то не понмаю, но если твоий пример применить ко мне в проект, то получается, что интервал1= интервал2=интервал3.....

 

Lipt0n
Offline
Зарегистрирован: 04.11.2013

Rash923 пишет:

А если у меня везде требурется задержка в 1 секунду.... Помоему проще плясать от одного интервала, чем городить кучу.

"переменных time должно быть столько же, сколько и переменных interval." Из этого следует что переменная interval будет только одна соответственно как и переменная time.

Rash923 пишет:

Помоему проще плясать от одного интервала, чем городить кучу...

но если твоий пример применить ко мне в проект, то получается, что интервал1= интервал2=интервал3.....

126 long interval = 1000;    //vremja prohogdenija komandi na lineinoi chasti
127 long interval2 = 15000;  //ustavka vremeni na otkritie tranzitnogo klapana
128 long interval3 = 500;

 

129 long interval4 = 333;

Я отталкивался от кода.

Rash923
Offline
Зарегистрирован: 17.12.2011

interval3 и interval 4  это были эксперементальными промежутками) они потом будут использоваться при отсылке пакетов на php...

если посмотреть на код для каждой задвижки...  то получаается что алгоритм для каждой задвижки не зависим от time остальных задвижек, а задержка в алгоритмах для всех  одна равная interval = 1000.....

Lipt0n
Offline
Зарегистрирован: 04.11.2013

Rash923 пишет:

interval3 и interval 4  это были эксперементальными промежутками) они потом будут использоваться при отсылке пакетов на php...

если посмотреть на код для каждой задвижки...  то получаается что алгоритм для каждой задвижки не зависим от time остальных задвижек, а задержка в алгоритмах для всех  одна равная interval = 1000.....

Зачем time для каждой задвижки, если у всеж один интервал?

Rash923
Offline
Зарегистрирован: 17.12.2011

просто если алгоритм отработает для одной задвижки, то алгоритм для второй задвижки уже будет зависить от первой, поэтому я после прошествия алгоритма для каждой задвижки  перезаписываю time. 

Если делать как ты говоришь, получается тот же delay... 

9ser
Offline
Зарегистрирован: 18.11.2012

я тоже маялся с отправкой данных и победил следующим образом:

1. проверь адрес  в настойках LAN компьютора. дожно быть 192.168.0.xxx и не как иначе(первые 3 значеия везде должны быть одинаковы!!!

2. Добавь адрес сервера куда  будешь отсылать данные. обративнимание на  192.168.0.ххх

IPAddress rserver(192,168,0,250);

Char buffer[80] - это максималльное количество символов, которое сможешь отавить

вот кусочек 100% рабочего кода

//-------> отправка температуры T1 (Server) <----------
void send_temp_T1_S(){
   char buffer[80];
   sensors.requestTemperatures();
     if(sensors.getAddress(Termometers, 1))
       {
       float tempC = sensors.getTempC(Termometers);
       int temp1 = (tempC - (int)tempC) * 100;
       EthernetClient client;
       
          client.connect(rserver, 80);
          sprintf(buffer, "GET /objects/?object=TempSensor1&op=m&m=tempChanged&t=%0d.%d HTTP/1.0", (int)tempC, abs(temp1));
          client.println(buffer);
          client.println();
          Serial.print("T1(S) : ");
          Serial.println(tempC);
          
          
       }
       client.stop();
}

просто у меня немного другой формат и все.

должно работать!

я проверял так:

писал в браузере в графе адрес: /objects/?object=TempSensor1&op=m&m=tempChanged&t=25

и сервер принимал значение 25. Если у тебя тест сработает, значит  код будет работать

Rash923
Offline
Зарегистрирован: 17.12.2011

дак я уже отписался, что у меня все работает))  Но все равно спасибо за совет;)