meta data for this page
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
arduino:code_collection [2025/02/21 19:35] – [Convert 2 registers to int32] vamsan | arduino:code_collection [2025/03/22 22:54] (current) – [Float to char[]] vamsan | ||
---|---|---|---|
Line 1: | Line 1: | ||
====== LamaPLC: Arduino code collection ====== | ====== LamaPLC: Arduino code collection ====== | ||
+ | ===== Frequently used code collection ===== | ||
+ | ==== TON ==== | ||
+ | <code c> | ||
+ | // var def block | ||
+ | unsigned long startMillis, | ||
+ | const unsigned long period = 2000; // the value is a number of milliseconds | ||
+ | // code block | ||
+ | currentMillis = millis(); | ||
+ | if (currentMillis - startMillis >= period) | ||
+ | { | ||
+ | startMillis = currentMillis; | ||
+ | // after time has elapsed the call | ||
+ | // ... | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | ==== check serial monitor ==== | ||
+ | <code c> | ||
+ | |||
+ | // code in setup() | ||
+ | Serial.begin(9600); | ||
+ | | ||
+ | while (!Serial) { | ||
+ | ; // wait for serial port to connect. Needed for native USB port only | ||
+ | } | ||
+ | Serial.println(" | ||
+ | </ | ||
+ | ===== Converting code collection ===== | ||
+ | ==== Float to char[] ==== | ||
+ | <code c> | ||
+ | // lib init (optional) | ||
+ | #include " | ||
+ | // converting | ||
+ | float a; | ||
+ | char sendValue[10]; | ||
+ | dtostrf (a, 10, 8, sendValue); // float_value, | ||
+ | |||
+ | </ | ||
+ | |||
+ | ==== Int to char[] ==== | ||
+ | <code c> | ||
+ | int a; | ||
+ | char sendValue[10]; | ||
+ | itoa (i, | ||
+ | // base: Numerical base used to represent the value as a string, between 2 and 36, where 10 means decimal base, 16 hexadecimal, | ||
+ | |||
+ | </ | ||
+ | ==== String to char[] ==== | ||
+ | <code c> | ||
+ | |||
+ | char place[20]; | ||
+ | strcpy(place," | ||
+ | |||
+ | </ | ||
===== Modbus code collection ===== | ===== Modbus code collection ===== | ||
==== Convert 2 registers to float ==== | ==== Convert 2 registers to float ==== | ||
Line 165: | Line 219: | ||
Serial.println(tmpstr2); | Serial.println(tmpstr2); | ||
return false; | return false; | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | ===== General code collection ===== | ||
+ | ==== MAC random generator ==== | ||
+ | Generate random MAC using pseudo random generator, bytes 0, 1 and 2 are static (MAC_START), | ||
+ | <code c> | ||
+ | void generateMac() { | ||
+ | // Marsaglia algorithm from https:// | ||
+ | seed1 = 36969L * (seed1 & 65535L) + (seed1 >> 16); | ||
+ | seed2 = 18000L * (seed2 & 65535L) + (seed2 >> 16); | ||
+ | uint32_t randomBuffer = (seed1 << 16) + seed2; /* 32-bit random */ | ||
+ | memcpy(data.mac, | ||
+ | for (byte i = 0; i < 3; i++) { | ||
+ | data.mac[i + 3] = randomBuffer & 0xFF; // random last 3 bytes | ||
+ | randomBuffer >>= 8; | ||
+ | } | ||
} | } | ||
</ | </ |