Operácie

Datalogger so záznamom: Rozdiel medzi revíziami

Zo stránky SensorWiki

Balogh (diskusia | príspevky)
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…“
 
Balogh (diskusia | príspevky)
Bez shrnutí editace
 
(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....