Operácie

Datalogger so záznamom: Rozdiel medzi revíziami

Z SensorWiki

(Vytvorená stránka „Žmurkajúci smajlík je jednoduchá animácia, v ktorej sa striedajú dva smajlíky - jeden normálny a jeden so zhasnutým očkom. Je to zároveň príklad na vytvoren…“)
 
 
(3 medziľahlé úpravy od rovnakého používateľa nie sú zobrazené.)
Riadok 1: Riadok 1:
Žmurkajúci smajlík je jednoduchá animácia, v ktorej sa striedajú dva smajlíky - jeden normálny a jeden so zhasnutým očkom. Je to zároveň príklad na vytvorenie vlastného obrázku, pretože ten jednooký sa medzi predpripravenými obrázkami nenachádza.
 
  
<gallery heights=200px mode="packed">  <!-- slideshow? -->
+
 
Image:microbit-WinkSmiley.png|''Program v blokovom jazyku''
+
 
Image:microbit-WinkSmileyRun.png|''a jeho funkcia''
+
S novým Extension balíkom, ktorý sa volá príhodne Datalogger, je možné namerané dáta zaznamenávať do flash pamäte mikropočítača, ktorá sa sprístupní po pripojení micro:bitu ako flash disk, na ktorom nájdeme namerané dáta ako .html súbor s ktorým potom vieme ďalej pracovať.
 +
 
 +
Základné informácie nájdete aj tu:
 +
* [https://microbit.org/get-started/user-guide/data-logging/ Sprievodca záznamom dát]
 +
* [https://www.computingatschool.org.uk/resources/2022/october/datalogging-with-the-microbit Nejaké ďalšie informácie]
 +
* [https://senzor.robotika.sk/sensorwiki/index.php/Senzory_na_mikropo%C4%8D%C3%ADta%C4%8Di_micro:bit Základné info o senzoroch na micro:bite]
 +
 
 +
 
 +
<gallery heights=400px mode="packed">  <!-- slideshow? -->
 +
Image:microbit-Datalogger.png|''Program v blokovom jazyku''
 
</gallery>
 
</gallery>
  
Riadok 9: Riadok 17:
 
<tabs>
 
<tabs>
 
<tab name="Javascript"><source lang="javascript">
 
<tab name="Javascript"><source lang="javascript">
      
+
 
basic.forever(function () {
+
let logging = false
     basic.showIcon(IconNames.Happy)
+
     datalogger.setColumnTitles("ms","x")
     basic.pause(100)
+
 
     basic.showLeds(`
+
 
        . . . . .
+
 
         . # . . .
+
loops.everyInterval(100, function ()
         . . . . .
+
{
         # . . . #
+
  if (logging)
         . # # # .
+
  {
         `)
+
    datalogger.log(
     basic.pause(100)
+
        datalogger.createCV("ms", control.millis()),
 +
        datalogger.createCV("x", input.acceleration(Dimension.X))
 +
        )
 +
  }
 +
})
 +
 
 +
 
 +
input.onButtonPressed(Button.A, function () {
 +
     logging = !(logging)
 +
    if (logging) {
 +
        basic.showIcon(IconNames.Yes)
 +
     } else {
 +
        basic.clearScreen()
 +
     }
 +
})
 +
 
 +
 
 +
 
 +
 
 +
 
 +
datalogger.onLogFull(function ()
 +
{
 +
    logging = false
 +
    basic.showIcon(IconNames.No)
 +
})
 +
 
 +
 
 +
 
 +
 
 +
input.onButtonPressed(Button.AB, function () {
 +
    if (input.logoIsPressed()) {
 +
         basic.showIcon(IconNames.Angry)
 +
        datalogger.deleteLog()
 +
        logging = false
 +
         datalogger.setColumnTitles(
 +
         "ms",
 +
         "x"
 +
         )
 +
     }
 
})
 
})
 
+
 
 +
 
 
</source></tab>
 
