доброго времени суток прошу, подсказать, может, кто сталкивался пишу данные с температурного датчика в mysql (локально), но проходит время, всегда по разному и данные перестают записываться в БД с чем это может быть связано, где посмотреть ? заранее спасибо за ваш ответ
лог что пишу в БД, вывод в браузер дата - время - IP с которого пишем данные - сами данные температуры задержка по отсылке данных в скетче стоит 10 сек
#include <UIPEthernet.h> #include <SPI.h> #include <math.h> #define TERMIST_B 4300 #define VIN 5.0 byte mac[] = {0xAE, 0xB2, 0x26, 0xE4, 0x4A, 0x5C}; byte ip[] = { 192, 168, 1, 30 }; //IP адрес сервера который будет собирать статистику byte server[] = { 192, 168, 1, 6 }; EthernetClient client; void setup() { Ethernet.begin(mac, ip); //Serial.begin(9600); } void loop() { float voltage0 = analogRead(A0) * VIN / 1023.0; float voltage1 = analogRead(A1) * VIN / 1023.0; float r0 = voltage0 / (VIN - voltage0); float r1 = voltage1 / (VIN - voltage1); float t1 = 1./( 1./(TERMIST_B)*log(r0)+1./(25. + 273.) ) - 273; float t2 = 1./( 1./(TERMIST_B)*log(r1)+1./(25. + 273.) ) - 273; String msg = "GET /test.php?t1="+ String(t1) + "&t2="+String(t2); // Для отладки включим отправку данных в COM порт //Serial.println(msg); // Если это не требуется, то можно закомментировать client.connect(server, 80); client.println(msg); //Ждем 2 сек. delay (2000); //потом отключаемся client.stop(); //Данные будут отправляться каждые 10 сек delay (8000); }
Вот это вообще красиво: и далее: А что не требуется? Что можно закомментировать? А можно не комментировать вообще? Файл меньше места будет занимать. Это не код - это помойка...
я не профи, а только учусь, исправлюсь критику принимаю нормально тогда ваш ответ можно расценивать так, что если убрать комментированные строки, то все будет работать ?
#include <UIPEthernet.h> #include <SPI.h> #include <math.h> #define TERMIST_B 4300 #define VIN 5.0 byte mac[] = {0xAE, 0xB2, 0x26, 0xE4, 0x4A, 0x5C}; byte ip[] = { 192, 168, 1, 30 }; byte server[] = { 192, 168, 1, 6 }; EthernetClient client; void setup() { Ethernet.begin(mac, ip); } void loop() { float voltage0 = analogRead(A0) * VIN / 1023.0; float voltage1 = analogRead(A1) * VIN / 1023.0; float r0 = voltage0 / (VIN - voltage0); float r1 = voltage1 / (VIN - voltage1); float t1 = 1./( 1./(TERMIST_B)*log(r0)+1./(25. + 273.) ) - 273; float t2 = 1./( 1./(TERMIST_B)*log(r1)+1./(25. + 273.) ) - 273; String msg = "GET /test.php?t1="+ String(t1) + "&t2="+String(t2); client.connect(server, 80); client.println(msg); client.stop(); client.flush(); delay (10000); }
комментарии пишутся для себя в первую очередь. Зачем писать комментарии, которые не отражают суть алгоритма? Зачем писать комментарии, которые отражают очевидные вещи?
расскажи сперва, что какая строчка кода делает, как это делаю я в своих постах. Потом покумекаем, где ошибка.
нет, так очевидно будет хуже. Вы будете долбить бедный сервер запросами каждый цикл loop() . Вообще, главная роблема этого кода - полное отсутсвие проверок на ошибки. Например. что произойдет с этим кодом, если коннект к серверу не удастся? Так надежные программы не пишут. Это может сработать десять или сто раз. но в конечном счете эта программа наверняка зависнет - что мы и видим в ващем случае.
вообще то, стену неотформатированного кода мало кто читает. Таких людей, которые первый раз пользуются форумом очень много, поэтому картинка в самый раз. Отформатировать - это проявление уважения к собеседникам, если его нет, то вероятность получения корректного ответа стремится к нулю.
Форматирование кода (вернее, выработка собственного стиля форматирования) - это первое, с чего надо начинать кодерство. Это как эскиз картины, ее основа. Не аккуратно написанный код так же и работать будет.
Типа так. Код (C++): #include <UIPEthernet.h> #include <SPI.h> #include <math.h> #define TERMIST_B 4300 #define VIN 5.0 byte mac[] = {0xAE, 0xB2, 0x26, 0xE4, 0x4A, 0x5C}; byte ip[] = { 192, 168, 1, 30 }; byte server[] = { 192, 168, 1, 6 }; EthernetClient client; void setup() { Ethernet.begin(mac, ip); } void loop() { float voltage0 = analogRead(A0) * VIN / 1023.0; float voltage1 = analogRead(A1) * VIN / 1023.0; float r0 = voltage0 / (VIN - voltage0); float r1 = voltage1 / (VIN - voltage1); float t1 = 1./( 1./(TERMIST_B)*log(r0)+1./(25. + 273.) ) - 273; float t2 = 1./( 1./(TERMIST_B)*log(r1)+1./(25. + 273.) ) - 273; String msg = "GET /test.php?t1="+ String(t1) + "&t2="+String(t2); client.connect(server, 80); client.println(msg); client.stop(); client.flush(); delay (10000); }
Табуляции не хватает, чтобы блоки выделялись (очень хорошо помогает при проверке правильности расстановки скобок).
Код (C++): ... VIN / 1023.0 ... ... 1./(TERMIST_B) ... 1./(25. + 273.) Хорошо бы еще не вычислять каждый раз такие выражения, а подставить заранее посчитанные значения. Т. к. все их операнды - константы.