#include "NXT++.h"
#include <iostream>
#include <conio.h>
using namespace std;
using namespace NXT;
void BackUp();
Comm::NXTComm comm;
int main()
{
int los_skret=0;
srand(time(NULL));
srand(NULL);
cout << "Aquiring signal... this should take a minute or so.\n";
if(NXT::OpenBT(&comm)) //initialize the NXT and continue if it succeeds
{
cout<< "Signal found!";
cout<<"\nBattery Level = "<<NXT::BatteryLevel(&comm);
cout<<"\nAvailable Flash Memory = "<<NXT::GetAvailableFlash(&comm);
int x=30;//szybkość jazdy w przód i tył
int xtemp=30;
int kierunek=1;//na przod 1, do tylu 0;
int prog=49;
int y=20;//szybkość zakrecania w lewo prawo
int ytemp=20;
int szybkosc=30;
int pointer=0;
char last_value;//zapamietana ostatnia wartosc klawisza
NXT::Sensor::SetTouch(&comm, IN_1);
NXT::StartProgram(&comm,"program1");
int iter=0;
//sterowanie
char decyzja;
char decyzja2;
for(int ii=1;ii>0;ii++)
{
if(NXT::Sensor::GetValue(&comm, IN_1)==1)
{
for(int i=1;i<1000;i=i+10)
{
NXT::PlayTone(&comm, i, 1);
Wait(1);
}
}
if(kbhit()==true)
{
cout<<"\n Mam jechac w lewo A w prawo D, na wprost W, czy do tylu S?";
cout<<"\n Zatrzymanie - H, Koniec Programu - K";
cout<<"\n Przyspiesz - P, Zwolnij - P";
decyzja=getch();
if(decyzja=='N' || decyzja=='n')
{
x-=10;
}
if(decyzja=='M' || decyzja=='m')
{
x+=10;
}
if(decyzja=='V' || decyzja=='v')
{
y--;
}
if(decyzja=='B' || decyzja=='b')
{
y++;
}
if(decyzja=='A' || decyzja=='a' || (ytemp!=y && last_value=='a'))
{
ytemp=y;
last_value='a';
NXT::Motor::SetForward(&comm, OUT_B, y);
NXT::Motor::SetForward(&comm, OUT_C, 0);
//cout<<"SonarValue = "<<NXT::Sensor::GetSonarValue(&comm, IN_4);
}
if(decyzja=='D' || decyzja=='d' || (ytemp!=y && last_value=='d'))
{
ytemp=y;
last_value='d';
NXT::Motor::SetForward(&comm, OUT_B, 0);
NXT::Motor::SetForward(&comm, OUT_C, y);
}
if(decyzja=='W' || decyzja=='w' || (xtemp!=x && last_value=='w'))
{
xtemp=x;
last_value='w';
NXT::Motor::SetForward(&comm, OUT_B, x);
NXT::Motor::SetForward(&comm, OUT_C, x);
}
if(decyzja=='S' || decyzja=='s' || (xtemp!=x && last_value=='s'))
{
xtemp=x;
last_value='s';
NXT::Motor::SetReverse(&comm, OUT_B, x);
NXT::Motor::SetReverse(&comm, OUT_C, x);
}
if(decyzja=='H' || decyzja=='h')
{
NXT::Motor::SetForward(&comm, OUT_B, 0);
NXT::Motor::SetForward(&comm, OUT_C, 0);
NXT::Motor::Stop(&comm, OUT_B, 0);
NXT::Motor::Stop(&comm, OUT_C, 0);
}
if(decyzja=='K' || decyzja=='k')
{
NXT::Motor::Stop(&comm, OUT_B, 0);
NXT::Motor::Stop(&comm, OUT_C, 0);
NXT::Motor::Stop(&comm, OUT_A, 0);
NXT::Sensor::SetSonarOff(&comm, IN_4);
break;
}
if(decyzja=='U' || decyzja=='u')
{
NXT::Sensor::SetSonar(&comm, IN_4);
cout<<"SonarValue = "<<NXT::Sensor::GetSonarValue(&comm, IN_4);
NXT::Sensor::SetSonarOff(&comm, IN_4);
}
if(decyzja=='L' || decyzja=='l')
{
NXT::Sensor::SetLight(&comm, IN_3, 1);
Wait(50);
cout<<"LightValue = "<<NXT::Sensor::GetValue(&comm, IN_3);
Wait(50);
NXT::Sensor::SetLight(&comm, IN_3, 0);
}
if(decyzja=='O' || decyzja=='o')
{
NXT::Sensor::SetSound(&comm, IN_2);
Wait(50);
cout<<"SoundValue = "<<NXT::Sensor::GetValue(&comm, IN_2);
}
if (decyzja=='T' || decyzja=='t') {
if(decyzja=='Q' || decyzja=='q')
/*bool flag = true;
bool find = true;
bool inner = true;
char c;*/
/*int bright;
int dark;
int mean;*/
/*NXT::Motor::SetForward(&comm, OUT_B, 20);
NXT::Motor::SetForward(&comm, OUT_C, 20);
NXT::Sensor::SetLight(&comm, IN_3, 1);
Wait(50);*/
while (true)
{
int sonar = 0;
NXT::Sensor::SetSonar(&comm, IN_4);
Wait (50);
sonar = NXT::Sensor::GetSonarValue(&comm, IN_4);
Wait(50);
NXT::Sensor::SetSonarOff(&comm, IN_4);
if (sonar < 50 || sonar > 0)
{
do
{
NXT::Motor::Stop(&comm, OUT_B, 0);
NXT::Motor::Stop(&comm, OUT_C, 0);
NXT::Motor::SetForward(&comm, OUT_A, 10);
Wait(1000);
NXT::Motor::Stop(&comm, OUT_A, 0);
NXT::Motor::SetForward(&comm, OUT_B, 10);
NXT::Motor::SetForward(&comm, OUT_C, 10);
bright = NXT::Sensor::GetValue(&comm, IN_3);
while (flag == true) {
Wait(50);
if (NXT::Sensor::GetValue(&comm, IN_3) < 50) {
NXT::Motor::SetForward(&comm, OUT_B, 0);
NXT::Motor::SetForward(&comm, OUT_C, 0);
dark = NXT::Sensor::GetValue(&comm, IN_3);
mean = (bright + dark)/2;
flag = false;
}
}
while (true) {
if (NXT::Sensor::GetValue(&comm, IN_3) < mean) {
NXT::Motor::SetForward(&comm, OUT_B, 1);
NXT::Motor::SetForward(&comm, OUT_C, 10);
}
else {
NXT::Motor::SetForward(&comm, OUT_B, 10);
NXT::Motor::SetForward(&comm, OUT_C, 1);
}
if(kbhit()==true) {
c=getch();
}
if (c == 'k') {
NXT::Sensor::SetLight(&comm, IN_3, 0);
NXT::Motor::SetForward(&comm, OUT_B, 0);
NXT::Motor::SetForward(&comm, OUT_C, 0);
break;
}
}
if(kbhit()==true) {
c=getch();
}
if (c == 'k') {
NXT::Sensor::SetLight(&comm, IN_3, 0);
NXT::Motor::SetForward(&comm, OUT_B, 0);
NXT::Motor::SetForward(&comm, OUT_C, 0);
break;
}
break;
}
if(decyzja=='C' || decyzja=='c')
{
last_value='w';
if(pointer==0)
{
NXT::Motor::SetForward(&comm, OUT_A, 10);
Wait(1000);
NXT::Motor::Stop(&comm, OUT_A, 0);
pointer=1;
continue;
}
if(pointer==1)
{
NXT::Motor::SetForward(&comm, OUT_A, -20);
Wait(1000);
//NXT::Motor::SetForward(&comm, OUT_A, 0);
//NXT::Motor::Stop(&comm, OUT_A, 0);
pointer=0;
continue;
}
}
continue;
}
}
NXT::StopProgram(&comm);
}
NXT::Close(&comm); //close the NXT
cout<<"\n\nNacisnij ENTER aby zakonczyc Program";
getchar();
return 0;
}