</source></tab>
 
<tab name="MS Python"><source lang="python" style="background: LightBlue;">
 
<tab name="MS Python"><source lang="python" style="background: LightBlue;">
def on_forever():
 
    basic.show_icon(IconNames.HAPPY)
 
    basic.pause(500)
 
    basic.show_leds("""
 
        . . . . .
 
        . # . . .
 
        . . . . .
 
        # . . . #
 
        . # # # .
 
        """)
 
    basic.pause(100)
 
   
 
basic.forever(on_forever)
 
  
</source></tab>
+
logging = False
<tab name="uPython"><source lang="python" style="background: LightBlue;">
+
datalogger.set_column_titles("ms", "x")
from microbit import *
+
 
 +
 
 +
def on_every_interval():
 +
    if logging:
 +
        datalogger.log(datalogger.create_cv("ms", control.millis()),
 +
            datalogger.create_cv("x", input.acceleration(Dimension.X)))
 +
loops.every_interval(100, on_every_interval)
 +
 
 +
 
 +
 
 +
 
 +
def on_button_pressed_a():
 +
    global logging
 +
    logging = not (logging)
 +
    if logging:
 +
        basic.show_icon(IconNames.YES)
 +
    else:
 +
        basic.clear_screen()
 +
input.on_button_pressed(Button.A, on_button_pressed_a)
  
while True:
 
  display.show(Image.HAPPY)   
 
  sleep(1000)
 
  display.show(Image('00000:'
 
                    '09000:'
 
                    '00000:'
 
                    '90009:'
 
                    '09990'))
 
  sleep(200)
 
  
</source></tab>
 
<tab name="Arduino C++"><syntaxhighlight lang=c style="background: Cornsilk">
 
#include <Adafruit_Microbit.h>
 
  
Adafruit_Microbit_Matrix microbit;
 
  
const uint8_t SMILE_1[] =
+
def on_log_full():
{ B00000,
+
    global logging
  B01010,
+
    logging = False
  B00000,
+
    basic.show_icon(IconNames.NO)
  B10001,
+
datalogger.on_log_full(on_log_full)
  B01110,
 
};
 
  
const uint8_t SMILE_2[] =
 
{ B00000,
 
  B01000,
 
  B00000,
 
  B10001,
 
  B01110,
 
};
 
  
void setup() {
 
  microbit.begin();
 
}
 
  
void loop() {
 
  microbit.show(SMILE_1);
 
  delay(1000);
 
  microbit.show(SMILE_2);
 
  delay(200);
 
}</syntaxhighlight></tab>
 
<tab name="mBED C++"><syntaxhighlight lang=c style="background: Cornsilk">
 
#include "MicroBit.h"
 
  
MicroBit uBit;
+
def on_button_pressed_ab():
 +
    global logging
 +
    if input.logo_is_pressed():
 +
        basic.show_icon(IconNames.ANGRY)
 +
        datalogger.delete_log()
 +
        logging = False
 +
        datalogger.set_column_titles("ms", "x")
 +
input.on_button_pressed(Button.AB, on_button_pressed_ab)
  
MicroBitImage SMILEY1("0,1,0,1,0 \n"
 
                      "0,1,0,1,0 \n"
 
                      "0,0,0,0,0 \n"
 
                      "1,0,0,0,1 \n"
 
                      "0,1,1,1,0 \n");
 
  
MicroBitImage SMILEY2("0,0,0,1,0 \n"
 
                      "0,0,0,1,0 \n"
 
                      "0,0,0,0,0 \n"
 
                      "1,0,0,0,1 \n"
 
                      "0,1,1,1,0 \n");
 
  
int main()
 
{
 
  uBit.init();  // setup
 
 
 
  while(1)      // loop
 
  {
 
    uBit.display.print(SMILEY1);
 
    uBit.sleep(1000);
 
    uBit.display.print(SMILEY2);
 
    uBit.sleep(200);
 
  }
 
  
}</syntaxhighlight></tab>
+
</source></tab>
 +
