Don't like ads? PRO users don't see any ads ;-)
Guest

Untitled

By: a guest on Apr 24th, 2012  |  syntax: C++  |  size: 6.08 KB  |  hits: 26  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. #include "NXT++.h"
  2. #include <iostream>
  3. #include <conio.h>
  4. using namespace std;
  5. using namespace NXT;
  6.  
  7. void BackUp();
  8.  
  9. Comm::NXTComm comm;
  10.  
  11. int main()
  12. {
  13.         int los_skret=0;
  14.         srand(time(NULL));
  15.  
  16.         srand(NULL);
  17.         cout << "Aquiring signal... this should take a minute or so.\n";
  18.         if(NXT::OpenBT(&comm)) //initialize the NXT and continue if it succeeds
  19.         {
  20.                 cout<< "Signal found!";
  21.                 cout<<"\nBattery Level = "<<NXT::BatteryLevel(&comm);
  22.                 cout<<"\nAvailable Flash Memory = "<<NXT::GetAvailableFlash(&comm);
  23.                
  24.                 int x=30;//szybkość jazdy w przód i tył
  25.                 int xtemp=30;
  26.                 int kierunek=1;//na przod 1, do tylu 0;
  27.  
  28.                 int prog=49;
  29.  
  30.                 int y=20;//szybkość zakrecania w lewo prawo
  31.                 int ytemp=20;
  32.  
  33.                 int szybkosc=30;
  34.  
  35.                 int pointer=0;
  36.  
  37.                 char last_value;//zapamietana ostatnia wartosc klawisza
  38.  
  39.                 NXT::Sensor::SetTouch(&comm, IN_1);
  40.  
  41.                 NXT::StartProgram(&comm,"program1");
  42.  
  43.                 int iter=0;
  44.  
  45.                 //sterowanie
  46.                 char decyzja;
  47.                 char decyzja2;
  48.  
  49.                 for(int ii=1;ii>0;ii++)
  50.                 {
  51.  
  52.                    if(NXT::Sensor::GetValue(&comm, IN_1)==1)
  53.                     {
  54.                         for(int i=1;i<1000;i=i+10)
  55.                          {
  56.                          NXT::PlayTone(&comm, i, 1);
  57.                          Wait(1);
  58.                          }
  59.                    }
  60.  
  61.                  if(kbhit()==true)
  62.          {
  63.                     cout<<"\n Mam jechac w lewo A w prawo D, na wprost W, czy do tylu S?";
  64.                         cout<<"\n Zatrzymanie - H, Koniec Programu - K";
  65.                         cout<<"\n Przyspiesz - P, Zwolnij - P";
  66.             decyzja=getch();
  67.        
  68.                   if(decyzja=='N' || decyzja=='n')
  69.                   {
  70.           x-=10;
  71.                   }
  72.  
  73.                   if(decyzja=='M' || decyzja=='m')
  74.                   {
  75.           x+=10;
  76.                   }
  77.  
  78.                   if(decyzja=='V' || decyzja=='v')
  79.                   {
  80.           y--;
  81.                   }
  82.  
  83.                   if(decyzja=='B' || decyzja=='b')
  84.                   {
  85.           y++;
  86.                   }
  87.  
  88.                         if(decyzja=='A' || decyzja=='a' || (ytemp!=y && last_value=='a'))
  89.                   {
  90.  
  91.                    ytemp=y;
  92.                    last_value='a';
  93.                    NXT::Motor::SetForward(&comm, OUT_B, y);
  94.                    NXT::Motor::SetForward(&comm, OUT_C, 0);
  95.                    //cout<<"SonarValue = "<<NXT::Sensor::GetSonarValue(&comm, IN_4);
  96.                   }
  97.  
  98.                  if(decyzja=='D' || decyzja=='d' || (ytemp!=y && last_value=='d'))
  99.                   {
  100.                    ytemp=y;
  101.                    last_value='d';
  102.                    NXT::Motor::SetForward(&comm, OUT_B, 0);
  103.                    NXT::Motor::SetForward(&comm, OUT_C, y);
  104.                   }
  105.  
  106.                  if(decyzja=='W' || decyzja=='w' || (xtemp!=x && last_value=='w'))
  107.                   {
  108.                    xtemp=x;
  109.                    last_value='w';
  110.                    NXT::Motor::SetForward(&comm, OUT_B, x);
  111.                    NXT::Motor::SetForward(&comm, OUT_C, x);
  112.                   }
  113.  
  114.                   if(decyzja=='S' || decyzja=='s'  || (xtemp!=x && last_value=='s'))
  115.                   {
  116.                    xtemp=x;
  117.                    last_value='s';
  118.                    NXT::Motor::SetReverse(&comm, OUT_B, x);
  119.                    NXT::Motor::SetReverse(&comm, OUT_C, x);
  120.                   }
  121.  
  122.                   if(decyzja=='H' || decyzja=='h')
  123.                   {
  124.                    NXT::Motor::SetForward(&comm, OUT_B, 0);
  125.                    NXT::Motor::SetForward(&comm, OUT_C, 0);
  126.                    NXT::Motor::Stop(&comm, OUT_B, 0);
  127.                    NXT::Motor::Stop(&comm, OUT_C, 0);
  128.                   }
  129.  
  130.                   if(decyzja=='K' || decyzja=='k')
  131.                   {
  132.                         NXT::Motor::Stop(&comm, OUT_B, 0);
  133.                     NXT::Motor::Stop(&comm, OUT_C, 0);
  134.                         NXT::Motor::Stop(&comm, OUT_A, 0);
  135.                         NXT::Sensor::SetSonarOff(&comm, IN_4);
  136.                         break;
  137.                   }
  138.  
  139.                 if(decyzja=='U' || decyzja=='u')
  140.                   {
  141.                    NXT::Sensor::SetSonar(&comm, IN_4);
  142.                    cout<<"SonarValue = "<<NXT::Sensor::GetSonarValue(&comm, IN_4);
  143.                    NXT::Sensor::SetSonarOff(&comm, IN_4);
  144.                   }
  145.  
  146.                  if(decyzja=='L' || decyzja=='l')
  147.                   {
  148.                    NXT::Sensor::SetLight(&comm, IN_3, 1);
  149.                    Wait(50);
  150.                    cout<<"LightValue = "<<NXT::Sensor::GetValue(&comm, IN_3);
  151.                    Wait(50);
  152.                    NXT::Sensor::SetLight(&comm, IN_3, 0);
  153.                   }
  154.  
  155.                  if(decyzja=='O' || decyzja=='o')
  156.                   {
  157.                    NXT::Sensor::SetSound(&comm, IN_2);
  158.                    Wait(50);
  159.                    cout<<"SoundValue = "<<NXT::Sensor::GetValue(&comm, IN_2);
  160.                   }
  161.                  if (decyzja=='T' || decyzja=='t') {
  162.  
  163.  
  164. if(decyzja=='Q' || decyzja=='q')
  165.  
  166. /*bool flag = true;
  167. bool find = true;
  168. bool inner = true;
  169. char c;*/
  170.  
  171. /*int bright;
  172. int dark;
  173. int mean;*/
  174.  
  175. /*NXT::Motor::SetForward(&comm, OUT_B, 20);
  176. NXT::Motor::SetForward(&comm, OUT_C, 20);
  177. NXT::Sensor::SetLight(&comm, IN_3, 1);
  178. Wait(50);*/
  179.  
  180.  
  181. while (true)
  182. {
  183. int sonar = 0;
  184.  
  185. NXT::Sensor::SetSonar(&comm, IN_4);
  186. Wait (50);
  187. sonar = NXT::Sensor::GetSonarValue(&comm, IN_4);
  188. Wait(50);
  189. NXT::Sensor::SetSonarOff(&comm, IN_4);
  190. if (sonar < 50 || sonar > 0)
  191. {
  192.         do
  193.         {
  194.                 NXT::Motor::Stop(&comm, OUT_B, 0);
  195.                 NXT::Motor::Stop(&comm, OUT_C, 0);
  196.                 NXT::Motor::SetForward(&comm, OUT_A, 10);
  197.                 Wait(1000);
  198.                 NXT::Motor::Stop(&comm, OUT_A, 0);
  199.                 NXT::Motor::SetForward(&comm, OUT_B, 10);
  200.                 NXT::Motor::SetForward(&comm, OUT_C, 10);
  201.  
  202.  
  203.  
  204.  
  205.  
  206. bright = NXT::Sensor::GetValue(&comm, IN_3);
  207.  
  208. while (flag == true) {
  209. Wait(50);
  210.  
  211. if (NXT::Sensor::GetValue(&comm, IN_3) < 50) {
  212. NXT::Motor::SetForward(&comm, OUT_B, 0);
  213. NXT::Motor::SetForward(&comm, OUT_C, 0);
  214.  
  215. dark = NXT::Sensor::GetValue(&comm, IN_3);
  216. mean = (bright + dark)/2;
  217.  
  218. flag = false;
  219. }
  220. }
  221.  
  222. while (true) {
  223. if (NXT::Sensor::GetValue(&comm, IN_3) < mean) {
  224. NXT::Motor::SetForward(&comm, OUT_B, 1);
  225. NXT::Motor::SetForward(&comm, OUT_C, 10);
  226. }
  227. else {
  228. NXT::Motor::SetForward(&comm, OUT_B, 10);
  229. NXT::Motor::SetForward(&comm, OUT_C, 1);
  230. }
  231.  
  232. if(kbhit()==true) {
  233. c=getch();
  234. }
  235.  
  236. if (c == 'k') {
  237. NXT::Sensor::SetLight(&comm, IN_3, 0);
  238. NXT::Motor::SetForward(&comm, OUT_B, 0);
  239. NXT::Motor::SetForward(&comm, OUT_C, 0);
  240. break;
  241. }
  242. }
  243.  
  244. if(kbhit()==true) {
  245. c=getch();
  246. }
  247.  
  248. if (c == 'k') {
  249. NXT::Sensor::SetLight(&comm, IN_3, 0);
  250. NXT::Motor::SetForward(&comm, OUT_B, 0);
  251. NXT::Motor::SetForward(&comm, OUT_C, 0);
  252. break;
  253. }
  254.  
  255. break;
  256. }
  257.  
  258.                   if(decyzja=='C' || decyzja=='c')
  259.                   {
  260.                     last_value='w';
  261.                     if(pointer==0)
  262.                      {
  263.                       NXT::Motor::SetForward(&comm, OUT_A, 10);
  264.                       Wait(1000);
  265.                           NXT::Motor::Stop(&comm, OUT_A, 0);
  266.                           pointer=1;
  267.                           continue;
  268.                      }
  269.                     if(pointer==1)
  270.                      {
  271.                       NXT::Motor::SetForward(&comm, OUT_A, -20);
  272.                       Wait(1000);
  273.                           //NXT::Motor::SetForward(&comm, OUT_A, 0);
  274.                           //NXT::Motor::Stop(&comm, OUT_A, 0);
  275.                           pointer=0;
  276.                           continue;
  277.                      }
  278.                    }
  279.  
  280.             continue;
  281.                  }
  282.                 }
  283.  
  284.                 NXT::StopProgram(&comm);
  285.         }
  286.         NXT::Close(&comm); //close the NXT
  287.                 cout<<"\n\nNacisnij ENTER aby zakonczyc Program";
  288.                 getchar();
  289.         return 0;
  290. }