merging microbit changes

This commit is contained in:
Peli de Halleux 2016-11-01 08:35:45 -07:00
commit 94e72784b9
66 changed files with 26504 additions and 697 deletions

View File

@ -91,3 +91,10 @@ basic.showString("d", 150)
You will not see the LED at position `0,0` lit up because the `show string` function overwrites the whole display buffer.
### Pins: P3, P4, P6, P7, P9, P10
These pins are coupled to the LED matrix display, and also its associated ambient light sensing mode.
To disable the display driver feature (which will automatically disable the light sensing feature) use the function [led.enable](/reference/led/enable).
More information at http://tech.microbit.org/hardware/edgeconnector_ds/ .

View File

@ -7,9 +7,9 @@ Create a charting app for simulating and measuring the acceleration applied to t
Acceleration
## Quick Links
* [activity](/lessons/charting/activity)
* [challenge](/lessons/charting/challenge)
* [quiz](/lessons/charting/quiz)
* [activity](/lessons/charting/activity)
* [challenge](/lessons/charting/challenge)
* [quiz](/lessons/charting/quiz)
* [answers](/lessons/charting/quiz-answers)
## Prior learning/place of lesson in scheme of work
@ -22,9 +22,8 @@ Learn the functions of **on data received**, **send number** and **receive numbe
input.acceleration(Dimension.X)
led.plotBarGraph(0, 1023)
basic.showNumber(0)
radio.onDataReceived(() => {})
radio.onDataPacketReceived(() => {})
radio.sendNumber(0)
radio.receiveNumber()
```
## Objectives

View File

@ -1,8 +1,8 @@
# Challenge
# Challenge
### ~avatar avatar
### ~avatar avatar
Welcome! The activity will teach you how to use the acceleration of the 1st micro:bit and to visualize the acceleration on the 2nd micro:bit.
Welcome! The activity will teach you how to use the acceleration of the 1st micro:bit and to visualize the acceleration on the 2nd micro:bit.
Let's get started!
### ~
@ -28,8 +28,8 @@ We want to register code to run when a packet is received over radio. We can imp
basic.forever(() => {
radio.sendNumber(input.acceleration(Dimension.X))
})
radio.onDataReceived(() => {
radio.onDataPacketReceived(() => {
})
```
### ~
@ -39,26 +39,26 @@ Finally, we want to chart the acceleration. So we must first implement `plot bar
basic.forever(() => {
radio.sendNumber(input.acceleration(Dimension.X))
})
radio.onDataReceived(() => {
led.plotBarGraph(radio.receiveNumber(), 1023)
radio.onDataPacketReceived(({ receivedNumber }) => {
led.plotBarGraph(receivedNumber, 1023)
})
```
### ~
Notice that moving the micro:bit the farthest direction in the x direction will be -1023 on the charting beneath the simulator. The second observation will be that the LEDs will be full brightness on the 2nd micro:bit. There is a single LED turned on with the 1st micro:bit. Additionally, the graphs will reflect 0 acceleation for the 1st micro:bit. In this scenario, if you are adjusting the acceleration in the simualator, you are also changing your chart that will be produced.
Notice that moving the micro:bit the farthest direction in the x direction will be -1023 on the charting beneath the simulator. The second observation will be that the LEDs will be full brightness on the 2nd micro:bit. There is a single LED turned on with the 1st micro:bit. Additionally, the graphs will reflect 0 acceleation for the 1st micro:bit. In this scenario, if you are adjusting the acceleration in the simualator, you are also changing your chart that will be produced.
![](/static/mb/acc.png)
### ~
NOTE: The colors of the charts reflect the color of the micro:bit simulator. In this instance, the micro:bits are blue and green. So the colors of the line graphs reflect the colors of the micro:bit
### ~
After running this simulation several seconds by moving the micro:bit side to side in the x direction, you are ready to graph or chart the accceleration of the micro:bit. We want a printout of our acceleration on Excel. We will graph the fluctuating acceleration of the simulation experiment.
After running this simulation several seconds by moving the micro:bit side to side in the x direction, you are ready to graph or chart the accceleration of the micro:bit. We want a printout of our acceleration on Excel. We will graph the fluctuating acceleration of the simulation experiment.
![](/static/mb/acc2.png)
### ~
Finally, you must open the Excel CSV file by clicking on the data.xls file that was downloaded to Downloads Folder.
Finally, you must open the Excel CSV file by clicking on the data.xls file that was downloaded to Downloads Folder.
![](/static/mb/data3.png)
@ -85,7 +85,7 @@ Have fun reviewing your simulation and analyze the acceleration by chart the Exc
* Connect the second micro:bit to your computer using your USB cable and run the charting script on it.
* The first person and second person take turns tilting the micro:bit in the "x" direction while the other player charts the data on the micro:bit!
* Review and analyze the actual micro:bit device acceleration data on Excel
* Display acceleration with y or z using plot bar graph by changing acceleration from "x" to "y" or "z"
* Display acceleration with y or z using plot bar graph by changing acceleration from "x" to "y" or "z"
```package
radio

View File

@ -19,7 +19,6 @@ Learn how to use running time. We will be learning how to create a pogo game usi
let jumps = 0
let acc = input.acceleration(Dimension.Y)
basic.showNumber(0)
radio.receiveNumber()
led.stopAnimation()
radio.sendNumber(0)
basic.forever(() => { })
@ -32,7 +31,7 @@ basic.showLeds(`
`)
basic.clearScreen()
if (true) {}
radio.onDataReceived(() => { })
radio.onDataPacketReceived(() => { })
```
## Objectives

View File

