Esempi intermedi

Questa sezione presenta alcuni esempi di media complessità che mostrano come utilizzare μPanel con una scheda Arduino UNO.

2. Uso degli slider (2)

In questo esempio Arduino leggerà in tempo reale la posizione di un cursore sul pannello e aggiornerà sia una barra analogico e un display base 7 segmenti, con 20 Hz di tempo rinfrescante.

Hardware

  • Arduino UNO
  • Modulo ESP-01 WiFi (con µPanel Firmware)
  • Adattatore per breadboard ADP-01
  • Cavi Breadboard (4)

Definizione μPanel
La definizione pannello contiene il titolo del pannello, un analogo bar personalizzato e un cursore. L’intervallo di notifica cursore è impostato a 50 ms (20 Hz).

D!228;T*15:&#956Panel-Arduino Example 5;{%100,3!88F,228}//L15:0;L25:0;//A1%90-3:0:50:100:!F00;/30R1%90:0:100:1:50:50;

Arduino Code

void setup() {

  Serial.begin(57600);    // Initialise serial
  delay(3000);            // Let's the module start

  // Send Panel discharging old partial messages
  Serial.print("\n$P:D!228;T*15:μ-Arduino Slider 2;{%100,3!88F,228}");
  Serial.println("//L15:5;L25:0;//A1%90-3:0:50:100:!F00;/30R1%90:0:100:1:50:50;");

}

String Msg;

void loop() {

  int c;
  while ((c = Serial.read()) > '\n') Msg += (char) c;  // Read incoming chars, if any, until new line
  if (c == '\n')                                       // is message complete?
  { 
    Msg.toUpperCase();                                 // Catch partial slider positions too
    if (Msg.substring(0,4).equals("#R1:"))             // has the slider been moved?
      {  
        Serial.print("#A1:");                          // Update the Analog bar
        Serial.println(Msg.substring(4));              // with the Slider value 

        int v = (int) Msg.substring(4).toInt();        // Read the Slider position
        int d1 = (v / 10) % 10;                        // Compute the first LCD digit
        int d2 = v % 10;                               // Compute the second LCD digit

        Serial.print("#L1"); Serial.println(d1,DEC);   // Update the first LCD digit
        Serial.print("#L2"); Serial.println(d2,DEC);   // Update the second LCD digit

      }
    Msg = "";
  } 

}