
Bulgarian: 
Детектор на монети, част 2: ключ, базиран на логиката
Нека направим малко
по-сложна задача
с използване на
сензор за въртене.
Отново, приемаме, че към мотора е прикрепен
предавателен лост.
И искаме програмата ни,
ако лостът е в тази област –
ще я наречем Област А –
искаме да генерира
високочестотен звук.
И да сме в Област А означава,
че сме завъртели мотора така,
че този лост да сочи
някъде в тази област.
Иначе, ако е в Област В,
която е извън този отрязък –
настоящата позиция
е в Област В, всичко това е област В –
ще генерира
по-нискочестотен звук.
И, помни, в А ще генерираме
звук с по-висока честота.
 

Korean: 
 
회전 센서를 이용한
좀 더 어려운 문제를 다뤄보겠습니다
이 모터에 막대가 붙여져 있다고 가정하겠습니다
프로그래밍하고 싶은 것은
막대가 이 A 구역에 있을 때
높은 음의 소리를 내는 것입니다
또한 A 구역에 있다는 것은
막대가 이 구역으로 오도록 회전시켰단 것입니다
반면에 이 구역을 제외한
모든 구역을 B라 할 때
B 지역에 막대가 있으면
더 낮은 음의 소리를 낼 것입니다
A에 있으면 더 높은 음의 소리를
낸다는 걸 기억해주세요
낸다는 걸 기억해주세요

English: 
Let's do a slightly
more difficult problem
using the rotation sensor.
Again, assume we have a
beam attached to our motor.
And what we want
our program to do
is if the beam is inside this
region-- we'll call this Region
A-- we want to generate
a high-pitched sound.
And that being in Region A means
we have rotated the motor such
that this beam is pointing
somewhere in this region.
And otherwise, if it's
in the Region B, which
is anywhere outside
the slice-- so
where it currently
is is Region B--
this is all Region B-- will
generate a lower-pitched sound.
And remember, in A,
we're going to generate
a higher-pitched sound.

Bulgarian: 
Помни, моторът ни е екипиран
със сензор за въртене
и можем да решим тази задача
чрез контролиране на
израз за превключване
базиран на логиката.
Логиката е "езикът"
на "вярно" и "грешно".
Тя е "езикът"
на роботиката.
Ако поставим този въпрос
на езика на логиката,
просто ще трябва да сме
малко по-специфични.
Помни, х може да приеме стойност
от 0 до 360.
И да кажем, че сме направили някои тестове
чрез проверяване на стойността на сензора
и сме казали,
че това е позиция 0.
И сме осъзнали,
че това тук е 100 градуса,
а това тук
е 200 градуса.
Сега въпросът ни е,
ако мислим като робот –
и, да, това изобщо
не е в мащаб –
дали х – което е настоящото разчитане
в градуси на сензора на въртене –
някъде в тази област.

Korean: 
또한 모터가 회전 센서가 달렸단 걸 기억해주세요
그러므로 논리를 바탕으로 한
스위치문을 조정해서 문제를 해결할 수 있습니다
논리는 참과 거짓의 언어입니다
로봇 공학의 언어이죠
이 문제를 논리의 관점으로 설정한다면
조금 더 구체적으로 봐야 합니다
x 값은 0에서 360입니다
센서를 당겨서 테스트를 해봤고
이 지점을 0으로 둔다 합시다
이 곳이 100º이고
이 곳이 200º였다 합시다
이제 로봇처럼 생각을 한다면
이제 로봇처럼 생각을 한다면
회전 센서에서 이 구역에 있고
현재 도 단위로 읽히는 x에 주목해야 합니다

English: 
Remember, our motor is equipped
with a rotation sensor,
and we can solve this problem
by controlling a switch
statement based on logic.
And now, logic is the
language of true and false.
It's the language of robotics.
If we pose this question
in terms of logic,
we just need to be a
little bit more specific.
So remember, x can take
a value from zero to 360.
And let's say we did some
tests by polling our sensor,
and we said this is
the zero position.
And we realized this
is 100 degrees here,
and over here is 200 degrees.
So now our question is, if
we're thinking like a robot--
and yeah, this is
not to scale at all--
is x, which is the
current reading in degrees
of our rotation sensor,
somewhere in this region?