@ -1,6 +1,6 @@
# pogo activity
Construct a counter that uses acceleration.
Construct a counter that uses acceleration.
Welcome! This activity will teach how to construct a pendulum that glows using acceleration. Let's get started!
@ -120,8 +120,8 @@ input.onButtonPressed(Button.AB, () => {
let jumps = 0
basic.showNumber(jumps)
})
radio.onDataReceived(() => {
basic.showNumber(radio.receiveNumber())
radio.onDataPacketReceived(({ receivedNumber }) => {
basic.showNumber(receivedNumber)
})
```
@ -151,8 +151,8 @@ input.onButtonPressed(Button.AB, () => {
let jumps = 0
basic.showNumber(jumps)
})
radio.onDataReceived(() => {
basic.showNumber(radio.receiveNumber())
radio.onDataPacketReceived(({ receivedNumber }) => {
basic.showNumber(receivedNumber)
led.stopAnimation()
})

View File

@ -1,8 +1,8 @@
# Seismograph Lesson
# Seismograph Lesson
Build a seismograph with household materials
## Topic
## Topic
Acceleration & Analog Read Pin
@ -11,7 +11,7 @@ Acceleration & Analog Read Pin
* [activity](/lessons/seismograph/activity)
* [challenge](/lessons/seismograph/challenge)
## Prior learning/place of lesson in scheme of work
## Prior learning/place of lesson in scheme of work
Learn how to **show LEDs** to turn on a LED light pattern on the LED screen. We will be learning basic comments such as show LEDs and pause.
@ -21,17 +21,16 @@ Learn how to **show LEDs** to turn on a LED light pattern on the LED screen. We
basic.forever(() => {});
radio.sendNumber(0);
input.acceleration(Dimension.Strength)
radio.onDataReceived(() => {});
radio.onDataPacketReceived(() => {});
led.plotBarGraph(0, 0);
radio.receiveNumber();
```
## Objectives
* learn how to repeat code forever in the background
* learn how to display a vertical bar graph based on the value.
* learn how to display a vertical bar graph based on the value.
* learn how to return the sum of the two numbers
* learn how to get acceleration value in milli-gravitys
* learn how to get acceleration value in milli-gravitys
* learn how to read the connector value as analog as a value comprised between 0 and 1023
```package

View File

@ -1,20 +1,20 @@
# Seismograph Challenge
# Seismograph Challenge
Coding challenges for the seismograph.
Coding challenges for the seismograph.
### ~avatar avatar
Engineering: In this project, you will build a remote control based on the seismograph micro:bit activity using a second micro:bit and micro USB cable.
Engineering: In this project, you will build a remote control based on the seismograph micro:bit activity using a second micro:bit and micro USB cable.
### ~
## What you'll need:
## What you'll need:
* BBC micro:bits (2)
* micro USB cables (2)
* Plate
* Tape
* micro USB cables (2)
* Plate
* Tape
* Scissors
![](/static/mb/lessons/seis_challenge01.png)
@ -30,14 +30,14 @@ basic.forever(() => {
```
### ~avatar avatar
### ~avatar avatar
Computer Science: Welcome! The activity will teach you how to code the acceleration of the 1st micro:bit and to visualize the acceleration on the 2nd micro:bit. Let's get started!
### ~
# Computer Science Steps
## 1.
We want to simply detach the blocks from the recent activity. We will use blocks from the activity to create a brand new program to show the way micro:bit devices communicate through the BLE (Bluetooth low energy) radio.
We want to simply detach the blocks from the recent activity. We will use blocks from the activity to create a brand new program to show the way micro:bit devices communicate through the BLE (Bluetooth low energy) radio.
```shuffle
basic.forever(() => {
@ -46,10 +46,10 @@ basic.forever(() => {
```
## 2.
## 2.
Let's measure `acceleration (mg)` and then `send number`. `Acceleration` is measured in **milli-gravities**, so a value of -1000 is equivalent to -1g or -9.81m/s^2. We will be able to get the acceleration value (g-force), in the specified "x" dimension. `Send number` will broadcast a number data packet to other micro:bits connected via radio.
We need add send number block found in the Radio drawer. We will attach send number to acceleration and subtract the gravity from acceleration strength.
We need add send number block found in the Radio drawer. We will attach send number to acceleration and subtract the gravity from acceleration strength.
Your finished code will look like this:
@ -57,8 +57,8 @@ Your finished code will look like this:
radio.sendNumber(input.acceleration(Dimension.Strength) - 1023);
```
## 3.
We want to display the acceleration forever. In order to do so, we need a `forever` loop. A forever loop will repeat code in the background forever. We need attach forever loop to send number.
## 3.
We want to display the acceleration forever. In order to do so, we need a `forever` loop. A forever loop will repeat code in the background forever. We need attach forever loop to send number.
Your finished code will look like this:
@ -69,7 +69,7 @@ basic.forever(() => {
```
## 4.
## 4.
We want to register code to run when a packet is received over radio. We can implement this code by adding `on data received`block found in the radio drawer.
Your finished code will look like this:
@ -78,12 +78,12 @@ Your finished code will look like this:
basic.forever(() => {
radio.sendNumber(input.acceleration(Dimension.Strength) - 1023);
});
radio.onDataReceived(() => {
radio.onDataPacketReceived(() => {
});
```
## 5.
## 5.
Finally, we want to chart the acceleration. So we must first implement `plot bar graph`. `Plot Bar Graph` will display a vertical bar graph based on the value and high value. In order to transfer the receive the number from the 1st micro:bit, we must implement `receive number` to constantly display a vertical bar graph based on the value. Remember, the value will equal to the micro:bit's acceleration in the "x" direction.
Your finished code will look like this:
@ -92,25 +92,25 @@ Your finished code will look like this:
basic.forever(() => {
radio.sendNumber(input.acceleration(Dimension.Strength) - 1023);
});
radio.onDataReceived(() => {
led.plotBarGraph(radio.receiveNumber(), 0);
radio.onDataPacketReceived(({ receivedNumber }) => {
led.plotBarGraph(receivedNumber, 0);
});
```
### ~avatar avatar
### ~avatar avatar
Science: Welcome! The activity will teach you how to chart the acceleration of the 1st micro:bit and to visualize the acceleration on the 2nd micro:bit. Let's get started!
### ~
# Science Steps
## 6.
## 6.
First, notice that moving the 1st micro:bit in the simulator in any direction, you will change the acceleration value of the 2nd micro:bit. Also, notice that by moving the micro:bit simulator, there is a changing acceleration value of the second micro:bit. Second, the flat colored horizontal line will start a waving line on the 2nd micro:bit to display the value of the strength as measured in milli-gravities. Finally, notice that the LED display will fluctate based on the movement of the 2nd micro:bit simulator.
![](/static/mb/lessons/seis_challenge02.png)
## 7.
Connect the 2nd micro:bit to your computer using your USB cable. We should have two micro:bit devices attached to the computer.
## 7.
Connect the 2nd micro:bit to your computer using your USB cable. We should have two micro:bit devices attached to the computer.
![](/static/mb/lessons/seismograph33.png)
@ -118,7 +118,7 @@ Connect the 2nd micro:bit to your computer using your USB cable. We should have
Click or tap the **Download** button for the seismograph program to run the program on the 1st micro:bit and 2nd micro:bit.
## 9.
## 9.
The black lines should appear directly beneath the colored lines. The black lines measure the micro:bit acceleration. And the colored lines measures micro:bit simulator acceleration.
@ -134,34 +134,34 @@ Every time the micro:bit moves in any direction, you generate data points that c
Now we are ready to graph or chart the accceleration of the micro:bit. We want a printout of the micro:bit acceleration graphed in Excel.
## 10.
## 10.
In order to receive the the data plotted by Excel, click or tap anywhere in the on the chart data.
![](/static/mb/lessons/seis_challenge07.png)
## 11.
## 11.
You have two options to Analyze Data:
You have two options to Analyze Data:
* Local File: Save the data to your local Downloads folder and open it in Excel.
* Stream to Cloud: Upload your data to Microsoft Azure to analyze it.
* Local File: Save the data to your local Downloads folder and open it in Excel.
* Stream to Cloud: Upload your data to Microsoft Azure to analyze it.
Click or tap Download data
![](/static/mb/lessons/seismograph9.png)
## 12.
## 12.
A CSV file will be generated to display the data points collected by the micro:bit. Click or tap on the data Excel file that was downloaded to your local Downloads Folder.
A CSV file will be generated to display the data points collected by the micro:bit. Click or tap on the data Excel file that was downloaded to your local Downloads Folder.
![](/static/mb/lessons/analyze9.png)
## 13.
Select the data that you want to include in your chart. The chart should include the first two columns: time and acceleration.
Select the data that you want to include in your chart. The chart should include the first two columns: time and acceleration.
Click or tap on the first two columns (A, B) to include time and acceleration data from the micro:bit. We only need the first two columns (A, B) because the 2nd micro:bit changes have been communicated by the 1st micro:bit. So the data points of the seismograph are being recorded on the 1st micro:bit.
Click or tap on the first two columns (A, B) to include time and acceleration data from the micro:bit. We only need the first two columns (A, B) because the 2nd micro:bit changes have been communicated by the 1st micro:bit. So the data points of the seismograph are being recorded on the 1st micro:bit.
## 14.
@ -169,23 +169,23 @@ Click or tap on Insert then select Recommended Charts. We can select a chart tha
![](/static/mb/analyze3.png)
On the Recommended Charts tab, scroll through the list of chart types that Excel recommends for your data.
On the Recommended Charts tab, scroll through the list of chart types that Excel recommends for your data.
We want to select the chart called Line. A line chart is used to display trends over time. We will use the line chart because there are many data points over time.
We want to select the chart called Line. A line chart is used to display trends over time. We will use the line chart because there are many data points over time.
Click on the chart type to see how your data will look in that format. When you find the chart type that you want, click it, and then click OK.
Click on the chart type to see how your data will look in that format. When you find the chart type that you want, click it, and then click OK.
![](/static/mb/lessons/analyze16.png)
Tip: If you dont see the line chart, click the All Charts tab to see the line chart.
## 15.
## 15.
Use the Chart Elements, Chart Styles, and Chart Filters buttons next to the upper-right corner of the chart to add chart elements like axis titles or data labels, to customize the look of your chart
Alternatively, click or tap on the Design Ribbon.
Alternatively, click or tap on the Design Ribbon.
Let's select Style 10 as an example.
Let's select Style 10 as an example.
![](/static/mb/lessons/analyze19.png)

View File

@ -16,13 +16,13 @@ input.onButtonPressed(Button.A, () => {
## Step 2
Use [radio on data received](/reference/radio/on-data-received) display "YO" when the number ``0`` is received
Use [radio on data packet received](/reference/radio/on-data-packet-received) display "YO" when the number ``0`` is received
by radio.
```blocks
let message = 0;
radio.onDataReceived(() => {
message = radio.receiveNumber();
radio.onDataPacketReceived(({ receivedNumber }) => {
message = receivedNumber;
if (message == 0) {
basic.showString("YO")
}
@ -43,13 +43,13 @@ input.onButtonPressed(Button.B, () => {
## Step 4
Add blocks in [radio on data received](/reference/radio/on-data-received) to display "BYE" when the number ``1`` is received
Add blocks in [radio on data packet received](/reference/radio/on-data-packet-received) to display "BYE" when the number ``1`` is received
by radio.
```blocks
let message = 0;
radio.onDataReceived(() => {
message = radio.receiveNumber();
radio.onDataPacketReceived(({ receivedNumber }) => {
message = receivedNumber;
if (message == 0) {
basic.showString("YO")
}

View File

@ -1,8 +1,8 @@
# Challenge
# Challenge
### ~avatar avatar
### ~avatar avatar
Welcome! The activity will teach you how to use the acceleration of the 1st micro:bit and to visualize the acceleration on the 2nd micro:bit.
Welcome! The activity will teach you how to use the acceleration of the 1st micro:bit and to visualize the acceleration on the 2nd micro:bit.
Let's get started!
### ~
@ -28,8 +28,8 @@ We want to register code to run when a packet is received over radio. We can imp
basic.forever(() => {
radio.sendNumber(input.acceleration(Dimension.X))
})
radio.onDataReceived(() => {
radio.onDataPacketReceived(() => {
})
```
### ~
@ -39,28 +39,28 @@ Finally, we want to chart the acceleration. So we must first implement `plot bar
basic.forever(() => {
radio.sendNumber(input.acceleration(Dimension.X))
})
radio.onDataReceived(() => {
led.plotBarGraph(radio.receiveNumber(), 1023)
radio.onDataPacketReceived(({ receivedNumber }) => {
led.plotBarGraph(receivedNumber, 1023)
})
```
### ~
Notice that moving the micro:bit the farthest direction in the x direction will be -1023 on the charting beneath the simulator. The second observation will be that the LEDs will be full brightness on the 2nd micro:bit. There is a single LED turned on with the 1st micro:bit. Additionally, the graphs will reflect 0 acceleation for the 1st micro:bit. In this scenario, if you are adjusting the acceleration in the simualator, you are also changing your chart that will be produced.
Notice that moving the micro:bit the farthest direction in the x direction will be -1023 on the charting beneath the simulator. The second observation will be that the LEDs will be full brightness on the 2nd micro:bit. There is a single LED turned on with the 1st micro:bit. Additionally, the graphs will reflect 0 acceleation for the 1st micro:bit. In this scenario, if you are adjusting the acceleration in the simualator, you are also changing your chart that will be produced.
![](/static/mb/acc.png)
### ~
NOTE: The colors of the charts reflect the color of the micro:bit simulator. In this instance, the micro:bits are blue and green. So the colors of the line graphs reflect the colors of the micro:bit
### ~
After running this simulation several seconds by moving the micro:bit side to side in the x direction, you are ready to graph or chart the accceleration of the micro:bit. We want a printout of our acceleration on Excel. We will graph the fluctuating acceleration of the simulation experiment.
After running this simulation several seconds by moving the micro:bit side to side in the x direction, you are ready to graph or chart the accceleration of the micro:bit. We want a printout of our acceleration on Excel. We will graph the fluctuating acceleration of the simulation experiment.
![](/static/mb/acc2.png)
### ~
Finally, you must open the Excel CSV file by clicking on the `data.csv` file
that was downloaded to Downloads Folder.
that was downloaded to Downloads Folder.
![](/static/mb/data3.png)
@ -87,7 +87,7 @@ Have fun reviewing your simulation and analyze the acceleration by chart the Exc
* Connect the second micro:bit to your computer using your USB cable and run the charting script on it.
* The first person and second person take turns tilting the micro:bit in the "x" direction while the other player charts the data on the micro:bit!
* Review and analyze the actual micro:bit device acceleration data on Excel
* Display acceleration with y or z using plot bar graph by changing acceleration from "x" to "y" or "z"
* Display acceleration with y or z using plot bar graph by changing acceleration from "x" to "y" or "z"
```package
radio

View File

@ -17,8 +17,9 @@ led.plotAll();
led.screenshot();
led.toggleAll();
led.setDisplayMode(DisplayMode.BackAndWhite);
led.enable(false)
```
### See Also
[plot](/reference/led/plot), [unplot](/reference/led/unplot), [point](/reference/led/point), [brightness](/reference/led/brightness), [setBrightness](/reference/led/set-brightness), [stopAnimation](/reference/led/stop-animation), [plotBarGraph](/reference/led/plot-bar-graph), [fadeIn](/reference/led/fade-in), [fadeOut](/reference/led/fade-out), [plotAll](/reference/led/plot-all), [screenshot](/reference/led/screenshot), [toggle](/reference/led/toggle), [toggleAll](/reference/led/toggle-all), [setDisplayMode](/reference/led/set-display-mode)
[plot](/reference/led/plot), [unplot](/reference/led/unplot), [point](/reference/led/point), [brightness](/reference/led/brightness), [setBrightness](/reference/led/set-brightness), [stopAnimation](/reference/led/stop-animation), [plotBarGraph](/reference/led/plot-bar-graph), [fadeIn](/reference/led/fade-in), [fadeOut](/reference/led/fade-out), [plotAll](/reference/led/plot-all), [screenshot](/reference/led/screenshot), [toggle](/reference/led/toggle), [toggleAll](/reference/led/toggle-all), [setDisplayMode](/reference/led/set-display-mode), [enabled](/reference/led/enable)

View File

@ -0,0 +1,33 @@
# Enable
Turns the LED screen on and off
```sig
led.enable(false);
```
### Parameters
* ``on`` is a [boolean](/reference/types/boolean) that defines the on/off state of the screen
### Example: Turning off the screen
This program turns off the screen when pressing button ``B``
```typescript
input.onButtonPressed(Button.B, () => {
led.enable(false)
});
```
### Pins: P3, P4, P6, P7, P9, P10
These pins are coupled to the LED matrix display, and also its associated ambient light sensing mode.
To disable the display driver feature (which will automatically disable the light sensing feature) call the DAL function ``led.enable(false)``.
To turn the display driver back on again later, call ``led.enable(true)``.
More information at http://tech.microbit.org/hardware/edgeconnector_ds/ .
### See also
[unplot](/reference/led/unplot), [point](/reference/led/point), [LED screen](/device/screen)

View File

@ -4,19 +4,15 @@ Communicate data using radio packets
```cards
radio.sendNumber(0);
radio.sendValue("data", 0);
radio.sendValue("name", 0);
radio.sendString("");
radio.onDataReceived(() => {
radio.onDataPacketReceived(() => {
});
radio.receiveNumber();
radio.receivedNumberAt(0);
radio.receiveString();
radio.receivedSignalStrength();
radio.setGroup(0);
radio.setTransmitPower(7);
radio.setTransmitSerialNumber(false);
radio.writeValueToSerial();
radio.writeReceivedPacketToSerial();
```
```package
@ -25,4 +21,11 @@ radio
### See Also
[sendNumber](/reference/radio/send-number), [sendValue](/reference/radio/send-value), [sendString](/reference/radio/send-string), [onDataReceived](/reference/radio/on-data-received), [receiveNumber](/reference/radio/receive-number), [receiveString](/reference/radio/receive-string), [receivedSignalStrength](/reference/radio/received-signal-strength), [setGroup](/reference/radio/set-group), [setTransmitPower](/reference/radio/set-transmit-power), [setTransmitSerialNumber](/reference/radio/set-transmit-serial-number), [writeValueToSerial](/reference/radio/write-value-to-serial)
[sendNumber](/reference/radio/send-number),
[sendValue](/reference/radio/send-value),
[sendString](/reference/radio/send-string),
[onDataPacketReceived](/reference/radio/on-data-packet-received),
[setGroup](/reference/radio/set-group),
[setTransmitPower](/reference/radio/set-transmit-power),
[setTransmitSerialNumber](/reference/radio/set-transmit-serial-number),
[writeReceivedPacketToSerial](/reference/radio/write-received-packet-to-serial)

View File

@ -0,0 +1,51 @@
# On Data Packet Received
Run part of a program when the micro:bit receives a
[number](/reference/types/number) or [string](/reference/types/string) over ``radio``.
```sig
radio.onDataPacketReceived(({receivedNumber, receivedString, time, serial, signal}) => { });
```
### ~hint
To add or remove the parts of the packet from the block, try clicking the blue gear in the corner!
### ~
### Callback Parameters
* ``packet`` - the [packet](/reference/radio/packet) that was received by the radio. The packet has the following properties:
* `receivedNumber` - The [number](/reference/types/number) that was sent in this packet or `0` if this packet did not contain a number. See [send number](/reference/radio/send-number) and [send value](/reference/radio/send-value)
* `receivedString` - The [string](/reference/types/string) that was sent in this packet or the empty string if this packet did not contain a string. See [send string](/reference/radio/send-string) and [send value](/reference/radio/send-value)
* `time` - The system time of the micro:bit that sent this packet at the time the packet was sent.
* `serial` - The serial number of the micro:bit that sent this packet or `0` if the micro:bit did not include its serial number.
* `signal` - How strong the radio signal is from `255` (weak) to `0` (strong).
### Example
This program keeps sending numbers that says how fast the micro:bit is
slowing down or speeding up. It also receives numbers for the same
thing from nearby micro:bits. It shows these numbers as a
[bar graph](/reference/led/plot-bar-graph).
```blocks
basic.forever(() => {
radio.sendNumber(input.acceleration(Dimension.X));
})
radio.onDataPacketReceived(({ receivedNumber }) => {
led.plotBarGraph(receivedNumber, 1023);
})
```
### See also
[send number](/reference/radio/send-number),
[send string](/reference/radio/send-string),
[send value](/reference/radio/send-value),
[set group](/reference/radio/set-group)
```package
radio
```

View File

@ -1,5 +1,7 @@
# On Data Received
> Note: This API has been deprecated! Use [on data packet received](/reference/radio/on-data-packet-received) instead.
Run part of a program when the micro:bit receives a
[number](/reference/types/number) or [string](/reference/types/string) over ``radio``.
@ -8,10 +10,6 @@ Run part of a program when the micro:bit receives a
radio.onDataReceived(() => { });
```
### Simulator
This function only works on the micro:bit, not in browsers.
### Example
This program keeps sending numbers that says how fast the micro:bit is
@ -30,7 +28,7 @@ radio.onDataReceived(() => {
### See also
[receive number](/reference/radio/receive-number),
[on data packet received](/reference/radio/on-data-packet-received),
[send number](/reference/radio/send-number), [set group](/reference/radio/set-group)
```package

View File

@ -0,0 +1,19 @@
# Packet
A packet that was received by the radio.
## Properties
* `receivedNumber` - The [number](/reference/types/number) that was sent in this packet or `0` if this packet did not contain a number. See [send number](/reference/radio/send-number) and [send value](/reference/radio/send-value)
* `receivedString` - The [string](/reference/types/string) that was sent in this packet or the empty string if this packet did not contain a string. See [send string](/reference/radio/send-string) and [send value](/reference/radio/send-value)
* `time` - The system time of the micro:bit that sent this packet at the time the packet was sent.
* `serial` - The serial number of the micro:bit that sent this packet or `0` if the micro:bit did not include its serial number.
* `signal` - How strong the radio signal is from `255` (weak) to `0` (strong).
### See also
[on data packet received](/reference/radio/on-data-packet-received),
```package
radio
```

View File

@ -1,5 +1,7 @@
# Receive Number
> Note: This API has been deprecated! Use [on data packet received](/reference/radio/on-data-packet-received) instead.
Receives the next number sent by a micro:bit in the same ``radio`` group.
```sig
@ -10,10 +12,6 @@ radio.receiveNumber();
* the first [number](/reference/types/number) that the micro:bit received. If it did not receive any numbers, this function will return `0`.
### Simulator
This function only works on the micro:bit, not in browsers.
### Example: Simple number receiver
This example receives the number broadcasted another micro:bit and shows it
@ -25,7 +23,7 @@ radio.onDataReceived(() => {
})
```
### Example: Light level receiver
### Example: Light level receiver
This example shows the light level from the [light level sender example](/reference/radio/send-number)
as a number.

View File

@ -1,5 +1,7 @@
# Receive String
> Note: This API has been deprecated! Use [on data packet received](/reference/radio/on-data-packet-received) instead.
Find the next string sent by `radio` from another micro:bit.
```sig
@ -11,10 +13,6 @@ radio.receiveString()
* the first [string](/reference/types/string) that was sent. If no
string was sent, then this function returns an empty (blank) string.
### Simulator
This function only works on the micro:bit, not in browsers.
### Example: Simple receiver
Show the string sent by another micro:bit.

View File

@ -1,11 +1,13 @@
# Received Signal Strength
> Note: This API has been deprecated! Use [on data packet received](/reference/radio/on-data-packet-received) instead.
Find how strong the ``radio`` signal is, from `255` to `0`.
(`255` means a weak signal and `0` means a strong one.)
The micro:bit finds the signal strength by checking how strong it was
the last time it ran the
[receive number](/reference/radio/receive-number) function. That means
[on data packet received](/reference/radio/on-data-packet-received) function. That means
it needs to run **receive number** first.
```sig
@ -37,7 +39,7 @@ basic.forever(() => {
### See also
[receive number](/reference/radio/receive-number), [send number](/reference/radio/send-number), [on data received](/reference/radio/on-data-received)
[on data packet received](/reference/radio/on-data-packet-received), [send number](/reference/radio/send-number), [on data received](/reference/radio/on-data-received)
```package
radio

View File

@ -10,9 +10,6 @@ radio.sendNumber(0);
* ``value`` - a [number](/reference/types/number) to send.
### Simulator
This function only works on the micro:bit, not in browsers.
### Example: Broadcasting acceleration
@ -30,7 +27,7 @@ input.onButtonPressed(Button.A, () => {
This example broadcasts the level of the light around it.
You can do some interesting things with it if you use it along with the
[Mailbot](/reference/radio/receive-number) example.
[on data packet received](/reference/radio/on-data-packet-received) example.
```blocks
radio.setGroup(99)
@ -42,7 +39,7 @@ basic.forever(() => {
### See also
[receive number](/reference/radio/receive-number), [on data received](/reference/radio/on-data-received)
[on data packet received](/reference/radio/on-data-packet-received)
```package
radio

View File

@ -1,6 +1,7 @@
# Send String
Sends a string to other micro:bits in the area connected by radio.
Sends a string to other micro:bits in the area connected by radio. The
maximum string length is 19 characters.
```sig
radio.sendString("Hello!")
@ -10,9 +11,6 @@ radio.sendString("Hello!")
* `msg` is a [string](/reference/types/string) to send by radio.
### Simulator
This function only works on the micro:bit, not in browsers.
### Example: Two-way radio
@ -26,8 +24,8 @@ input.onButtonPressed(Button.A, () => {
basic.showString("SENT");
})
radio.onDataReceived(() => {
basic.showString(radio.receiveString());
radio.onDataPacketReceived(({ receivedString }) => {
basic.showString(receivedString);
});
```
@ -39,7 +37,7 @@ A radio that can both transmit and receive is called a _transceiver_.
### See also
[receive string](/reference/radio/receive-string), [on data received](/reference/radio/on-data-received)
[on data packet received](/reference/radio/on-data-packet-received)
```package
radio

View File

@ -1,9 +1,10 @@
# Send Value
Send a [string]() and [number]() together by ``radio`` to other micro:bits.
The maximum [string]() length is 12 characters.
```sig
radio.sendValue("data", 0);
radio.sendValue("name", 0);
```
### Parameters
@ -11,10 +12,6 @@ radio.sendValue("data", 0);
* ``name`` is a [string](/reference/types/string) to send by radio
* ``value`` a [number](/reference/types/number) to send by radio
### Simulator
This function only works on the micro:bit, not in browsers.
### Example: Broadcasting acceleration
This program sends your micro:bit's **acceleration** (amount it is
@ -25,7 +22,7 @@ or model rocket.
```blocks
radio.setGroup(99)
input.onButtonPressed(Button.A, () => {
radio.sendValue("acc",input.acceleration(Dimension.X))
radio.sendValue("acc", input.acceleration(Dimension.X))
})
```
@ -34,15 +31,15 @@ Then it shows them on the LED screen.
```blocks
radio.setGroup(99)
radio.onDataReceived(() => {
basic.showString(radio.receiveString());
basic.showNumber(radio.receiveNumber());
radio.onDataPacketReceived(({ receivedString, receivedNumber }) => {
basic.showString(receivedString);
basic.showNumber(receivedNumber);
});
```
### See also
[receive number](/reference/radio/receive-number), [on data received](/reference/radio/on-data-received)
[on data packet received](/reference/radio/on-data-packet-received)
```package
radio

View File

@ -32,7 +32,10 @@ radio.setGroup(128)
### See also
[receive number](/reference/radio/receive-number), [send number](/reference/radio/send-number), [on data received](/reference/radio/on-data-received)
[on data packet received](/reference/radio/on-data-packet-received),
[send number](/reference/radio/send-number),
[send value](/reference/radio/send-value),
[send string](/reference/radio/send-string)
```package
radio

View File

@ -13,7 +13,7 @@ radio.setTransmitPower(7);
```
### Range
If your micro:bit is sending with a strength of `7`, and you are in
an open area without many other computers around, the micro:bit signal
can reach as far as 70 meters (about 230 feet).
@ -37,7 +37,10 @@ radio.setTransmitPower(7)
### See also
[receive number](/reference/radio/receive-number), [send number](/reference/radio/send-number), [on data received](/reference/radio/on-data-received)
[on data packet received](/reference/radio/on-data-packet-received),
[send number](/reference/radio/send-number),
[send value](/reference/radio/send-value),
[send string](/reference/radio/send-string)
```package
radio

View File

@ -10,10 +10,6 @@ radio.setTransmitSerialNumber(true);
* ``transmit`` is a [boolean](/reference/types/boolean) that represents whether the serial number needs to be transmitted.
### Simulator
This function only works on the micro:bit, not in browsers.
### Example
This program makes the ``radio`` send the serial number in each packet.
@ -24,7 +20,10 @@ radio.setTransmitSerialNumber(true);
### See also
[receive number](/reference/radio/receive-number), [send number](/reference/radio/send-number), [on data received](/reference/radio/on-data-received)
[on data packet received](/reference/radio/on-data-packet-received),
[send number](/reference/radio/send-number),
[send value](/reference/radio/send-value),
[send string](/reference/radio/send-string)
```package
radio

View File

@ -0,0 +1,48 @@
# Write Received Packet To Serial
Writes the last packet received by the ``radio`` to serial in JSON format.
Should be called within a callback to
[on data packet received](/reference/radio/on-data-packet-received).
```sig
radio.writeReceivedPacketToSerial();
```
### Data received format
The format for received data printed to serial is as follows:
- [send number](/reference/radio/send-number): ```{v:ValueSent,t:MicrobitTimeAlive,s:SerialNumber}```
- [send value](/reference/radio/send-value): ```{v:ValueSent,t:MicrobitTimeAlive,s:SerialNumber,n:"Name"}```
- [send string](/reference/radio/send-string): ```{t:MicrobitTimeAlive,s:SerialNumber,n:"Text"}```
### Examples
When ```radio``` data is received (after pressing the ``A`` button on
the second micro:bit), this program sends temperature data to
serial.
```blocks
input.onButtonPressed(Button.A, () => {
radio.sendNumber(input.temperature());
});
radio.onDataPacketReceived(() => {
radio.writeReceivedPacketToSerial();
});
```
Sample output to serial when ``A`` button pressed:
```Text
{v:27,t:323,s:0}
```
### See also
[send number](/reference/radio/send-number),
[send value](/reference/radio/send-value),
[send string](/reference/radio/send-string),
[on data packet received](/reference/radio/on-data-packet-received)
```package
radio
```

View File

@ -1,30 +1,20 @@
# Write Value To Serial
> Note: This API has been deprecated! Use [write received packet to serial](/reference/radio/write-received-packet-to-serial) instead.
Writes the data received by ``radio`` to serial in JSON format.
```sig
radio.writeValueToSerial();
```
### ~hint
This method only works for [send number](/reference/radio/send-number)
and [send value](/reference/radio/send-value). It does not work for
[send string](/reference/radio/send-string), although you can send a
string as part of [send value](/reference/radio/send-value).
### ~
### Data received format
The format for received data printed to serial is as follows:
- [send number](/reference/radio/send-number): ```{v:ValueSent,t:MicrobitTimeAlive,s:Unused}```
- [send value](/reference/radio/send-value): ```{v:ValueSent,t:MicrobitTimeAlive,s:Unused,n:"Name"}```
### Simulator
This function only works on the micro:bit, not in browsers.
- [send number](/reference/radio/send-number): ```{v:ValueSent,t:MicrobitTimeAlive,s:SerialNumber}```
- [send value](/reference/radio/send-value): ```{v:ValueSent,t:MicrobitTimeAlive,s:SerialNumber,n:"Name"}```
- [send string](/reference/radio/send-string): ```{t:MicrobitTimeAlive,s:SerialNumber,n:"Text"}```
### Examples
@ -50,7 +40,8 @@ Sample output to serial when ``A`` button pressed:
[send number](/reference/radio/send-number),
[send value](/reference/radio/send-value),
[on data received](/reference/radio/on-data-received)
[send string](/reference/radio/send-string),
[on data packet received](/reference/radio/on-data-packet-received)
```package
radio

View File

@ -3,16 +3,23 @@
Our translations are managed via Crowdin, a translation management platform. It is free to join
and you can volunteer to translate parts of the web site.
## Translating the editor interface
## Crowdin project
The project below contains the resources from https://www.pxt.io and the menu items of https://pxt.microbit.org.
* [https://crowdin.com/project/kindscript](https://crowdin.com/project/kindscript)
You will find two files in that project:
If you want to help translating the editor, please sign in to Crowdin and send us a translator request.
* ``string.json``: text contained in the menu items of https://pxt.microbit.org
* ``website.json``: text contained in the pages served by https://www.pxt.io
## Translating the editor interface
The editor interface strings, like the "Download" button are in the ``strings.json`` file. Start by updating this file to translate the UI.
To test your changes "live", use **beta** build and the ``?livelang=CODE`` query argument where ``CODE`` is your language ISO code. For example, to see the french translations:
* https://pxt.microbit.org/beta?livelang=fr
Note that there may be a delay of up to 5 minutes before your changes in Crowdin make it into the "live" view.
## Translating the blocks and reference documentation

View File

@ -1,240 +0,0 @@
{
"Math.randomBoolean":"يقوم بإنشاء قيمة 'صحيح' أو 'false' عشوائياً، تماما مثل التقليب عمله.",
"Math.randomBoolean|block":"اختيار عشوائي true أو false",
"Math|block":"الرياضيات",
"String.fromCharCode":"جعل سلسلة من رمز الحرف ASCII معطى.",
"String.fromCharCode|block":"النص من حرف رمز %code",
"String|block":"السلسلة",
"basic":"يوفر الوصول إلى الوظيفة الأساسية الصغرى: بت.",
"basic.clearScreen":"إيقاف تشغيل كافة المصابيح",
"basic.clearScreen|block":"مسح الشاشة",
"basic.forever":"تكرار التعليمات البرمجية إلى الأبد في الخلفية. في كل تكرار، يسمح رموز أخرى لتشغيل.",
"basic.forever|block":"إلى الأبد",
"basic.pause":"إيقاف مؤقت للوقت المحدد بالمللي ثانية",
"basic.pause|block":"إيقاف %pause (مللي ثانية)",
"basic.pause|param|ms":"كم من الوقت للتوقف، على سبيل المثال: 100، 200، 500، 1000، 2000",
"basic.plotLeds":"يرسم صورة على شاشة LED.",
"basic.plotLeds|param|leds":"نمط من المصابيح لتشغيل\/إيقاف تشغيل",
"basic.showAnimation":"ويبين تسلسل الشاشات LED كالرسوم متحركة.",
"basic.showAnimation|param|interval":"الوقت بالمللي ثانية بين كل رسم",
"basic.showAnimation|param|leds":"نمط من المصابيح لتشغيل\/إيقاف تشغيل",
"basic.showLeds":"يرسم صورة على شاشة LED.",
"basic.showLeds|block":"إظهار المصابيح",
"basic.showLeds|param|interval":"الوقت بالمللي ثانية وقفه بعد الرسم",
"basic.showLeds|param|leds":"نمط الصمام لتشغيل\/إيقاف تشغيل",
"basic.showNumber":"قم بالتمرير رقم على الشاشة. إذا كان العدد يناسب على الشاشة (أي هو رقم واحد)، لا يتم تمرير.",
"basic.showNumber|block":"show|number %number",
"basic.showNumber|param|interval":"سرعة التمرير؛ على سبيل المثال: 150، 200-100، 100",
"basic.showString":"عرض النص على الشاشة، حرف واحد في كل مرة. إذا كانت السلسلة يناسب على الشاشة (أي حرف واحد)، لا يتم تمرير.",
"basic.showString|block":"show|string %text",
"basic.showString|param|interval":"طريقة سريعة لتحويل الأحرف؛ على سبيل المثال: 150، 200-100، 100",
"basic.showString|param|text":"النص للتمرير على الشاشة، على سبيل المثال: \"مرحبا!\"",
"basic|block":"الأساسية",
"control":"المرافق وقت التشغيل والحدث.",
"control.inBackground":"الجداول الزمنية للتعليمات البرمجية التي يتم تشغيلها في الخلفية.",
"control.inBackground|block":"تشغيل في الخلفية",
"control.reset":"يعيد تعيين الصغير: بت ال بي بي سي.",
"control.reset|block":"إعادة تعيين",
"control|block":"التحكم",
"game":"محرك لعبة واحدة تقودها العفريت",
"game.addScore":"إضافة نقاط إلى النتيجة الحالية",
"game.addScore|block":"تغيير درجة by|%points",
"game.addScore|param|points":"كمية من النقاط لتغيير، على سبيل المثال: 1",
"game.gameOver":"يعرض لعبة الرسوم المتحركة.",
"game.gameOver|block":"انتهت اللعبة",
"game.score":"يحصل على النتيجة الحالية",
"game.score|block":"نقاط",
"game.setScore":"تعيين القيمة إلى النتيجة الحالية",
"game.setScore|param|value":"تودو",
"game.startCountdown":"بدء تشغيل جهاز ضبط وقت العد التنازلي لعبة",
"game.startCountdown|block":"بدء تشغيل countdown| (مللي ثانية) %duration",
"game.startCountdown|param|ms":"مدة العد التنازلي في ميلي ثانية، على سبيل المثال: 10000",
"game|block":"لعبة",
"images":"إنشاء والتلاعب وعرض الصور الصمام.",
"images.createBigImage":"يقوم بإنشاء صورة مع إطارات 2.",
"images.createBigImage|block":"إنشاء صورة كبيرة",
"images.createImage":"يقوم بإنشاء صورة التي تناسبها على شاشة LED.",
"images.createImage|block":"إنشاء الصورة",
"images|block":"الصور",
"input":"الأحداث والبيانات من أجهزة الاستشعار",
"input.acceleration":"الحصول على قيمة التسارع في المجلس الملي-جرافيتيس (عندما يتم إرساء المجلس شقة مع الشاشة حتى, x = 0, y = 0 و z = 1024)",
"input.acceleration|block":"|%NAME التسارع (mg)",
"input.acceleration|param|dimension":"تودو",
"input.buttonIsPressed":"الحصول على حالة زر (ضغط أو لا) '' '' و '' ب ''.",
"input.buttonIsPressed|block":"button|%NAME|is الضغط",
"input.calibrate":"معايرة بوصلة عفا عليها الزمن، والتلقائي.",
"input.compassHeading":"الحصول على عنوان البوصلة البوصلة الحالية في درجات.",
"input.compassHeading|block":"بوصلة العنوان (°)",
"input.lightLevel":"يقرأ مستوى الضوء المطبقة على شاشة LED في طائفة من '' 0 '' (الظلام) إلى 255 '' '' مشرق.",
"input.lightLevel|block":"مستوى الضوء",
"input.magneticForce":"الحصول على قيمة القوة المغناطيسية في '' الصغرى-Teslas '' ('' µT ''). هذه الوظيفة غير معتمدة في المحاكاة.",
"input.magneticForce|block":"القوة المغناطيسية (µT) |%NAME",
"input.magneticForce|param|dimension":"تودو",
"input.onButtonPressed":"القيام بشيء عند الضغط على زر ('' '' أو '' ب '' أو كلا '' أ + ب '')",
"input.onButtonPressed|block":"على button|%NAME|pressed",
"input.onButtonPressed|param|body":"تودو",
"input.onButtonPressed|param|button":"تودو",
"input.onGesture":"وتولى تشغيل التعليمات البرمجية عند هو مواجهة الشاشة.",
"input.onGesture|block":"على |%NAME",
"input.onGesture|param|body":"تودو",
"input.onLogoDown":"وتولى تشغيل التعليمات البرمجية عند الشعار وتتجه نزولا والمجلس بشكل عمودي.",
"input.onLogoDown|param|body":"تودو",
"input.onLogoUp":"وتولى تشغيل التعليمات البرمجية عند الشعار وتتجه صعودا والمجلس بشكل عمودي.",
"input.onLogoUp|param|body":"تودو",
"input.onPinPressed":"تفعل شيئا عند الضغط على رقم التعريف الشخصي ('' P0 '' أو '' P1 '' أو كلا '' P2 '').",
"input.onPinPressed|block":"على pin|%NAME|pressed",
"input.onPinPressed|param|body":"تودو",
"input.onPinPressed|param|name":"تودو",
"input.onScreenDown":"وتولى تشغيل التعليمات البرمجية عند هو أسفل الشاشة.",
"input.onScreenDown|param|body":"تودو",
"input.onScreenUp":"وتولى تشغيل التعليمات البرمجية عند هو مواجهة الشاشة.",
"input.onScreenUp|param|body":"تودو",
"input.onShake":"وتولى تشغيل التعليمات البرمجية عند هو هز الجهاز.",
"input.onShake|param|body":"تودو",
"input.pinIsPressed":"الحصول على دولة طرف (ضغط أو لا). ويتطلب عقد الأرض من أجل إغلاق الدائرة.",
"input.pinIsPressed|block":"pin|%NAME|is الضغط",
"input.pinIsPressed|param|name":"دبوس المستخدمة للكشف عن لمسة",
"input.rotation":"الملعب للجهاز، وتناوب على طول '' المحور ''، بدرجات.",
"input.rotation|block":"|%NAME دوران (°)",
"input.rotation|param|kind":"تودو",
"input.runningTime":"يحصل على عدد المللي ثانية المنقضية منذ السلطة في.",
"input.runningTime|block":"إدارة الوقت (مللي ثانية)",
"input.setAccelerometerRange":"يعين نطاق العينة التسارع في جاذبيات.",
"input.setAccelerometerRange|block":"تعيين نطاق % accelerometer|range",
"input.setAccelerometerRange|param|range":"قيمة وصف قوتها القصوى لقياس التسارع",
"input.temperature":"يحصل على درجة حرارة مئوية درجات (درجة مئوية).",
"input.temperature|block":"درجة الحرارة (درجة مئوية)",
"input|block":"الإدخال",
"led":"التحكم في شاشة LED.",
"led.brightness":"الحصول على سطوع الشاشة من 0 (إيقاف) إلى 255 (مشرق كامل).",
"led.brightness|block":"سطوع",
"led.fadeIn":"يتلاشى في العرض على الشاشة.",
"led.fadeIn|param|ms":"تودو",
"led.fadeOut":"إخفاء مستوى سطوع الشاشة.",
"led.fadeOut|param|ms":"تودو",
"led.plot":"قم بتشغيل باستخدام الصمام المحدد x, y إحداثيات (س الأفقي، ص العمودي). (0, 0) هو أعلى اليسار.",
"led.plotAll":"تشغيل كافة المصابيح",
"led.plotBarGraph":"يعرض رسم بياني شريطي عمودي استناداً إلى 'قيمة' والقيمة 'عالية'.\nإذا كان 'عالية' هو 0، ويحصل ضبط التخطيط تلقائياً.",
"led.plotBarGraph|block":"رسم بياني شريطي من الإقلاع القيمة % إلى %high",
"led.plotBarGraph|param|high":"الحد الأقصى للقيمة. إذا كان 0, الحد الأقصى للقيمة المعدلة تلقائياً، على سبيل المثال: 0",
"led.plotBarGraph|param|value":"القيمة الحالية الأرض",
"led.plot|block":"plot|x %x|y %y",
"led.plot|param|x":"تودو",
"led.plot|param|y":"تودو",
"led.point":"الحصول على حالة تشغيل\/إيقاف استخدام الصمام المحدد x, y إحداثيات. (0, 0) هو أعلى اليسار.",
"led.point|block":"point|x %x|y %y",
"led.point|param|x":"تودو",
"led.point|param|y":"تودو",
"led.screenshot":"تأخذ لقطة للشاشة LED وترجع صورة.",
"led.setBrightness":"تعيين سطوع الشاشة من 0 (إيقاف) إلى 255 (مشرق كامل).",
"led.setBrightness|block":"قم بتعيين القيمة % السطوع",
"led.setBrightness|param|value":"قيمة السطوع، على سبيل المثال: 255، 127، 0",
"led.setDisplayMode":"تعيين وضع العرض بين الأسود والأبيض واللون الرمادي لجعلها المصابيح.",
"led.setDisplayMode|param|mode":"تودو",
"led.stopAnimation":"إلغاء الحركة الحالية ومسح أخرى انتظارا للرسوم المتحركة.",
"led.stopAnimation|block":"وقف الرسوم المتحركة",
"led.toggle":"يبدل بكسل خاص",
"led.toggleAll":"عكس العرض LED الحالية",
"led.toggle|param|x":"تودو",
"led.toggle|param|y":"تودو",
"led.unplot":"إيقاف استخدام الصمام المحدد x, y إحداثيات (س الأفقي، ص العمودي). (0, 0) هو أعلى اليسار.",
"led.unplot|block":"unplot|x %x|y %y",
"led.unplot|param|x":"تودو",
"led.unplot|param|y":"تودو",
"led|block":"شاشة",
"music":"جيل نغمات الموسيقى عن طريق الرقم السري '''' P0 ''.",
"music.beat":"إرجاع المدة للفوز في ميلي ثانية",
"music.beat|block":"%fraction|beat",
"music.changeTempoBy":"تغيير الإيقاع بالمبلغ المحدد",
"music.changeTempoBy|block":"تغيير الإيقاع بواسطة (bpm) | قيمة %",
"music.changeTempoBy|param|bpm":"التغيير في دقات في الدقيقة الواحدة للايقاع، على سبيل المثال: 20",
"music.noteFrequency":"يحصل على تكرار الملاحظة.",
"music.noteFrequency|block":"%note",
"music.noteFrequency|param|name":"ملاحظة اسم",
"music.playTone":"يلعب نغمة عن طريق الرقم السري '''' P0 '' لمدة معينة.",
"music.playTone|block":"play|tone %note = device_note|for %duration = device_beat",
"music.playTone|param|frequency":"الملعب لهجة للعب في هرتز (هرتز)",
"music.playTone|param|ms":"مدة نغمة في ميلي ثانية (مللي ثانية)",
"music.rest":"تقع (يلعب شيئا) لفترة زمنية محددة عن طريق الرقم السري '''' P0 ''.",
"music.rest|block":"|%duration بقية (مللي ثانية) = device_beat",
"music.rest|param|ms":"مدة الراحة في ميلي ثانية (مللي ثانية)",
"music.ringTone":"يلعب نغمة عن طريق الرقم السري '''' P0 ''.",
"music.ringTone|block":"عصابة لهجة (هرتز) |%note = device_note",
"music.ringTone|param|frequency":"الملعب لهجة للعب في هرتز (هرتز)",
"music.setTempo":"يحدد وتيرة إلى المبلغ المحدد",
"music.setTempo|block":"ضبط الإيقاع (نبضة في الدقيقة) | قيمة %",
"music.setTempo|param|bpm":"يدق على وتيرة جديدة في كل دقيقة، على سبيل المثال: 120",
"music.tempo":"تقوم بإرجاع الإيقاع في نبضة في الدقيقة. الإيقاع هو السرعة (bpm = نبضة في الدقيقة) في اللعب وتلاحظ فيه. أكبر قيمة الإيقاع، سيتم تشغيل أسرع وتلاحظ.",
"music.tempo|block":"الإيقاع (نبضة في الدقيقة)",
"music|block":"الموسيقى",
"pins":"التحكم في التيارات في دبابيس للإشارات التناظرية\/الرقمية، الماكينات، i2c،...",
"pins.analogPitch":"يبث إشارات تحوير (بوم) عرض نبض بدبوس الملعب الحالي. استخدام 'النظير تعيين pin الملعب' لتعريف pin في الملعب.",
"pins.analogPitch|param|frequency":"تودو",
"pins.analogPitch|param|ms":"تودو",
"pins.analogReadPin":"قراءة القيمة موصل النظير، وهذا هو، كقيمة بين 0 و 1023 وتتألف.",
"pins.analogReadPin|block":"%name read|pin التناظرية",
"pins.analogReadPin|param|name":"دبوس الكتابة إلى",
"pins.analogSetPeriod":"تكوين تحوير عرض النبضة (PWM) التناظرية المخرجات إلى قيمة معينة في * * ميكرو * * أو '' 1\/1000 ميلي ثانية.\nإذا لم يتم تكوين هذا الدبوس تمثيلي الإخراج (باستخدام 'الكتابة التناظرية دبوس')، قد العملية أي تأثير.",
"pins.analogSetPeriod|block":"تعيين النظير period|pin %pin|to مايكروون % (المايكروثانيه)",
"pins.analogSetPeriod|param|micros":"الفترة في الدقيقة ثانية. على سبيل المثال: 20000",
"pins.analogSetPeriod|param|name":"دبوس التناظرية لتعيين الفترة إلى",
"pins.analogSetPitchPin":"تعيين رقم pin المستخدم عند استخدام 'دبابيس-> التناظرية في الملعب'.",
"pins.analogSetPitchPin|param|name":"تودو",
"pins.analogWritePin":"تعيين القيمة رابط تمثيلي. يجب أن تتألف القيمة بين 0 و 1023.",
"pins.analogWritePin|block":"القيمة % %name|to write|pin التناظرية",
"pins.analogWritePin|param|name":"اسم دبوس الكتابة إلى",
"pins.analogWritePin|param|value":"قيمة لكتابة رقم التعريف الشخصي بين '' 0 '' و '' 1023 ''. على سبيل المثال: 1023, 0",
"pins.digitalReadPin":"قراءة المحدد رقم pin أو موصل أما 0 أو 1",
"pins.digitalReadPin|block":"read|pin رقمي %name",
"pins.digitalReadPin|param|name":"رقم التعريف الشخصي لقراءة من",
"pins.digitalWritePin":"تعيين قيمة رقم pin أو الرابط إلى 0 أو 1.",
"pins.digitalWritePin|block":"القيمة % %name|to write|pin الرقمي",
"pins.digitalWritePin|param|name":"دبوس الكتابة إلى",
"pins.digitalWritePin|param|value":"قيمة لتعيين رقم pin، 1 على سبيل المثال، 0",
"pins.i2cReadNumber":"قراءة رقم واحد من عنوان I2C 7 بت.",
"pins.i2cReadNumber|block":"i2c قراءة عنوان number|at %address|of الشكل %format = i2c_sizeof",
"pins.i2cWriteNumber":"كتابة رقم واحد لعنوان I2C 7 بت.",
"pins.i2cWriteNumber|block":"i2c يكتب عنوان number|at %address|with % قيمة value|of %format الشكل = i2c_sizeof",
"pins.map":"إعادة تعيين عدد من مجموعة واحدة إلى أخرى. فالحصول على تعيين قيمة '' من منخفضة '' إلى '' إلى انخفاض ''، قيمة '' من السامي '' إلى '' إلى ارتفاع ''، قيم الفترات الفاصلة بين القيم بينهما، إلخ.",
"pins.map|block":"خريطة % value|from %fromLow|from منخفضة %fromHigh|to ارتفاع منخفض %toLow|to عالية %toHigh",
"pins.map|param|fromHigh":"العليا ملزمة للنطاق الحالي للقيمة، على سبيل المثال: 1023",
"pins.map|param|fromLow":"الحد الأدنى للنطاق الحالي للقيمة",
"pins.map|param|toHigh":"الحد الأعلى المستهدفة القيمة تتراوح، على سبيل المثال: 4",
"pins.map|param|toLow":"الحد الأدنى للنطاق المستهدف للقيمة",
"pins.map|param|value":"قيمة للتعيين في نطاقات",
"pins.onPulsed":"تكوين هذا الرقم السري لأحد مدخلات رقمية، وينشئ الأحداث حيث الطابع الزمني هو المدة التي كان هذا الرقم '' عالية '' أو '' منخفضة ''.",
"pins.onPulsed|block":"on|pin %pin|pulsed %pulse",
"pins.pulseDuration":"يحصل على مدة نبض الماضي في مايكرو-ثانية. يجب أن يتم استدعاء هذه الدالة من معالج '' أونبولسيد ''.",
"pins.pulseDuration|block":"مدة النبضة (المايكروثانيه)",
"pins.servoSetPulse":"تكوين هذا دبوس آيو كناتج التناظرية\/بوم وتكوين الفترة بأن يكون 20 مللي ثانية، وتعيين عرض النبض، استناداً إلى القيمة التي تعطي * * ميكرو * * أو '' 1\/1000 ميلي ثانية.",
"pins.servoSetPulse|block":"تعيين مضاعفات pulse|pin value|to (المايكروثانيه) % % مايكروون",
"pins.servoSetPulse|param|micros":"مدة النبضة في الدقيقة ثانية، على سبيل المثال: 1500",
"pins.servoSetPulse|param|name":"اسم دبوس",
"pins.servoWritePin":"تكتب قيمة إلى مضاعفات، السيطرة الرمح تبعاً لذلك. في مضاعفات قياسية، سيؤدي هذا إلى تعيين زاوية الرمح (بالدرجات)، تتحرك الرمح لهذا التوجه. في مضاعفات تناوب مستمر، وهذا سيتم تعيين سرعة الماكينة (مع '' 0 '''' بسرعة كاملة في اتجاه واحد، '' 180 '' يجري كامل السرعة في أخرى، وقيمة قرب '' 90 '' يجري أي حركة).",
"pins.servoWritePin|block":"مضاعفات write|pin %name|to القيمة %",
"pins.servoWritePin|param|name":"دبوس الكتابة إلى",
"pins.servoWritePin|param|value":"زاوية أو التناوب سرعة، على سبيل المثال: 180، 90، 0",
"pins.setPull":"تكوين السحب من هذا الرقم.",
"pins.setPull|block":"تعيين pull|pin %pin|to %pull",
"pins.setPull|param|name":"رقم التعريف الشخصي لتعيين وضع الانسحاب في",
"pins.setPull|param|pull":"أحد تكوينات السحب مبيد: بولوب، المنسدلة، بولنوني ",
"pins|block":"دبابيس",
"serial":"قراءة وكتابة البيانات عبر اتصال تسلسلي.",
"serial.readLine":"يقرأ سطر من النص من المنفذ التسلسلي.",
"serial.readLine|block":"قراءة سطر للمسلسل",
"serial.redirect":"بشكل حيوي تكوين مثيل تسلسلي استخدام دبابيس خلاف أوسبتكس واسبر.",
"serial.redirect|block":"إعادة توجيه المسلسل to| TX %tx| RX % rx|at % معدل معدل الباود",
"serial.redirect|param|rx":"دبوس الاستقبال الجديدة",
"serial.redirect|param|tx":"دبابيس الإرسال الجديدة",
"serial.writeLine":"طباعة سطر من النص للمسلسل",
"serial.writeLine|block":"serial|write خط %text",
"serial.writeNumber":"طباعة قيمة رقمية للمسلسل",
"serial.writeNumber|block":"قيمة % رقم serial|write",
"serial.writeString":"يرسل جزء من النص من خلال اتصال تسلسلي.",
"serial.writeString|block":"كتابة المسلسل سلسلة %text",
"serial.writeValue":"يكتب '' الاسم: قيمة '' زوج الخط للمسلسل.",
"serial.writeValue|block":"serial|write قيمة %name| = القيمة %",
"serial.writeValue|param|name":"اسم القيمة الدفق، على سبيل المثال: x",
"serial.writeValue|param|value":"يكتب",
"serial|block":"مصدر الاتصال"
}

View File

@ -1,92 +0,0 @@
{
"Math.randomBoolean":"Genera un valor 'verdadero' o 'false' al azar, al igual que una moneda de los bancos.",
"String.fromCharCode":"Hacer una cadena desde el código de carácter ASCII dado.",
"basic":"Proporciona acceso a funcionalidad básica micro: bit.",
"basic.clearScreen":"Apagar todos los LEDs",
"basic.forever":"Repite el código para siempre en el fondo. En cada iteración, permite otros códigos ejecutar.",
"basic.pause":"Pausa para el tiempo especificado en milisegundos",
"basic.plotLeds":"Dibuja una imagen en la pantalla de LED.",
"basic.showAnimation":"Muestra una secuencia de pantallas de LED como una animación.",
"basic.showLeds":"Dibuja una imagen en la pantalla de LED.",
"basic.showNumber":"Desplácese a un número en la pantalla. Si el número cabe en la pantalla (es decir, es un solo dígito), no se desplazan.",
"basic.showString":"Mostrar texto en la pantalla, un carácter a la vez. Si la cadena encaja en la pantalla (es decir, es una letra), no se desplacen.",
"control":"Utilidades de tiempo de ejecución y evento.",
"control.inBackground":"Horarios de código que se ejecutan en segundo plano.",
"control.reset":"Restablece el BBC micro: bit.",
"game":"Un motor de juego de sprite solo LED",
"game.addScore":"Añade puntos a la cuenta corriente",
"game.gameOver":"Muestra un juego más de animación.",
"game.score":"Obtiene la puntuación actual",
"game.setScore":"Establece el valor de cuenta actual",
"game.startCountdown":"Comienza un temporizador de cuenta atrás juego",
"images":"Creación, manipulación y visualización de imágenes LED.",
"images.createBigImage":"Crea una imagen con 2 marcos.",
"images.createImage":"Crea una imagen que encaja en la pantalla de LED.",
"input":"Eventos y datos de los sensores",
"input.acceleration":"Obtener el valor de la aceleración en milli-gravitys (cuando es poner la junta plana con la pantalla hacia arriba, x = 0, y = 0 y z =-1024)",
"input.buttonIsPressed":"Obtener el estado de botón (presionado o no) para '' A'' y '' B''.",
"input.calibrate":"Obsoleto, brújula calibración es automática.",
"input.compassHeading":"Consigue el actual rumbo de la brújula brújula en grados.",
"input.lightLevel":"Lee el nivel de luz aplicado a la pantalla de LED en un rango de '' 0'' (oscuro) a '' 255'' brillante.",
"input.magneticForce":"Obtener el valor de la fuerza magnética en '' micro Teslas'' ('' μT ''). Esta función no se admite en el simulador.",
"input.onButtonPressed":"Hacer algo cuando se pulsa un botón ('' A'', '' B'' o ambos '' A + B'')",
"input.onGesture":"Concede el código a ejecutar cuando la pantalla quede mirando hacia arriba.",
"input.onLogoDown":"Concede el código a ejecutar cuando el logo está orientado hacia abajo y el tablero es vertical.",
"input.onLogoUp":"Concede el código a ejecutar cuando el logo está orientado hacia arriba y el tablero es vertical.",
"input.onPinPressed":"Hacer algo cuando se pulsa un pin ('' P0'', '' P1'' o '' ambos P2'').",
"input.onScreenDown":"Concede el código a ejecutar cuando la pantalla esté hacia abajo.",
"input.onScreenUp":"Concede el código a ejecutar cuando la pantalla quede mirando hacia arriba.",
"input.onShake":"Concede el código a ejecutar cuando se agita el dispositivo.",
"input.pinIsPressed":"Obtener el estado de pin (presionado o no). Requiere para mantener el suelo para cerrar el circuito.",
"input.rotation":"El tono del dispositivo de rotación a lo largo del '' x '', en grados.",
"input.runningTime":"Obtiene. que el número de milisegundos transcurrido desde el poder.",
"input.setAccelerometerRange":"Establece el intervalo de muestra de acelerómetro en gravedades.",
"input.temperature":"Obtiene la temperatura en grados Celsius grados (° C).",
"led":"Control de la pantalla LED.",
"led.brightness":"Bajar el brillo de la pantalla de 0 () a 255 (completo brillante).",
"led.fadeIn":"Difumina en la pantalla.",
"led.fadeOut":"Se descolora hacia fuera el brillo de la pantalla.",
"led.plot":"Encienda el LED especificado usando, coordenadas x y (x es horizontal, es vertical). (0,0) es la parte superior izquierda.",
"led.plotAll":"Enciende todos los LEDS",
"led.plotBarGraph":"Muestra un gráfico de barras vertical basado en el 'valor' y ' valor '.\nSi 'alto' es 0, la carta es ajustada automáticamente.",
"led.point":"Obtener el estado de encendido de la especificada usando LED, coordenadas x y. (0,0) es la parte superior izquierda.",
"led.screenshot":"Toma una captura de pantalla de la pantalla LED y devuelve una imagen.",
"led.setBrightness":"Configurar el brillo de la pantalla de 0 (off) a 255 (completo brillante).",
"led.setDisplayMode":"Establece el modo de pantalla entre el blanco y negro y escala de grises para la representación de LEDs.",
"led.stopAnimation":"Cancela la animación actual y borra otros pendiente de animaciones.",
"led.toggle":"Alterna un píxel particular",
"led.toggleAll":"Invierte la actual pantalla de LED",
"led.unplot":"Apagar el LED especificado usando, coordenadas x y (x es horizontal, es vertical). (0,0) es la parte superior izquierda.",
"music":"Generación de tonos de la música a través de pin '' P0''.",
"music.beat":"Devuelve la duración de un beat en milisegundos",
"music.changeTempoBy":"Cambiar el tempo en la cantidad especificada",
"music.noteFrequency":"Obtiene la frecuencia de una nota.",
"music.playTone":"Se reproduce un tono a través de pin '' P0'' la duración determinada.",
"music.rest":"Descansa (juega nada) durante un tiempo especificado a través de pin '' P0''.",
"music.ringTone":"Toca un tono a través de pin '' P0''.",
"music.setTempo":"El ritmo se establece en la cantidad especificada",
"music.tempo":"Vuelve el ritmo en pulsaciones por minuto. Tempo es la velocidad (bpm = beats por minuto) en qué juego de notas. Cuanto mayor sea el valor del tempo, se juegan más rápido las notas.",
"pins":"Control de corrientes de Pins para señales de analógico\/digital, servos, i2c...",
"pins.analogPitch":"Emite una señal de ancho de pulso modulación (PWM) para el pin de la echada actual. Utilice 'analog set pin pitch' para definir el pin pitch.",
"pins.analogReadPin":"Lea el valor de conector como analógica, es decir, como un valor comprendido entre 0 y 1023.",
"pins.analogSetPeriod":"Configura la modulación por ancho de pulso (PWM) de la analógica de salida para el valor dado en ** microsegundos ** o ' 1\/1000 «milisegundos.\nSi este pin no está configurado como un análogo de salida (usando 'escritura analógica pin'), la operación no tiene efecto.",
"pins.analogSetPitchPin":"Establece el pin cuando se usa 'pins-> tono analógico'.",
"pins.analogWritePin":"Establezca el valor de conector como analógica. Debe estar conformados por valor de entre 0 y 1023.",
"pins.digitalReadPin":"Leer el pin especificado o conector como 0 o 1",
"pins.digitalWritePin":"Establecer un valor de pin o conector de 0 o 1.",
"pins.i2cReadNumber":"Leer un número de 7 bits I2C dirección.",
"pins.i2cWriteNumber":"Escribir un número en una dirección de 7 bits I2C.",
"pins.map":"Volver a le asigna un número del uno al otro. Es decir, un valor de '' de baja '' conseguir asignado a '' a la baja '', un valor de '' de alta '' a '' a '', valores intermedios a intermedios, etc. de valores.",
"pins.onPulsed":"Configura este pin a una entrada digital y genera eventos donde la marca de tiempo es la duración que este pin fue '' alto '' o '' baja ''.",
"pins.pulseDuration":"Obtiene la duración del último pulso en micro segundos. Esta función debe ser llamada desde un controlador de '' onPulsed''.",
"pins.servoSetPulse":"Configura este pin IO como salida analógica\/pwm, configura el período para ser ms 20 y establece el ancho de pulso, basado en el valor se da ** microsegundos ** o ' 1\/1000 «milisegundos.",
"pins.servoWritePin":"Escribe un valor en el servo, control del eje por consiguiente. En un servo estándar, esto ajustará el ángulo del eje (en grados), moviendo el eje para que la orientación. En un servo de rotación continua, esto ajustará la velocidad del servo (siendo '' 0'' máxima velocidad en una dirección, '' 180'' lleno de velocidad en el otro y un valor de cerca de '' 90'' no que ningún movimiento).",
"pins.setPull":"Configura el tirón de este pin.",
"serial":"Leer y escribir datos en una conexión en serie.",
"serial.readLine":"Lee una línea de texto del puerto serial.",
"serial.redirect":"Configurar dinámicamente la instancia serial para usar pernos excepto USBTX y USBRX.",
"serial.writeLine":"Imprime una línea de texto para la serie",
"serial.writeNumber":"Imprime un valor numérico a la serie",
"serial.writeString":"Envía un fragmento de texto a través de la conexión en serie.",
"serial.writeValue":"Escribe un \"nombre: valor '' par línea de la serie."
}

View File

@ -1,80 +0,0 @@
{
"Math.randomBoolean|block": "pick random true or false",
"Math|block": "Math",
"String.fromCharCode|block": "text from char code %code",
"String|block": "String",
"basic.clearScreen|block": "clear screen",
"basic.forever|block": "forever",
"basic.pause|block": "pause (ms) %pause",
"basic.showLeds|block": "show leds",
"basic.showNumber|block": "show|number %number",
"basic.showString|block": "show|string %text",
"basic|block": "basic",
"control.inBackground|block": "run in background",
"control.reset|block": "reset",
"control.waitMicros|block": "wait (µs)%micros",
"control|block": "control",
"game.addScore|block": "change score by|%points",
"game.gameOver|block": "game over",
"game.score|block": "score",
"game.startCountdown|block": "start countdown|(ms) %duration",
"game|block": "game",
"images.createBigImage|block": "create big image",
"images.createImage|block": "create image",
"images|block": "images",
"input.acceleration|block": "acceleration (mg)|%NAME",
"input.buttonIsPressed|block": "button|%NAME|is pressed",
"input.compassHeading|block": "compass heading (°)",
"input.lightLevel|block": "light level",
"input.magneticForce|block": "magnetic force (µT)|%NAME",
"input.onButtonPressed|block": "on button|%NAME|pressed",
"input.onGesture|block": "on |%NAME",
"input.onPinPressed|block": "on pin %NAME|pressed",
"input.onPinReleased|block": "on pin %NAME|released",
"input.pinIsPressed|block": "pin %NAME|is pressed",
"input.rotation|block": "rotation (°)|%NAME",
"input.runningTime|block": "running time (ms)",
"input.setAccelerometerRange|block": "set accelerometer|range %range",
"input.temperature|block": "temperature (°C)",
"input|block": "input",
"led.brightness|block": "brightness",
"led.plotBarGraph|block": "plot bar graph of %value |up to %high",
"led.plot|block": "plot|x %x|y %y",
"led.point|block": "point|x %x|y %y",
"led.setBrightness|block": "set brightness %value",
"led.stopAnimation|block": "stop animation",
"led.toggle|block": "toggle|x %x|y %y",
"led.unplot|block": "unplot|x %x|y %y",
"led|block": "led",
"music.beat|block": "%fraction|beat",
"music.changeTempoBy|block": "change tempo by (bpm)|%value",
"music.noteFrequency|block": "%note",
"music.playTone|block": "play|tone %note=device_note|for %duration=device_beat",
"music.rest|block": "rest(ms)|%duration=device_beat",
"music.ringTone|block": "ring tone (Hz)|%note=device_note",
"music.setTempo|block": "set tempo to (bpm)|%value",
"music.tempo|block": "tempo (bpm)",
"music|block": "music",
"pins.analogReadPin|block": "analog read|pin %name",
"pins.analogSetPeriod|block": "analog set period|pin %pin|to (µs)%micros",
"pins.analogWritePin|block": "analog write|pin %name|to %value",
"pins.digitalReadPin|block": "digital read|pin %name",
"pins.digitalWritePin|block": "digital write|pin %name|to %value",
"pins.i2cReadNumber|block": "i2c read number|at address %address|of format %format=i2c_sizeof",
"pins.i2cWriteNumber|block": "i2c write number|at address %address|with value %value|of format %format=i2c_sizeof",
"pins.map|block": "map %value|from low %fromLow|from high %fromHigh|to low %toLow|to high %toHigh",
"pins.onPulsed|block": "on|pin %pin|pulsed %pulse",
"pins.pulseDuration|block": "pulse duration (µs)",
"pins.servoSetPulse|block": "servo set pulse|pin %value|to (µs) %micros",
"pins.servoWritePin|block": "servo write|pin %name|to %value",
"pins.setPull|block": "set pull|pin %pin|to %pull",
"pins.spiWrite|block": "spi write %value",
"pins|block": "pins",
"serial.readLine|block": "serial read line",
"serial.redirect|block": "serial redirect to|TX %tx|RX %rx|at baud rate %rate",
"serial.writeLine|block": "serial|write line %text",
"serial.writeNumber|block": "serial|write number %value",
"serial.writeString|block": "serial write string %text",
"serial.writeValue|block": "serial|write value %name|= %value",
"serial|block": "serial"
}

View File

@ -84,14 +84,24 @@ namespace led {
/**
* Sets the display mode between black and white and greyscale for rendering LEDs.
* @param mode TODO
* @param mode mode the display mode in which the screen operates
*/
//% weight=1 help=led/set-display-mode
//% parts="ledmatrix"
//% parts="ledmatrix" advanced=true
void setDisplayMode(DisplayMode_ mode) {
uBit.display.setDisplayMode((DisplayMode)mode);
}
/**
* Turns on or off the display
*/
//% help=led/enable blockId=device_led_enable icon="\uf04d"
//% advanced=true parts="ledmatrix"
void enable(bool on) {
if (on) uBit.display.enable();
else uBit.display.disable();
}
/**
* Takes a screenshot of the LED screen and returns an image.
*/

View File

@ -209,6 +209,7 @@ namespace pins {
*/
//% help=pins/servo-write-pin weight=20
//% blockId=device_set_servo_pin block="servo write|pin %name|to %value" blockGap=8
//% parts=microservo trackArgs=0
void servoWritePin(AnalogPin name, int value) {
PINOP(setServoValue(value));
}

View File

@ -29,6 +29,37 @@
{"pinIndices": [2, 3]}
]
},
"microservo": {
"simulationBehavior": "microservo",
"visual": {
"builtIn": "microservo",
"width": 74.85,
"height": 200,
"pinDistance": 10,
"pinLocations": [
{"x": 30, "y": 5},
{"x": 37, "y": 5},
{"x": 45, "y": 5}
]
},
"numberOfPins": 3,
"pinDefinitions": [
{"target": {"pinInstantiationIdx": 0}, "style": "croc", "orientation": "+Z"},
{"target": "threeVolt", "style": "croc", "orientation": "+Z"},
{"target": "ground", "style": "croc", "orientation": "+Z"}
],
"instantiation": {
"kind": "function",
"fullyQualifiedName": "pins.servoWritePin",
"argumentRoles": [
{"pinInstantiationIdx": 0, "partParameter": "name"}
]
},
"assembly": [
{"part": true, "pinIndices": [2]},
{"pinIndices": [0, 1]}
]
},
"neopixel": {
"simulationBehavior": "neopixel",
"visual": {

14
libs/core/shims.d.ts vendored
View File

@ -495,12 +495,19 @@ declare namespace led {
/**
* Sets the display mode between black and white and greyscale for rendering LEDs.
* @param mode TODO
* @param mode mode the display mode in which the screen operates
*/
//% weight=1 help=led/set-display-mode
//% parts="ledmatrix" shim=led::setDisplayMode
//% parts="ledmatrix" advanced=true shim=led::setDisplayMode
function setDisplayMode(mode: DisplayMode): void;
/**
* Turns on or off the display
*/
//% help=led/enable blockId=device_led_enable icon="\uf04d"
//% advanced=true parts="ledmatrix" shim=led::enable
function enable(on: boolean): void;
/**
* Takes a screenshot of the LED screen and returns an image.
*/
@ -622,7 +629,8 @@ declare namespace pins {
* @param value angle or rotation speed, eg:180,90,0
*/
//% help=pins/servo-write-pin weight=20
//% blockId=device_set_servo_pin block="servo write|pin %name|to %value" blockGap=8 shim=pins::servoWritePin
//% blockId=device_set_servo_pin block="servo write|pin %name|to %value" blockGap=8
//% parts=microservo trackArgs=0 shim=pins::servoWritePin
function servoWritePin(name: AnalogPin, value: number): void;
/**

View File

@ -100,6 +100,25 @@ namespace radio {
return ManagedString().leakData();
}
void writePacketAsJSON(uint8_t tp, int v, int s, int t, StringData* m) {
// Convert the packet to JSON and send over serial
uBit.serial.send("{");
uBit.serial.send("\"t\":");
uBit.serial.send(t);
uBit.serial.send(",\"s\":");
uBit.serial.send(s);
if (tp == PACKET_TYPE_STRING || tp == PACKET_TYPE_VALUE) {
uBit.serial.send(",\"n\":\"");
uBit.serial.send(m);
uBit.serial.send("\"");
}
if (tp == PACKET_TYPE_NUMBER || tp == PACKET_TYPE_VALUE) {
uBit.serial.send(",\"v\":");
uBit.serial.send(v);
}
uBit.serial.send("}\r\n");
}
/**
* Takes a packet from the micro:bit radio queue.
* @param writeToSerial if true, write the received packet to serial without updating the global packet;
@ -144,22 +163,7 @@ namespace radio {
msg = m;
}
else {
// Convert the packet to JSON and send over serial
uBit.serial.send("{");
uBit.serial.send("\"t\":");
uBit.serial.send(t);
uBit.serial.send(",\"s\":");
uBit.serial.send(s);
if (tp == PACKET_TYPE_STRING || tp == PACKET_TYPE_VALUE) {
uBit.serial.send(",\"n\":\"");
uBit.serial.send(m);
uBit.serial.send("\"");
}
if (tp == PACKET_TYPE_NUMBER || tp == PACKET_TYPE_VALUE) {
uBit.serial.send(",\"v\":");
uBit.serial.send(v);
}
uBit.serial.send("}\r\n");
writePacketAsJSON(tp, v, s, t, m);
}
}
@ -184,7 +188,7 @@ namespace radio {
/**
* Broadcasts a name / value pair along with the device serial number
* and running time to any connected micro:bit in the group.
* @param name the field name (max 12 characters), eg: "data"
* @param name the field name (max 12 characters), eg: "name"
* @param value the numberic value
*/
//% help=radio/send-value
@ -231,12 +235,25 @@ namespace radio {
//% help=radio/write-value-to-serial
//% weight=3
//% blockId=radio_write_value_serial block="radio write value to serial"
//% advanced=true
//% deprecated=true
void writeValueToSerial() {
if (radioEnable() != MICROBIT_OK) return;
receivePacket(true);
}
/**
* Writes the last received packet to serial as JSON. This should be called
* within an ``onDataPacketReceived`` callback.
*/
//% help=radio/write-received-packet-to-serial
//% weight=3
//% blockId=radio_write_packet_serial block="radio write received packet to serial"
//% advanced=true
void writeReceivedPacketToSerial() {
if (radioEnable() != MICROBIT_OK) return;
writePacketAsJSON(type, value, (int) serial, (int) time, msg);
}
/**
* Reads the next packet from the radio queue and returns the packet's number
* payload or 0 if the packet did not contain a number.
@ -244,7 +261,7 @@ namespace radio {
//% help=radio/receive-number
//% weight=46
//% blockId=radio_datagram_receive block="radio receive number" blockGap=8
//% advanced=true
//% deprecated=true
int receiveNumber()
{
if (radioEnable() != MICROBIT_OK) return 0;
@ -258,7 +275,7 @@ namespace radio {
//% help=radio/on-data-received
//% weight=50
//% blockId=radio_datagram_received_event block="radio on data received" blockGap=8
//% advanced=true
//% deprecated=true
void onDataReceived(Action body) {
if (radioEnable() != MICROBIT_OK) return;
registerWithDal(MICROBIT_ID_RADIO, MICROBIT_RADIO_EVT_DATAGRAM, body);
@ -274,7 +291,7 @@ namespace radio {
//% blockId=radio_datagram_receive_string block="radio receive string" blockGap=8
//% weight=44
//% help=radio/receive-string
//% advanced=true
//% deprecated=true
StringData* receiveString() {
if (radioEnable() != MICROBIT_OK) return ManagedString().leakData();
receivePacket(false);
@ -289,7 +306,7 @@ namespace radio {
//% help=radio/received-signal-strength
//% weight=40
//% blockId=radio_datagram_rssi block="radio received signal strength"
//% advanced=true
//% deprecated=true
int receivedSignalStrength() {
if (radioEnable() != MICROBIT_OK) return 0;
return packet.getRSSI();

View File

@ -13,7 +13,7 @@ namespace radio {
* The string payload if a string was sent in this packet (via ``sendString()`` or ``sendValue()``)
* or the empty string if this packet did not contain a string.
*/
public text: string;
public receivedString: string;
/**
* The system time of the sender of the packet at the time the packet was sent.
*/
@ -32,9 +32,10 @@ namespace radio {
* Registers code to run when the radio receives a packet. Also takes the
* received packet from the radio queue.
*/
//% help=radio/on-data-packet-received
//% mutate=true
//% mutateText=Packet
//% mutateDefaults="receivedNumber;text,receivedNumber;text"
//% mutateDefaults="receivedNumber;receivedString:name,receivedNumber:value;receivedString"
//% blockId=radio_on_packet block="on radio received" blockGap=8
export function onDataPacketReceived(cb: (packet: Packet) => void) {
onDataReceived(() => {
@ -43,7 +44,7 @@ namespace radio {
packet.receivedNumber = receivedNumber();
packet.time = receivedTime();
packet.serial = receivedSerial();
packet.text = receivedString();
packet.receivedString = receivedString();
packet.signal = receivedSignalStrength();
cb(packet)
});

22
libs/radio/shims.d.ts vendored
View File

@ -16,7 +16,7 @@ declare namespace radio {
/**
* Broadcasts a name / value pair along with the device serial number
* and running time to any connected micro:bit in the group.
* @param name the field name (max 12 characters), eg: "data"
* @param name the field name (max 12 characters), eg: "name"
* @param value the numberic value
*/
//% help=radio/send-value
@ -40,9 +40,19 @@ declare namespace radio {
//% help=radio/write-value-to-serial
//% weight=3
//% blockId=radio_write_value_serial block="radio write value to serial"
//% advanced=true shim=radio::writeValueToSerial
//% deprecated=true shim=radio::writeValueToSerial
function writeValueToSerial(): void;
/**
* Writes the last received packet to serial as JSON. This should be called
* within an ``onDataPacketReceived`` callback.
*/
//% help=radio/write-received-packet-to-serial
//% weight=3
//% blockId=radio_write_packet_serial block="radio write received packet to serial"
//% advanced=true shim=radio::writeReceivedPacketToSerial
function writeReceivedPacketToSerial(): void;
/**
* Reads the next packet from the radio queue and returns the packet's number
* payload or 0 if the packet did not contain a number.
@ -50,7 +60,7 @@ declare namespace radio {
//% help=radio/receive-number
//% weight=46
//% blockId=radio_datagram_receive block="radio receive number" blockGap=8
//% advanced=true shim=radio::receiveNumber
//% deprecated=true shim=radio::receiveNumber
function receiveNumber(): number;
/**
@ -59,7 +69,7 @@ declare namespace radio {
//% help=radio/on-data-received
//% weight=50
//% blockId=radio_datagram_received_event block="radio on data received" blockGap=8
//% advanced=true shim=radio::onDataReceived
//% deprecated=true shim=radio::onDataReceived
function onDataReceived(body: () => void): void;
/**
@ -69,7 +79,7 @@ declare namespace radio {
//% blockId=radio_datagram_receive_string block="radio receive string" blockGap=8
//% weight=44
//% help=radio/receive-string
//% advanced=true shim=radio::receiveString
//% deprecated=true shim=radio::receiveString
function receiveString(): string;
/**
@ -80,7 +90,7 @@ declare namespace radio {
//% help=radio/received-signal-strength
//% weight=40
//% blockId=radio_datagram_rssi block="radio received signal strength"
//% advanced=true shim=radio::receivedSignalStrength
//% deprecated=true shim=radio::receivedSignalStrength
function receivedSignalStrength(): number;
/**

View File

View File

@ -0,0 +1,62 @@
<xml xmlns="http://www.w3.org/1999/xhtml">
<block type="device_forever">
<statement name="HANDLER">
<block type="device_show_leds">
<field name="LED00">FALSE</field>
<field name="LED10">FALSE</field>
<field name="LED20">FALSE</field>
<field name="LED30">FALSE</field>
<field name="LED40">FALSE</field>
<field name="LED01">FALSE</field>
<field name="LED11">TRUE</field>
<field name="LED21">FALSE</field>
<field name="LED31">TRUE</field>
<field name="LED41">FALSE</field>
<field name="LED02">FALSE</field>
<field name="LED12">FALSE</field>
<field name="LED22">FALSE</field>
<field name="LED32">FALSE</field>
<field name="LED42">FALSE</field>
<field name="LED03">TRUE</field>
<field name="LED13">FALSE</field>
<field name="LED23">FALSE</field>
<field name="LED33">FALSE</field>
<field name="LED43">TRUE</field>
<field name="LED04">FALSE</field>
<field name="LED14">TRUE</field>
<field name="LED24">TRUE</field>
<field name="LED34">TRUE</field>
<field name="LED44">FALSE</field>
<next>
<block type="device_show_leds">
<field name="LED00">FALSE</field>
<field name="LED10">FALSE</field>
<field name="LED20">FALSE</field>
<field name="LED30">FALSE</field>
<field name="LED40">FALSE</field>
<field name="LED01">FALSE</field>
<field name="LED11">FALSE</field>
<field name="LED21">FALSE</field>
<field name="LED31">FALSE</field>
<field name="LED41">FALSE</field>
<field name="LED02">FALSE</field>
<field name="LED12">FALSE</field>
<field name="LED22">FALSE</field>
<field name="LED32">FALSE</field>
<field name="LED42">FALSE</field>
<field name="LED03">FALSE</field>
<field name="LED13">FALSE</field>
<field name="LED23">FALSE</field>
<field name="LED33">FALSE</field>
<field name="LED43">FALSE</field>
<field name="LED04">FALSE</field>
<field name="LED14">FALSE</field>
<field name="LED24">FALSE</field>
<field name="LED34">FALSE</field>
<field name="LED44">FALSE</field>
</block>
</next>
</block>
</statement>
</block>
</xml>

View File

@ -0,0 +1,16 @@
basic.forever(() => {
basic.showLeds(`
. # . # .
# . # . #
# . . . #
. # . # .
. . # . .
`)
basic.showLeds(`
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
`)
})

View File

@ -0,0 +1,13 @@
{
"name": "{0} block",
"dependencies": {
"core": "*",
"radio": "*"
},
"description": "",
"files": [
"main.blocks",
"main.ts",
"README.md"
]
}

View File

@ -0,0 +1,8 @@
{
"compilerOptions": {
"target": "es5",
"noImplicitAny": true,
"outDir": "built",
"rootDir": "."
}
}

View File

View File

@ -0,0 +1,7 @@
basic.showLeds(`
. . . . .
. # . # .
. . . . .
# . . . #
. # # # .
`);

View File

@ -0,0 +1,12 @@
{
"name": "{0} bit",
"dependencies": {
"core": "*",
"radio": "*"
},
"description": "",
"files": [
"main.ts",
"README.md"
]
}

View File

@ -0,0 +1,8 @@
{
"compilerOptions": {
"target": "es5",
"noImplicitAny": true,
"outDir": "built",
"rootDir": "."
}
}

View File

@ -130,11 +130,7 @@ Welcome to the Touch Develop home page for the BBC micro:bit. Below you will fin
* [running time](/reference/input/running-time)
* [on shake](/reference/input/on-gesture)
* [on button pressed](/reference/input/on-button-pressed)
* [on logo down](/functions/on-logo-down)
* [on logo up](/functions/on-logo-up)
* [on pin pressed](/reference/input/on-pin-pressed)
* [on screen down](/functions/on-screen-down)
* [on screen up](/functions/on-screen-up)
* [pin is pressed](/reference/input/pin-is-pressed)
### Image

View File

@ -55,5 +55,4 @@ To learn more about how the BBC micro:bit queues up and schedules event handlers
### see also
[on button pressed](/reference/input/on-button-pressed), [on logo up](/functions/on-logo-up), [on logo down](/functions/on-logo-down), [on screen up](/functions/on-screen-up), [on screen down](/functions/on-screen-down), [on shake](/reference/input/on-gesture), [on pin pressed](/reference/input/on-pin-pressed)
[on button pressed](/reference/input/on-button-pressed)

View File

@ -77,11 +77,6 @@ Overview of TouchDevelop lessons for the micro:bit.
* [compass heading](/reference/input/compass-heading)
* [calibrate](/functions/calibrate)
* [running time](/reference/input/running-time)
* [on shake](/reference/input/on-gesture)
* [on screen up](/functions/on-screen-up)
* [on screen down](/functions/on-screen-down)
* [on logo up](/functions/on-logo-up)
* [on logo down](/functions/on-logo-down)
### ~

View File

@ -43,9 +43,6 @@ Learn how to create a guessing game with **global variables** `var str: "this is
* **show string** : [read more...](/reference/basic/show-string)
* **local variables** : [read more...](/reference/variables/var)
* **assignment operator** : [read more...](/reference/variables/assign)
* **on logo up** [read more...](/functions/on-logo-up)
* **on screen down** [read more...](/functions/on-screen-down)
* **on screen up** [read more...](/functions/on-screen-up)
* **math random** : [read more...](/js/math)
## Resources

View File

@ -30,7 +30,7 @@
"typescript": "^1.8.7"
},
"dependencies": {
"pxt-core": "0.5.33",
"pxt-core": "0.5.34",
"less": "^2.6.0",
"semantic-ui-less": "^2.2.4"
}

View File

@ -20,46 +20,6 @@
],
"githubPackages": true
},
"blocksprj": {
"id": "blocksprj",
"config": {
"name": "{0} block",
"dependencies": {
"core": "*",
"radio": "*"
},
"description": "",
"files": [
"main.blocks",
"main.ts",
"README.md"
]
},
"files": {
"main.blocks": "<xml xmlns=\"http://www.w3.org/1999/xhtml\">\n<block type=\"device_forever\">\n<statement name=\"HANDLER\">\n<block type=\"device_show_leds\">\n<field name=\"LED00\">FALSE</field>\n<field name=\"LED10\">FALSE</field>\n<field name=\"LED20\">FALSE</field>\n<field name=\"LED30\">FALSE</field>\n<field name=\"LED40\">FALSE</field>\n<field name=\"LED01\">FALSE</field>\n<field name=\"LED11\">TRUE</field>\n<field name=\"LED21\">FALSE</field>\n<field name=\"LED31\">TRUE</field>\n<field name=\"LED41\">FALSE</field>\n<field name=\"LED02\">FALSE</field>\n<field name=\"LED12\">FALSE</field>\n<field name=\"LED22\">FALSE</field>\n<field name=\"LED32\">FALSE</field>\n<field name=\"LED42\">FALSE</field>\n<field name=\"LED03\">TRUE</field>\n<field name=\"LED13\">FALSE</field>\n<field name=\"LED23\">FALSE</field>\n<field name=\"LED33\">FALSE</field>\n<field name=\"LED43\">TRUE</field>\n<field name=\"LED04\">FALSE</field>\n<field name=\"LED14\">TRUE</field>\n<field name=\"LED24\">TRUE</field>\n<field name=\"LED34\">TRUE</field>\n<field name=\"LED44\">FALSE</field>\n<next>\n<block type=\"device_show_leds\">\n<field name=\"LED00\">FALSE</field>\n<field name=\"LED10\">FALSE</field>\n<field name=\"LED20\">FALSE</field>\n<field name=\"LED30\">FALSE</field>\n<field name=\"LED40\">FALSE</field>\n<field name=\"LED01\">FALSE</field>\n<field name=\"LED11\">FALSE</field>\n<field name=\"LED21\">FALSE</field>\n<field name=\"LED31\">FALSE</field>\n<field name=\"LED41\">FALSE</field>\n<field name=\"LED02\">FALSE</field>\n<field name=\"LED12\">FALSE</field>\n<field name=\"LED22\">FALSE</field>\n<field name=\"LED32\">FALSE</field>\n<field name=\"LED42\">FALSE</field>\n<field name=\"LED03\">FALSE</field>\n<field name=\"LED13\">FALSE</field>\n<field name=\"LED23\">FALSE</field>\n<field name=\"LED33\">FALSE</field>\n<field name=\"LED43\">FALSE</field>\n<field name=\"LED04\">FALSE</field>\n<field name=\"LED14\">FALSE</field>\n<field name=\"LED24\">FALSE</field>\n<field name=\"LED34\">FALSE</field>\n<field name=\"LED44\">FALSE</field>\n</block>\n</next>\n</block>\n</statement>\n</block>\n</xml>",
"main.ts": "basic.forever(() => {\r\n basic.showLeds(`\r\n . # . # .\r\n # . # . #\r\n # . . . #\r\n . # . # .\r\n . . # . .\r\n `)\r\n basic.showLeds(`\r\n . . . . .\r\n . . . . .\r\n . . . . .\r\n . . . . .\r\n . . . . .\r\n `)\r\n})\r\n",
"README.md": ""
}
},
"tsprj": {
"id": "tsprj",
"config": {
"name": "{0} bit",
"dependencies": {
"core": "*",
"radio": "*"
},
"description": "",
"files": [
"main.ts",
"README.md"
]
},
"files": {
"main.ts": "basic.showLeds(`\r\n . . . . .\r\n . # . # .\r\n . . . . .\r\n # . . . #\r\n . # # # .\r\n `);",
"README.md": ""
}
},
"compile": {
"isNative": false,
"hasHex": true,

View File

@ -12,9 +12,11 @@ namespace pxsim {
lightSensorState: LightSensorState;
buttonPairState: ButtonPairState;
radioState: RadioState;
// TODO: not singletons
neopixelState: NeoPixelState;
rgbLedState: number;
speakerState: SpeakerState;
microServoState: MicroServoState;
constructor() {
super()
@ -61,14 +63,17 @@ namespace pxsim {
this.builtinParts["compass"] = this.compassState = new CompassState();
this.builtinParts["neopixel"] = this.neopixelState = new NeoPixelState();
this.builtinParts["speaker"] = this.speakerState = new SpeakerState();
this.builtinParts["microservo"] = this.microServoState = new MicroServoState();
this.builtinVisuals["buttonpair"] = () => new visuals.ButtonPairView();
this.builtinVisuals["ledmatrix"] = () => new visuals.LedMatrixView();
this.builtinVisuals["neopixel"] = () => new visuals.NeoPixelView();
this.builtinVisuals["microservo"] = () => new visuals.MicroServoView();
this.builtinPartVisuals["buttonpair"] = (xy: visuals.Coord) => visuals.mkBtnSvg(xy);
this.builtinPartVisuals["ledmatrix"] = (xy: visuals.Coord) => visuals.mkLedMatrixSvg(xy, 8, 8);
this.builtinPartVisuals["neopixel"] = (xy: visuals.Coord) => visuals.mkNeoPixelPart(xy);
this.builtinPartVisuals["microservo"] = (xy: visuals.Coord) => visuals.mkMicroServoPart(xy);
}
receiveMessage(msg: SimulatorMessage) {

View File

@ -11,7 +11,7 @@ namespace pxsim.input {
if (!pin) return;
pin.isTouched();
pxtcore.registerWithDal(pin.id, DAL.MICROBIT_BUTTON_EVT_UP, handler);
}
}
export function pinIsPressed(pinId: number): boolean {
let pin = getPin(pinId);
@ -73,7 +73,11 @@ namespace pxsim.pins {
export function servoWritePin(pinId: number, value: number) {
analogSetPeriod(pinId, 20000);
// TODO
// TODO: per pin state
if (board().microServoState.angle != value) {
board().microServoState.angle = value;
runtime.queueDisplayUpdate();
}
}
export function servoSetPulse(pinId: number, micros: number) {

View File

@ -9,6 +9,7 @@ namespace pxsim {
brigthness = 255;
displayMode = DisplayMode.bw;
font: Image = createFont();
disabled: boolean;
animationQ: AnimationQueue;
@ -284,4 +285,8 @@ namespace pxsim.led {
board().ledMatrixState.image.copyTo(0, 5, img, 0);
return img;
}
export function enable(on: boolean) {
board().ledMatrixState.disabled = !on;
runtime.queueDisplayUpdate();
}
}

View File

@ -138,21 +138,13 @@ namespace pxsim.radio {
}
export function writeValueToSerial(): void {
let b = board();
let p = b.radioState.bus.datagram.recv();
const b = board();
writePacketToSerial(b, b.radioState.bus.datagram.recv())
}
switch(p.payload.type) {
case PacketPayloadType.NUMBER:
b.writeSerial(`{"t":${p.time},"s":${p.serial},"v":${p.payload.numberData}}`)
break;
case PacketPayloadType.VALUE:
b.writeSerial(`{"t":${p.time},"s":${p.serial},"n":"${p.payload.stringData}","v":${p.payload.numberData}}`)
break;
case PacketPayloadType.STRING:
b.writeSerial(`{"t":${p.time},"s":${p.serial},"n":"${p.payload.stringData}"}`)
break;
default:
}
export function writeReceivedPacketToSerial(): void {
const b = board();
writePacketToSerial(b, b.radioState.bus.datagram.lastReceived);
}
export function sendValue(name: string, value: number) {
@ -200,4 +192,19 @@ namespace pxsim.radio {
export function receivedTime(): number {
return board().radioState.bus.datagram.lastReceived.time;
}
function writePacketToSerial(b: DalBoard, p: PacketBuffer) {
switch(p.payload.type) {
case PacketPayloadType.NUMBER:
b.writeSerial(`{"t":${p.time},"s":${p.serial},"v":${p.payload.numberData}}\r\n`)
break;
case PacketPayloadType.VALUE:
b.writeSerial(`{"t":${p.time},"s":${p.serial},"n":"${p.payload.stringData}","v":${p.payload.numberData}}\r\n`)
break;
case PacketPayloadType.STRING:
b.writeSerial(`{"t":${p.time},"s":${p.serial},"n":"${p.payload.stringData}"}\r\n`)
break;
default:
}
}
}

View File

@ -3,9 +3,9 @@
namespace pxsim.visuals {
export function mkLedMatrixSvg(xy: Coord, rows: number, cols: number):
{el: SVGGElement, y: number, x: number, w: number, h: number, leds: SVGElement[], ledsOuter: SVGElement[], background: SVGElement} {
let result: {el: SVGGElement, y: number, x: number, w: number, h: number, leds: SVGElement[], ledsOuter: SVGElement[], background: SVGElement}
= {el: null, y: 0, x: 0, w: 0, h: 0, leds: [], ledsOuter: [], background: null};
{ el: SVGGElement, y: number, x: number, w: number, h: number, leds: SVGElement[], ledsOuter: SVGElement[], background: SVGElement } {
let result: { el: SVGGElement, y: number, x: number, w: number, h: number, leds: SVGElement[], ledsOuter: SVGElement[], background: SVGElement }
= { el: null, y: 0, x: 0, w: 0, h: 0, leds: [], ledsOuter: [], background: null };
result.el = <SVGGElement>svg.elt("g");
let width = cols * PIN_DIST;
let height = rows * PIN_DIST;
@ -19,7 +19,7 @@ namespace pxsim.visuals {
result.y = top;
result.w = width;
result.h = height;
result.background = svg.child(result.el, "rect", {class: "sim-display", x: left, y: top, width: width, height: height})
result.background = svg.child(result.el, "rect", { class: "sim-display", x: left, y: top, width: width, height: height })
// ledsOuter
result.leds = [];
@ -101,8 +101,16 @@ namespace pxsim.visuals {
}
public updateState() {
let bw = this.state.displayMode == pxsim.DisplayMode.bw
let img = this.state.image;
if (this.state.disabled) {
this.leds.forEach((led, i) => {
let sel = (<SVGStylable><any>led)
sel.style.opacity = 0 + "";
});
return;
}
const bw = this.state.displayMode == pxsim.DisplayMode.bw
const img = this.state.image;
this.leds.forEach((led, i) => {
let sel = (<SVGStylable><any>led)
let dx = i % this.DRAW_SIZE;

View File

@ -1335,12 +1335,19 @@ namespace pxsim.visuals {
svg.fill(this.buttons[index], btn.pressed ? (btn.virtual ? theme.virtualButtonDown : theme.buttonDown) : (btn.virtual ? theme.virtualButtonUp : theme.buttonUps[index]));
});
let bw = state.ledMatrixState.displayMode == pxsim.DisplayMode.bw
let img = state.ledMatrixState.image;
this.leds.forEach((led, i) => {
let sel = (<SVGStylable><any>led)
sel.style.opacity = ((bw ? img.data[i] > 0 ? 255 : 0 : img.data[i]) / 255.0) + "";
})
if (state.ledMatrixState.disabled) {
this.leds.forEach((led, i) => {
const sel = (<SVGStylable><any>led)
sel.style.opacity = "0";
})
} else {
const bw = state.ledMatrixState.displayMode == pxsim.DisplayMode.bw
const img = state.ledMatrixState.image;
this.leds.forEach((led, i) => {
const sel = (<SVGStylable><any>led)
sel.style.opacity = ((bw ? img.data[i] > 0 ? 255 : 0 : img.data[i]) / 255.0) + "";
})
}
this.updatePins();
this.updateTilt();
this.updateHeading();

9
tests/deprecated-apis.ts Normal file
View File

@ -0,0 +1,9 @@
// deprecated APIs
radio.receivedNumber();
radio.receivedSerial();
radio.receivedSignalStrength();
radio.receivedString();
radio.receivedTime();
radio.onDataReceived(() => {
});

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -10,4 +10,4 @@
*******************************/
@mainMenuHeight: 5rem;
@mainMenuMinHeight: (@itemVerticalPadding * 2) + 2em;
@mainMenuMinHeight: (@itemVerticalPadding * 2) + 2em;

View File

@ -12,4 +12,4 @@
.rtl .ui.inverted.input input {
padding-right: 0.6em !important;
}
}

View File

@ -36,3 +36,4 @@
*******************************/
@blocklyToolboxColor: #F6F4E6;

View File

@ -7,6 +7,9 @@
/* Reference import */
@import (reference) "semantic.less";
/*******************************
Add your custom CSS here
*******************************/
.openproject {
background: #4ECC60 !important;
}

View File

@ -91,4 +91,5 @@
@fontPath : 'fonts';
/* End Config */