<tab name="uPython"><source lang="python" style="background: LightBlue;">
 +
</source></tab>
 
</tabs>
 
</tabs>
 +
 +
 +
Po skončení merania treba micro:bit znova pripojiť k počítaču, jeho obsah bude vyzerať asi takto - pozri: https://senzor.robotika.sk/zp/microbit/
 +
 +
Na tomto "flash disku" si treba  otvoriť súbor [https://senzor.robotika.sk/zp/microbit/MY_DATA.HTM MY_DATA.HTM] a uvidíte nielen tabuľku s nameranými dátami, ale aj jednoduchý graf. Odtiaľto sa dajú data stiahnuť vo formáte .csv (comma separated values) vhodnom pre ďalšie spracovanie napr. v Matlabe, Exceli alebo Pythone.
 +
  
 
Späť na [[Kurz micro:bit#Zbierka príkladov|zoznam príkladov....]]
 
Späť na [[Kurz micro:bit#Zbierka príkladov|zoznam príkladov....]]

Aktuálna revízia z 18:41, 18. marec 2024


S novým Extension balíkom, ktorý sa volá príhodne Datalogger, je možné namerané dáta zaznamenávať do flash pamäte mikropočítača, ktorá sa sprístupní po pripojení micro:bitu ako flash disk, na ktorom nájdeme namerané dáta ako .html súbor s ktorým potom vieme ďalej pracovať.

Základné informácie nájdete aj tu:



let logging = false
    datalogger.setColumnTitles("ms","x")



loops.everyInterval(100, function () 
{
  if (logging) 
   {
     datalogger.log(
        datalogger.createCV("ms", control.millis()),
        datalogger.createCV("x", input.acceleration(Dimension.X))
        )
   }
})


input.onButtonPressed(Button.A, function () {
    logging = !(logging)
    if (logging) {
        basic.showIcon(IconNames.Yes)
    } else {
        basic.clearScreen()
    }
})





datalogger.onLogFull(function () 
{
    logging = false
    basic.showIcon(IconNames.No)
})




input.onButtonPressed(Button.AB, function () {
    if (input.logoIsPressed()) {
        basic.showIcon(IconNames.Angry)
        datalogger.deleteLog()
        logging = false
        datalogger.setColumnTitles(
        "ms",
        "x"
        )
    }
})
logging = False
datalogger.set_column_titles("ms", "x")


def on_every_interval():
    if logging:
        datalogger.log(datalogger.create_cv("ms", control.millis()),
            datalogger.create_cv("x", input.acceleration(Dimension.X)))
loops.every_interval(100, on_every_interval)




def on_button_pressed_a():
    global logging
    logging = not (logging)
    if logging:
        basic.show_icon(IconNames.YES)
    else:
        basic.clear_screen()
input.on_button_pressed(Button.A, on_button_pressed_a)




def on_log_full():
    global logging
    logging = False
    basic.show_icon(IconNames.NO)
datalogger.on_log_full(on_log_full)




def on_button_pressed_ab():
    global logging
    if input.logo_is_pressed():
        basic.show_icon(IconNames.ANGRY)
        datalogger.delete_log()
        logging = False
        datalogger.set_column_titles("ms", "x")
input.on_button_pressed(Button.AB, on_button_pressed_ab)


Po skončení merania treba micro:bit znova pripojiť k počítaču, jeho obsah bude vyzerať asi takto - pozri: https://senzor.robotika.sk/zp/microbit/

Na tomto "flash disku" si treba otvoriť súbor MY_DATA.HTM a uvidíte nielen tabuľku s nameranými dátami, ale aj jednoduchý graf. Odtiaľto sa dajú data stiahnuť vo formáte .csv (comma separated values) vhodnom pre ďalšie spracovanie napr. v Matlabe, Exceli alebo Pythone.


Späť na zoznam príkladov....