Bulgarian: 
И това тук на тази малка числова ос
е Област А,
а В е всичко останало.
И можем да отговорим на този въпрос
с "вярно" или "грешно", с "да" или "не".
Ако е в А, ще кажем "да" – "да" или "вярно",
ако използваме логиката.
И ако не е в А, ще кажем "не,
не е в А. Грешно."
И крайната стъпка е
да направим нещо
с това условие вярно-грешно,
като да генерираме –
ако е вярно ще генерираме
високочестотен звук,
а ако е грешно ще генерираме
нискочестотен звук.
Нека построим това.
Първо потребителят нулира
ротационното разчитане,
чрез използване на
оранжевия бутон на тухлата.
И правим това като слагаме
блок на тежестта,
който е под поток (Flow),
към лъча си.
И освен блока на тежестта
ще добавя
сензора за въртене.
Нека първо разгледаме
блока на тежестта.
Кликваме на него и виждаме,
че е поставен

English: 
And this is Region A here
on this little number line,
and B is anywhere else.
And we can answer this question
with true or false, yes or no.
If it's in A, we say yes-- yes
or true, in terms of logic.
If it's not in A, we say
no, it's not in A. False.
And now the final step
is to do something
with this true-false condition,
such as generate, if it's true,
we'll generate our high-pitched
sound, and if it's false,
we'll generate our
low-pitched sound.
So let's go ahead
and build this.
We first have the user
zero, the rotation reading,
using the orange
button on the brick.
And the way we do this is to
drop a weight block, which
is under Flow, onto our beam.
And beside the weight
block, I'm going
to drop the rotation sensor.
Now first, look at
the weight block.
Click on it and
see that it is set

Korean: 
작은 수직선에 있는 이곳이 A 구역이고
나머지가 B 구역입니다
그리고 참과 거짓, 예와 아니오로 대답할 수 있습니다
A 구역에 있다면 논리에서 예 혹은 참이라 합시다
B 구역에 있다면 아니오 혹은 거짓이라 합시다
마지막 단계는
이 참-거짓 조건문을 이용하여
참이라면 높은 음을 내고
거짓이라면 낮은 음을 내는 것입니다
프로그램으로 가서 문제 상황을 만들어 보겠습니다
우선 옆의 주황색 버튼에서
회전하는 정도를 읽는 0번 사용자가 있습니다
이 논리의 흐름에 맞게
기다림 블럭을 두겠습니다
기다림 블럭 옆에는
회전 센서를 두겠습니다
기다림 블럭을 보겠습니다
클릭하면 터치 센서가 눌러지기를

English: 
to wait for the touch
sensor to be pressed.
But we want to switch
that to NXT button.
So now what's happening is
it's set to the Enter button.
Our program will begin,
and it will halt here
until the user
presses the button.
Then, it will jump ahead.
So what that will
allow us to do is
have the user press the button
to zero the rotation reading.
And in this case, I'm going to
click on my rotation sensor.
I'm going to set it
to Port C. That's
where I plugged in my motor.
And under Action, instead
of reading from it,
we're just at the stage
where we want to zero it.
So I'm going to click on
the Reset radio button.
And that's it.
After that, I'm going to play
a sound so the user knows
that they have zeroed the motor,
and I think most appropriately
would be-- the robot says
zero, meaning it's ready.
Now, the heart of our program
will be done inside a loop.
First, our rotation sensor.

Korean: 
기다리도록 설정된 걸 볼 수 있습니다
그러나 NXT 버튼으로 바꾸겠습니다
엔터 버튼으로 설정됐고 어떻게 될지 보겠습니다
프로그램이 시작하면
버튼을 누르기 전까지 여기서 멈출 것입니다
버튼을 누르면 넘어갈 것입니다
그래서 저희가 할 수 있는 건
사용자가 버튼을 눌러 
회전 상태가 0이 되도록 하는 겁니다
회전 센서를 클릭해보죠
포트 C로 연결하겠습니다
모터를 연결했던 포트죠
작동을 하면 읽기보다는
영점으로 맞추려는 단계에 있습니다
그러니 리셋 버튼을 클릭하겠습니다
끝났습니다
다음으로는 사용자들이 모터를 0인 지점으로 했는지
확인하는 소리를 들려줄 것입니다
가장 적합한 것은 준비가 됐다는 '0' 기계음인 거 같습니다
이제 프로그램의 핵심은 반복문에서 이뤄질 겁니다
첫 번째는 회전 센서입니다

