我想在LCD 16x2上顯示millis,但問題是在添加MySQL插入代碼後,計數器不會從零開始。實際上,有時在服務器連接4秒,40秒和79秒後開始連接。液晶顯示器上的Arduino Millis
我使用的Arduino類型是:「Arduino Uno」, 和Arduino IDE版本是1.6.7。
誰能幫我解決這個問題,這裏是代碼:
#include <Ethernet.h>
#include <LiquidCrystal.h>
#include <MySQL_Connection.h>
#include <MySQL_Cursor.h>
byte mac_addr[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
IPAddress server_addr(); // IP of the MySQL *server* here
char user[] = ""; // MySQL user login username
char password[] = ""; // MySQL user login password
EthernetClient client;
MySQL_Connection conn((Client *)&client);
LiquidCrystal lcd(2, 3, 4, 5, 6, 7);
void setup() {
// set up the LCD's number of columns and rows:
lcd.begin(16, 2);
// Print a message to the LCD.
lcd.print("Millis");
Serial.begin(115200);
while (!Serial); // wait for serial port to connect
Ethernet.begin(mac_addr);
Serial.println("Connecting...");
if (conn.connect(server_addr, 3306, user, password)) {
delay(1000);
}
else
Serial.println("Connection failed.");
}
void loop() {
unsigned long var =(millis()/1000);
if(var%40 == 0)
{
char INSERT_SQL[] = "UPDATE Information.total SET reading=(%d) WHERE
Name='Sam';";
char query[255];
sprintf(query, INSERT_SQL, var);
MySQL_Cursor *cur_mem = new MySQL_Cursor(&conn);
cur_mem->execute(query);
delete cur_mem;
}
lcd.setCursor(0, 1);
lcd.print(var);
}
而且,這裏是其他代碼,其中米利斯從零開始(插入MySQL的代碼插入前):
#include <LiquidCrystal.h>
LiquidCrystal lcd(2, 3, 4, 5, 6, 7);
void setup() {
lcd.begin(16, 2);
Serial.begin(9600);
lcd.print("Millis");
}
void loop() {
unsigned long var =(millis()/1000);
var = (var==0)?1:var;
if(var%40 == 0)
{
Serial.println("Millis: ");
Serial.println(var);
}
lcd.setCursor(0, 1);
lcd.print(millis()/1000);
delay(1000);
}
所有答案都讚賞...
您可以通過包含從零開始的代碼來編輯您的文章嗎? –
您是否試圖每40毫秒更新一次數據庫? –
你可以讓millis顯示,並且每次都從零開始,或者至少從你開始顯示後的時間開始? –