Yamian

robot.ino (Arduino R3)

Aug 17th, 2019
311
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.60 KB | None | 0 0
  1. #include <Servo.h>
  2. Servo myservo;
  3. int pos=0;
  4. const int trig=10;
  5. const int echo=9;
  6. int tien1=7;
  7. int tien2=5;
  8. int lui1=6;
  9. int lui2=4;
  10. void dithang();
  11. void disangtrai(int goc);
  12. void disangphai(int goc);
  13. void diluitrai(int goc);
  14. void diluiphai(int goc);
  15. void dilui();
  16. void diquaydau();
  17. void dunglai();
  18. int dokhoangcach();
  19. void setup()
  20. {
  21.     myservo.attach(3);
  22.     pinMode(trig,OUTPUT);
  23.     pinMode(echo,INPUT);
  24.     pinMode(tien1,OUTPUT);
  25.     pinMode(tien2,OUTPUT);
  26.     pinMode(lui1,OUTPUT);
  27.     pinMode(lui2,OUTPUT);
  28.     digitalWrite(tien1,LOW);
  29.     digitalWrite(tien2,LOW);
  30.     digitalWrite(lui1,LOW);
  31.     digitalWrite(lui2,LOW);
  32.     myservo.write(90);
  33.     delay(1000);
  34.     int kcmaxt=0,kcmidt=0;
  35.     while(1)
  36.     {
  37.         int khoangcach,gd,i,gdmax=0,gdmid=0,gdmin=0,kcmax=0,kc810[21],kc90=500;
  38.         for(gd=90;gd>=15;gd--)
  39.         {
  40.             myservo.write(gd);
  41.             delay(10);
  42.         }
  43.         for(gd=15;gd<=165;gd++)
  44.         {
  45.             myservo.write(gd);
  46.             delay(10);
  47.             khoangcach=dokhoangcach();
  48.             if(khoangcach<10)
  49.                 gdmin=gd;
  50.             else
  51.             {
  52.                 if(khoangcach<30)
  53.                     gdmid=gd;
  54.                 else
  55.                 {
  56.                     if(khoangcach>kcmax)
  57.                     {
  58.                         kcmax=khoangcach;
  59.                         gdmax=gd;
  60.                     }
  61.                 }
  62.             }
  63.             if(gd>=80&&gd<=100)
  64.             {
  65.                 kc810[gd-80]=dokhoangcach();
  66.                 if(kc810[gd-80]==0)
  67.                     kc810[gd-80]=500;
  68.                 else
  69.                 {
  70.                     if(kc810[gd-80]<kc90)
  71.                         kc90=kc810[gd-80];
  72.                 }
  73.             }
  74.         }
  75.         for(gd=165;gd>=90;gd--)
  76.         {
  77.             myservo.write(gd);
  78.             delay(10);
  79.         }
  80.         while(kc90>50&&gdmid<15&&gdmin<15)
  81.         {
  82.             if(kc90==kcmidt)
  83.                 dilui();
  84.             else
  85.             {
  86.                 dithang();
  87.                 kc90=dokhoangcach();
  88.             }
  89.         }
  90.         dunglai();
  91.         if(gdmin==0)
  92.         {
  93.             if(gdmid==0)
  94.             {
  95.                 if(gdmax<80)
  96.                     disangphai(gdmax);
  97.                 else
  98.                     disangtrai(gdmax);
  99.             }
  100.             else
  101.             {
  102.                 if(gdmid<80)
  103.                 {
  104.                     if(gdmax<80)
  105.                         diquaydau();
  106.                     else
  107.                         disangtrai(gdmax);
  108.                 }
  109.                 else
  110.                 {
  111.                     if(gdmid>100)
  112.                     {
  113.                         if(gdmax<80)
  114.                             disangphai(gdmax);
  115.                         else
  116.                             diquaydau();
  117.                     }
  118.                     else
  119.                     {
  120.                         if(gdmax<80)
  121.                             disangphai(gdmax);
  122.                         else
  123.                         {
  124.                             if(gdmax>100)
  125.                                 disangtrai(gdmax);
  126.                             else
  127.                                 diquaydau();
  128.                         }
  129.                     }
  130.                 }
  131.             }
  132.         }
  133.         else
  134.         {
  135.             if(gdmin<80)
  136.                 diluiphai(gdmin);
  137.             else
  138.             {
  139.                 if(gdmin>100)
  140.                     diluitrai(gdmin);
  141.                 else
  142.                     dilui();
  143.             }
  144.         }
  145.         i=kcmax/10;
  146.         if(i==kcmaxt)
  147.             dilui();
  148.         else
  149.             kcmaxt=i;
  150.     }
  151. }
  152. void loop()
  153. {
  154. }
  155. void dithang()
  156. {
  157.     digitalWrite(tien1,HIGH);
  158.     digitalWrite(tien2,HIGH);
  159.     analogWrite(tien2,230);
  160. }
  161. void disangtrai(int goc)
  162. {
  163.     int temp=abs(goc-90)*3;
  164.     digitalWrite(tien2,HIGH);
  165.     delay(temp);
  166.     digitalWrite(tien2,LOW);
  167. }
  168. void disangphai(int goc)
  169. {
  170.     int temp=abs(goc-90)*3;
  171.     digitalWrite(tien1,HIGH);
  172.     delay(temp);
  173.     digitalWrite(tien1,LOW);
  174. }
  175. void diluitrai(int goc)
  176. {
  177.     int temp=abs(goc-90)*5;
  178.     digitalWrite(lui1,HIGH);
  179.     delay(temp);
  180.     digitalWrite(lui1,LOW);
  181. }
  182. void diluiphai(int goc)
  183. {
  184.     int temp=abs(goc-90)*5;
  185.     digitalWrite(lui2,HIGH);
  186.     delay(temp);
  187.     digitalWrite(lui2,LOW);
  188. }
  189. void dilui()
  190. {
  191.     digitalWrite(lui1,HIGH);
  192.     digitalWrite(lui2,HIGH);
  193.     delay(500);
  194.     digitalWrite(lui1,LOW);
  195.     digitalWrite(lui2,LOW);
  196. }
  197. void diquaydau()
  198. {
  199.     digitalWrite(tien1,HIGH);
  200.     digitalWrite(lui2,HIGH);
  201.     delay(300);
  202.     digitalWrite(tien1,LOW);
  203.     digitalWrite(lui2,LOW);
  204. }
  205. void dunglai()
  206. {
  207.     digitalWrite(tien1,LOW);
  208.     digitalWrite(tien2,LOW);
  209.     digitalWrite(lui1,LOW);
  210.     digitalWrite(lui2,LOW);
  211. }
  212. int dokhoangcach()
  213. {
  214.     long tg;
  215.     int kc;
  216.     digitalWrite(trig,LOW);
  217.     delayMicroseconds(2);
  218.     digitalWrite(trig,HIGH);
  219.     delayMicroseconds(10);
  220.     digitalWrite(trig,LOW);
  221.     tg=pulseIn(echo,HIGH,3600000);
  222.     kc=int(tg/2/29.412);
  223.     return kc;
  224. }
Add Comment
Please, Sign In to add comment