Bulgarian: 
да чака натискането на
тъч сензора.
Но искаме да променим това на
NXT бутон.
Сега е поставен на
Еnter бутон.
Програмата ни ще започне
и ще спре тук,
докато потребителят
не натисне бутона,
а после ще продължи напред.
Това ще ни позволи
потребителят да натисне бутона,
за да нулира
ротационното разчитане.
И в този случай ще натисна
на сензора си за въртене.
Ще го поставя към Порт С.
Там съм включил
мотора си.
И под Action (Действие),
вместо разчитане от него,
просто сме на етапа,
в който искаме да го нулираме.
Ще натисна Reset (нулирай) бутона.
И това е.
След това ще пусна звук,
така че потребителят да знае,
че моторът се е нулирал.
Мисля, че най-подходящо ще е
роботът да каже "нула",
което означава, че е готов.
Сърцевината на програмата ни ще е извършена
в един контур.
Първо ротационния ни сензор.

Bulgarian: 
Ще го вземем от входящите елементи
и ще го пуснем тук.
И го настройвам към Порт С,
в този случай го оставям на Read (разчитане),
понеже ще вземем
стойност от него.
Освен ротационния сензор
ще сложа и блок на диапазона,
който е под Flow (поток).
И можем да използваме
блока за сравнение,
ако проверяваме дали
е по-голямо от 100,
но проверяваме дали разчитането ни е
между 100 и 200,
така че блокът на диапазона е
най-лесният начин да направим това.
Натискам отново на
ротационния сензор.
Забележи, има два
изходящи елемента.
Изходящият елемент,
който ни интересува –
искаме да свържем разчитането
на градусите към
числовата входяща стойност
за диапазона.
И диапазонът ще провери
дали е в двете променливи, А и В, тук долу.
А е поставено на 25.

Korean: 
입력에서 시작해서 여기에 두겠습니다
포트 C로 연결하고
값을 얻어야 하므로 Read에 두겠습니다
회전 센서 옆에는
데이터 흐름에 있을 범위 블럭을 두겠습니다
비교 블럭을 이용해서
100보다 큰지 볼 수도 있지만
100과 200 사이를 봐야하므로
범위 블럭이 가장 간단할 것입니다
이제 회전센서를 클릭하면
두 출력 장치가 있습니다
저희가 볼 출력 장치는
입력의 범위를 도 단위로
연결할 겁니다
그리고 이 범위는
A와 B의 두 변수를 볼 것입니다
A가 25로 설정되어 있습니다

English: 
We grab that from our
input and drop it here.
I'm setting it to Port C, and in
this case, leaving it on Read,
because we're going to
grab a value from it.
Beside the rotation
sensor, I'm going
to drop our range block,
which is under Flow.
And we could use
the comparison block
if we were checking if
it's greater than 100,
but we're checking if the
reading is between 100 and 200,
so our range block is the
easiest way to do that.
Now, clicking back to
my rotation sensor,
notice it has two outputs.
The output we care
about here is we
want to wire the degree
reading into the number
input for range.
And what range will
do is check if it's
inside two variables,
A and B, down here.
And A is set to 25.

