///////////////////////////////////////////////////////////////////////////////
// code Arduino split string [NUll]
///////////////////////////////////////////////////////////////////////////////
float temp = 0;
float humi = 0;
int sw1 = 0;
int sw2 = 0; // *** int or byte for control on-off (1-0)
const int tempLED = 2; // Example pin for temperature control LED
const int humiLED = 3;
const int sw1LED = 4;
const int sw2LED = 5;
void setup() {
Serial.begin(115200);
pinMode(tempLED, OUTPUT);
pinMode(humiLED, OUTPUT);
pinMode(sw1LED, OUTPUT);
pinMode(sw2LED, OUTPUT);
pinMode(A0, INPUT);
pinMode(A1, INPUT);
}
///////////////////////////////////////////////////////////////// *** loop
void loop() {
delay(100);
////////////////////////////////
// *** data val
float TT = analogRead(A0); delay(1);
float HH = analogRead(A1); delay(1);
//float TT = 12.34566;
//float HH = 15.987654;
int SW11 = 1;
int SW22 = 0;
///////////////////////////////
/////////////////////////////////////////////////////////////
// *** dtostrf (in float, 00.0000 , out Char )
char T[20]; // out Char [20]
dtostrf(TT, 2, 4, T); // *** d to string Float , 00.0000 2/4
char H[20];
dtostrf(HH, 2, 4, H);
char SW1[20];
dtostrf(SW11, 1, 0, SW1);
char SW2[20];
dtostrf(SW22, 1, 0, SW2);
//////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////
// arduino IDE code
char chr_data[50];
sprintf(chr_data, "TEMP:%s,HUMI:%s,SW1:%s,SW2:%s", T, H, SW1, SW2); // *** to char
/////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////
// *** chr_data Incoming informationmit **********************
//char chr_data[] = "TEMP:125.2592,HUMI:80.55,SW1:1,SW2:0"; // *** use comma ","
///////////////////////////////////////////////////////////////
////////////////////////////////////////////
Serial.println(chr_data); // *** TEMP:729.0000,HUMI:643.0000,SW1:1,SW2:0
//Serial.println("");
delay(1000);
////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////
//*** Char split string [NULL] ********** TEMP:729.0000,HUMI:643.0000,SW1:1,SW2:0 chr= 5/5/4/4
char comma[] = ",";
char *ptr = strtok(chr_data, comma);
while(ptr != NULL)
{
//Serial.println(ptr); // *** out Temp:125.25 ......SW2:1
if (strncmp(ptr, "TEMP:", 5) == 0) { // Temp: = 5 chr
temp = atof(ptr + 5);
} else if (strncmp(ptr, "HUMI:", 5) == 0) { // Humi: = 5 chr
humi = atof(ptr + 5);
} else if (strncmp(ptr, "SW1:" , 4) == 0) { // SW1: = 4 chr
sw1 = atoi(ptr + 4);
} else if (strncmp(ptr, "SW2:" , 4) == 0) { // SW2: = 4 chr
sw2 = atoi(ptr + 4);
}
ptr = strtok(NULL, comma);
delay(1);
}
///////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////
// Print the parsed values
//Serial.print("Temperature: ");
Serial.println(temp, 2); // output float temp = 25.2592
//Serial.print("Humidity: ");
Serial.println(humi); // output float humi = 80.55
//Serial.print("Switch 1: ");
Serial.println(sw1); // output int sw1 = 1
//Serial.print("Switch 2: ");
Serial.println(sw2); // output int sw2 = 0
Serial.println("#############################");
//////////////////////////////////////////////////
//////////////////////////////////////////////////
// Control the LEDs based on the parsed values
if (temp > 500) {
digitalWrite(tempLED, HIGH); // Turn on tempLED if temperature is greater than 30
} else {
digitalWrite(tempLED, LOW); // Turn off tempLED otherwise
}
if (humi > 500) {
digitalWrite(humiLED, HIGH);
} else {
digitalWrite(humiLED, LOW);
}
///////////////////////////////////////////////
/////////////////////////////////////
digitalWrite(sw1LED, sw1); // Control sw1LED based on sw1 value (1 or 0)
digitalWrite(sw2LED, sw2);
//////////////////////////////////////
delay(500); // Wait for 2 seconds before the next loop
} ///////////////////////////////////////////////////////////////// END...........
///////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////
/*
/////////////////////////////////////////////////////
char buf[20];
float x = 0.1234;
void setup() {
Serial.begin(9600);
}
void loop() {
dtostrf(x, 2, 4, buf);
Serial.println(buf);
delay(500);
}
*/
//////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////
/*
//char str[] = "strtok,needs,split,string,1024.00";
// code Arduino split string
float temp = 0;
float humi = 0;
int sw1 = 0;
int sw2 = 0;
void setup() {
Serial.begin(115200);
}
void loop() {
Serial.println("");
char str_data[] = "Temp:25.25,Humi:80.55,SW1:1,SW2:0";
Serial.println(str_data);
char comma[] = ",";
char *ptr = strtok(str_data, comma);
while(ptr != NULL)
{
Serial.println(ptr);
ptr = strtok(NULL, comma);
delay(500);
}
Serial.println(temp); // output temp = 25.25
Serial.println(humi); // output humi = 25.25
Serial.println(sw1); // output sw1 = 1
Serial.println(sw2); // output sw2 = 0
}
// ต้องการ CODE ที่จะนำค่าตัวแปร float temp and folat humi and int sw1 and int sw2 ไปใช้งาน control MCU Arduino
/*
void loop() {
Serial.println("");
char str[] = "Temp:25.25,Humi:80.55,SW1:1,SW2:0";
Serial.println(str);
char comma[] = ",";
char *ptr = strtok(str, comma);
while(ptr != NULL)
{
Serial.println(ptr);
ptr = strtok(NULL, comma);
delay(500);
}
*/