Формирование запроса
- Войдите на сайт для отправки комментариев
Пт, 29/11/2013 - 23:54
Доброго всем времени суток.
Нужен Ваш совет;)
Нужно получить показания с аналогового входа ардуины на 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);
}
}
//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();Попробуйте так.
неа не прошло(
В логах апача что-то светит?
Если активность есть - поменяйте строку
client.println("Host: http:\//192.168.0.20");наclient.println("Host: 192.168.0.20");вообщем вот так все заработало ;)
#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); }#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); } }все работает нормально если вывести в комментарий строчку соединения с сервером, а без нее ни как... в чем может быть причина?
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) и будет код дергаться каждые полсекунды.
я пробывал уже вставлять из примера 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 мс чтобы дать время ардуине подключиться и отослать месадж и получалось что ардуина отправляла сообщение раз в секунду.
пардон.. последний пост не считать актуальным... апппач почемуто был выключен :D
сейчас протестю и отпишусь)
пардон.. последний пост не считать актуальным... апппач почемуто был выключен :D
сейчас протестю и отпишусь)
Я как бы не раз указывал Вам на то что следует обратить внимание на логи апача...
да нет дело в том что апач до этого работал... но все равно небыло реакции... это потом когда я на обед пошел я все выключил...
но не в этом суть...) факт в том, что не работало всеравно с моими алгоритмами..)
НО!!!! я все таки разгодал эту загадку))
#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.... как только их закоментил... все ожило.....
вообщем вот такая байка..) дело может быть не только в коде. ;)
Это хорошо что всё решилось.
Но все же обратите внимания на код. В нём почти 18 одинаковых проверок на прошествие 1000мс(interval ).
не совсем понимаю?:)
они в каждом алгоритме начинают отсчитывать свое время и сохраняются в разные значения...
если не сложно, то обьясните плз в чем именно косяк?;)
буду благодарен)
loop() { if((millis() - time1) > interval) { все действия, которые выполняются после истечения interval времени time1=millis(); }; if((millis() - time2) > interval2) { все действия, которые выполняются после истечения interval2 времени time2=millis(); }; if((millis() - time3) > interval3) { все действия, которые выполняются после истечения interval3 времени time3=millis(); }; Ваш остальной код }То есть переменных time должно быть столько же, сколько и переменных interval
А если у меня везде требурется задержка в 1 секунду.... Помоему проще плясать от одного интервала, чем городить кучу. Может я конечно чего то не понмаю, но если твоий пример применить ко мне в проект, то получается, что интервал1= интервал2=интервал3.....
А если у меня везде требурется задержка в 1 секунду.... Помоему проще плясать от одного интервала, чем городить кучу.
"переменных time должно быть столько же, сколько и переменных interval." Из этого следует что переменная interval будет только одна соответственно как и переменная time.
Помоему проще плясать от одного интервала, чем городить кучу...
но если твоий пример применить ко мне в проект, то получается, что интервал1= интервал2=интервал3.....
126longinterval = 1000;//vremja prohogdenija komandi na lineinoi chasti127longinterval2 = 15000;//ustavka vremeni na otkritie tranzitnogo klapana128longinterval3 = 500;129longinterval4 = 333;Я отталкивался от кода.
interval3 и interval 4 это были эксперементальными промежутками) они потом будут использоваться при отсылке пакетов на php...
если посмотреть на код для каждой задвижки... то получаается что алгоритм для каждой задвижки не зависим от time остальных задвижек, а задержка в алгоритмах для всех одна равная interval = 1000.....
interval3 и interval 4 это были эксперементальными промежутками) они потом будут использоваться при отсылке пакетов на php...
если посмотреть на код для каждой задвижки... то получаается что алгоритм для каждой задвижки не зависим от time остальных задвижек, а задержка в алгоритмах для всех одна равная interval = 1000.....
Зачем time для каждой задвижки, если у всеж один интервал?
просто если алгоритм отработает для одной задвижки, то алгоритм для второй задвижки уже будет зависить от первой, поэтому я после прошествия алгоритма для каждой задвижки перезаписываю time.
Если делать как ты говоришь, получается тот же delay...
я тоже маялся с отправкой данных и победил следующим образом:
1. проверь адрес в настойках LAN компьютора. дожно быть 192.168.0.xxx и не как иначе(первые 3 значеия везде должны быть одинаковы!!!
2. Добавь адрес сервера куда будешь отсылать данные. обративнимание на 192.168.0.ххх
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. Если у тебя тест сработает, значит код будет работать
дак я уже отписался, что у меня все работает)) Но все равно спасибо за совет;)