Korean: 
이제 100으로 바꾸고, B를 200으로 바꾸겠습니다
만약 100과 200 사이를 읽으면
범위 블럭은 예 혹은 아니오를 출력할 것입니다
이제 여기서 예 혹은 아니오와
참과 거짓의 논리가 작동할 겁니다.
이제 값으로 작동할 수 있게 되었습니다
스위치문을 가져오면
여기서는 출력을 기반으로 하는
스위치문을 조절할 수 있습니다
이제 이전처럼 센서에서 값을 읽는 대신
우선 터치 센서가 기반으로 된 스위치를
센서가 아닌 값을 기반으로 하도록 바꾸겠습니다
이제 값이 조절할 것이고
논리 전용이며 이 스위치문은
예와 아니오에 따라 위쪽과 아래쪽에서 실행할 겁니다
예-아니오 출력을
스위치문 바닥으로 연결하겠습니다
이제 이 체크표시는 예와 참을 의미하고

English: 
I'm changing it to 100,
and I'm changing B to 200.
So if the reading is
between 100 and 200,
the range block will
output yes or no.
And this is where
logic is coming in.
Yes or no, true or false.
We can now do something
with this value.
We grab our switch
statement, and here
is where we can control
a switch statement based
on this logical output.
So instead of reading from
a sensor as we've done--
and it's set here to switch
based on the touch sensor--
I'm going to change it to switch
based on a value, not a sensor.
So the control is a
value, and the type now
is logic, meaning this
switch statement needs a yes
or no to know whether to execute
on the top or bottom path.
So we take this yes-no
output and wire it
right into the bottom there
on the switch statement.
So now this checkmark
represents yes or true,

Bulgarian: 
Променям го на 100
и променям В на 200.
Ако разчитането е
между 100 и 200,
блокът на диапазона ще даде
изходящ отговор "да" или "не".
И тук идва логиката.
Да или не,
вярно или грешно.
Можем да направим нещо
с тази стойност.
Взимаме израза си за превключване
и тук можем да контролираме
един израз на превключване
въз основа на
тази логическа
изходяща информация.
Вместо да разчитаме от сензор,
както сме направили –
и е поставено тук да се превключи
въз основа на тъч сензор –
ще го променя на превключване
въз основа на стойност, а не на сензор.
Контролът е стойност
и видът сега е logic (логика),
което означава, че този израз
на превключване има нужда от "да" или "не",
за да знае дали да изпълни
горната или долната част.
Ще вземем тази изходяща
информация да-не
и ще я свържем към дъното тук,
на израза на превключване.
Тази отметка представлява
"да" или "вярно",

Korean: 
x 표시는 거짓과 아니오를 의미합니다
우린 소리를 만들고 싶으므로
참과 거짓 밑에 각각 소리 블럭을 둘 것입니다
여기서 일어나야 할 것은
프로그램을 진행할 때
모터가 그 범위 내에서 회전하면
프로그램은 여기서 작동할 것입니다
여기서 음을 만들고 만약 그 범위 밖에서 회전하면
거짓으로 뒤집혀서 이 블럭을 실행할 것입니다
이 경우엔 음을
더 낮게 내도록 하겠습니다
이게 전체 프로그램입니다
회전 센서가 어딘지에 따라
소리를 낼 것입니다
작동하는 것을 봅시다
 

Bulgarian: 
а това х представлява
"грешно" или "не".
И, помни, искам да генерирам
един тон,
така че ще поставя блок за тон
под "вярно" и под "грешно".
Тук трябва,
след като потребителят
пусне програмата,
ако завърти мотора
в този диапазон,
програмата ще е тук.
Ще генерира тон и ако сме завъртели
извън тази област,
трябва да преобърнем към "грешно"
и ще изпълним този блок.
И в този случай ще го променим
на тон
и ще генерираме
по-нисък тон.
Това е цялата ни програма сега.
Сега тя ще изведе тон
въз основа на това
в коя област е
ротационният сензор.
Да видим това
в действие.
 

English: 
and this x represents
false or no.
And remember, we want
to generate a tone,
so I'm going to put a tone block
under true and under false.
So what should be
happening here is,
once the user runs
the program, if they
rotate the motor
inside that range,
the program is
going to be in here.
So I'll generate a tone, and if
we rotated outside the region,
this should flip to false and
we will execute this block.
And in this case, I'm
going to change it to tone
and generate a lower tone.
So that's our whole program now.
This will now
output a tone based
on what region the
rotation sensor is in.
And let's see it in action.
[BEEPING]
