Confuse about PROGMEM and R"====()===="
why you should put your variables in flash memory instead of SRAM

Because the Arduino has only a very small amount of memory. If you have data that will never change it's better to store it in flash (of which there is much more) so as to leave the SRAM free for data that does change.

Also, I could not understand the definition of R&quot;====()====&quot;, what is meant by this in arduino?

The R means &quot;Treat everything between these delimiters as a raw string&quot;.  That is, everything between &quot;=====( and )=====&quot;. It's not an Arduino thing, but a general C++ thing (see here). The ===== can be anything you like (within certain bounds) as long as it's the same at both the start and end of the string.  So you could use R&quot;-=(This is &quot;text&quot;)=-&quot; which would assign the string This is &quot;text&quot;. It's a great way of working with long strings that may want to contain &quot; as otherwise you would have to escape each and every &quot; as \&quot;. So the string I showed just now would otherwise have to be written as: &quot;This is \&quot;text\&quot;&quot;, which can get very messy if there are lots of &quot; in there.  The important thing to remember is that )===== mustn't appear in your text anywhere, so make sure it's something really obscure.