我有一个Java程序,它基于硬编码的命令运行。我想要一个接受字符串作为参数的命令然后使用下面的代码将该字符串转换为CPP文件(这对我来说完美无缺)。下面的cpp代码中有一个函数接受一个名为printToLCD(boolean, String);
的字符串,当编译并上传到我的arduino uno时,它将打印一个字符串并将其显示在我的16x2 lcd屏幕上。
我想使用我的Java程序能够在LCD屏幕上更改消息,但我想使用该功能。
我的程序能够连接到Arduino并读取它的串行输入但是我无法编译C代码并将其上传到Arduino。有没有人遇到任何人做类似的事情?有没有人遇到过类似的另一个项目?
有谁知道如何编译C代码然后将编译结果上传到arduino? 我已经看过Arduino IDE执行此类工作的方法,但我无法找到编译代码的位置。这只是我点击按钮然后结果存储在一个字符串中,然后字符串路径上传到arduino?
Arduino的C代码:
#include <Wire.h>
#include <LCD.h>
#include <LiquidCrystal_I2C.h>
#define I2C_ADDR 0x3F // <<----- Add your address here. Find it from I2C Scanner
#define BACKLIGHT_PIN 3
#define En_pin 2
#define Rw_pin 1
#define Rs_pin 0
#define D4_pin 4
#define D5_pin 5
#define D6_pin 6
#define D7_pin 7
int n = 1;
LiquidCrystal_I2C lcd(I2C_ADDR,En_pin,Rw_pin,Rs_pin,D4_pin,D5_pin,D6_pin,D7_pin);
void cls(){
lcd.setCursor(0,0);
lcd.print(" ");
lcd.setCursor(0,1);
lcd.print(" ");
lcd.setCursor(0,2);
lcd.print(" ");
}
void printToLCD(boolean setBacklight, char const textToPrint[]){
lcd.home();
lcd.setBacklightPin(BACKLIGHT_PIN,POSITIVE);
if(setBacklight){
lcd.setBacklight(HIGH);
}
else {
lcd.setBacklight(LOW);
}
int stringLength = strlen(textToPrint);
if(stringLength <= 16 && stringLength > 0){
lcd.setCursor(0,0);
lcd.print(textToPrint);
}
else if(stringLength >= 17 && stringLength <= 32){
char *key2 = (char*)malloc(16);
int o = 0;
for(int j = 0; j < (stringLength -16); j++){
key2[j] = textToPrint[j+16];
o = j;
}
for(int a = o; a < 17; a++){
key2[a+1] = ' ';
}
lcd.setCursor(0,0);
lcd.print(textToPrint);
lcd.setCursor(0,1);
lcd.print(key2);
}
else if(stringLength > 32){
lcd.setCursor(0,0);
lcd.print("Hey! You have to");
lcd.setCursor(0,1);
lcd.print("many characters!");
}
}
void setup()
{
lcd.begin (16,2); // <<----- My LCD was 16x2
// Switch on the backlight
lcd.setBacklightPin(BACKLIGHT_PIN,POSITIVE);
lcd.setBacklight(HIGH);
cls();
printToLCD(true,"All hail our lord Google.");
}
void loop(){
}